Applescript, чтобы прочитать список URL-адресов MP3 в .txt файле, а затем загрузить все переименования каждого файла в числовом порядке (1,2,3 ...) - PullRequest
1 голос
/ 10 декабря 2010

У меня есть файл .txt на моем Рабочем столе с именем " URLs.txt ", который содержит список URL-адресов (по одному на строку) с " .mp3"расширение (т.е." http://www.example.com/path/number.mp3"). Мне нужно загрузить все аудиофайлы, но в то же время сохранить порядок файлов, перечисленных в "URLs.txt" ...

Может кто-нибудь помочь с яблочным шрифтом, который будет:

Прочитайте « URLs.txt » построчно, загрузите каждый аудиофайл, но затем переименуйте каждый файл в числовом порядке (на лету), чтобы сохранить порядок списка файлов при загрузке в « URLs"папка на Рабочий стол ? Например:

urls.txt
Http: //...34566.mp3
Http: //...234.mp3
Http: //...126567.mp3

... становится ...

URL-адреса Папка рабочего стола
1.mp3
2.mp3
3.mp3

Я запускаю Safari на Mac и хотел бы запустить скрипт через Automator или Меню скриптов .

Любая помощь с благодарностью!

Спасибо
Dave

Ответы [ 2 ]

1 голос
/ 31 декабря 2014

Я знаю, что это старая ветка, но я подумал, что мои недавние находки могут быть полезны для кого-то, кто ищет то же самое, что привело меня сюда.Это то, что я придумал, используя Automator вместо AppleScript.

  1. Открыть Automator
  2. Создать документ рабочего процесса
  3. В текстовой библиотеке выберите «Получить указанный текст» и перетащите его в рабочий процесс
  4. Затемперетащите «Извлечь данные из текста»
  5. Затем выберите «URL-адреса» из выпадающего списка
  6. В Интернет-библиотеке найдите «Загрузить URL-адреса»
  7. Вставьте список URL-адресов вПервое поле и нажмите «Выполнить» в правом верхнем углу

Вот как должен выглядеть ваш рабочий процесс:

enter image description here

Надеюсь, что это может бытьиспользовать для кого-то.

0 голосов
/ 10 декабря 2010

Судя по вашему последнему вопросу, похоже, что вы могли бы вместо этого использовать скрипт оболочки и просто поместить его в 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 в течение одной недели.

...