Судя по вашему последнему вопросу, похоже, что вы могли бы вместо этого использовать скрипт оболочки и просто поместить его в Automator.В этом случае будет работать следующий скрипт Bash:
#!/bin/bash
mkdir -p ~/Desktop/URLs
n=1
while read mp3; do
curl "$mp3" > ~/Desktop/URLs/$n.mp3
((n++))
done < ~/Desktop/URLs.txt
mkdir -p
создает папку (без ошибок, если она уже существует);n=1
устанавливает ваш счетчик для имен файлов.Затем while read mp3; do
перебирает каждую строку в файле, считывая каждую в переменную mp3;curl "$mp3" > ~/Desktop/URLs/$n.mp3
загружает файл по этому адресу и сохраняет его в нужном файле.Затем ((n++))
увеличивает n
на единицу;((..))
помечает математический режим, а ++
является оператором самоинкремента.Наконец, < ~/Desktop/URLs.txt
указывает циклу while делать вид, что его стандартный ввод (то, что он проверяет с помощью read
) происходит из этого файла.Я предполагаю, что это будет чище, чем использование AppleScript, так как сильные стороны AppleScript в основном направлены на взаимодействие с другими приложениями, о которых эта задача не предназначена.
Редактировать: Хотяэтот сценарий отлично работает из командной строки, Automator накладывает какое-то ограничение, которое заставляет его не заканчивать работу с большим количеством файлов.Я не смог найти никакого объяснения или способа обойти это в моем поиске в Google, поэтому я думаю, что лучше всего вместо этого использовать AppleScript. 1 Это длиннее, и я думаю, вы поймете, почему я использовалскрипт bash и раньше, но вот он:
property desktopPath : path to desktop as string
try
tell application "Finder" to ¬
make folder at (path to desktop) with properties {name:"URLs"}
on error number -48
-- The folder already exists
end try
set n to 1
repeat with urlLine in paragraphs of (read alias (desktopPath & "URLs.txt"))
set qURL to quoted form of urlLine
if qURL ≠ "''" then
set dest to quoted form of ¬
(POSIX path of desktopPath & "URLs/" & n & ".mp3")
do shell script "curl " & quoted form of urlLine & " > " & dest
set n to n + 1
end if
end repeat
Как видите, он громоздкий, но в основном тот же.Сначала мы устанавливаем desktopPath
в качестве пути к рабочему столу (удивительно), так как мы будем часто его использовать.Блок try
- on error
пытается создать каталог URLs
, игнорируя ошибку, если она уже существует.Затем мы инициализируем наш счетчик и читаем каждый абзац (то есть строку) в URLs.txt
(на рабочем столе).Затем мы цитируем URL, чтобы мы могли использовать его в оболочке (где блуждающий &
или ;
может иметь нежелательное значение), и проверяем, что на самом деле есть URL, а не пустые кавычки.(Это может произойти, например, если файл заканчивается новой строкой.) Затем мы используем curl
для загрузки файла и увеличиваем n
.Если вы думаете, что у вас будет много файлов, вы можете добавить строку say "Done!"
в конец скрипта, чтобы вы знали, когда это будет сделано.
Вы заметите, что я использовал do shell script
и curl
, чтобы загрузить этот файл, а не вызывать Safari.Всякий раз, когда я пишу сценарии AppleScripts, которым нужно загрузить файл, я предпочитаю использовать curl
по двум причинам.Во-первых, я могу загрузить файл напрямую, а не открывать его в Safari, а затем сохранять его (что также отражается на уродливом AppleScript, который я не уверен на 100%, как писать);Во-вторых, у вас может не открыться Safari, либо потому, что у вас нет открытых веб-страниц (маловероятно, по крайней мере, для меня :-)), либо потому, что вы не используете Safari в качестве браузера.Конечно, вы делаете сейчас , но вы никогда не знаете, когда вы можете изменить свое мнение. 2 Я также видел ссылку на то, что называется "Сценарии URL-доступа", но я не могускажите, если это все еще поддерживается или нет, и я никогда не использовал его.Поскольку я не могу найти упоминания об этом на веб-сайте Apple, я допустил ошибку в части документации и вместо этого выбрал curl
.
1: Один из способов сделать этоэто обернуть весь скрипт bash в do shell script
.Это сработало бы, но было бы глупо.Вы можете сделать это, если хотите, но: -)
2: Показательный пример: я использовал Safari начиная с Jaguar или Panther, и не видел, как я переключался - до этогов этом семестре, когда я переключился на Google Chrome в течение одной недели.