[英]Issue with Unix Bash Script that Reads In Mp3 Urls from .TXT File, then Downloads and Renames Files
[英]Applescript to read list of MP3 URLs in .txt file, then download all renaming each file in numerical order (1,2,3…)
我的桌面上有一個.txt文件,名為“ URLs.txt ”,其中包含URL列表(每行一個),擴展名為“ .mp3 ”(即“ http://www.example.com/path/number.mp3 ”)。 我需要下載所有音頻文件,但同時保留“ URLs.txt”中列出的文件順序...
有人可以幫忙提供以下AppleScript:
逐行閱讀“ URLs.txt ”,下載每個音頻文件,然后在下載到桌面上的“ URLs ”文件夾中時,以數字順序(即時)重命名每個文件以保留文件列表順序? 例如:
URLs.txt
http:// ... 34566.mp3
http:// ... 234.mp3
http:// ... 126567.mp3
...成為...
URL桌面文件夾
1.mp3
2.mp3
3.mp3
我在Mac上運行Safari,並且想通過Automator或Script Menu運行腳本。
任何幫助,不勝感激!
謝謝,
戴夫
我知道這是一個老話題,但是我認為我最近的發現可能對其他尋找與我相同的東西有所幫助。 這就是我使用Automator而不是AppleScript想到的。
這是您的工作流應如下所示:
希望這對某人有用。
從最后一個問題來看,您似乎可以改用Shell腳本,然后將其放在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
while read mp3; do
循環遍歷文件中的每一行,將每一行讀入變量mp3; curl "$mp3" > ~/Desktop/URLs/$n.mp3
在該地址下載文件並將其存儲在所需文件中。 然后((n++))
n
加1; ((..))
標記為數學模式,而++
是自增運算符。 最后, < ~/Desktop/URLs.txt
告訴while循環假裝其標准輸入(它使用read
檢查的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。 每當我編寫需要下載文件的AppleScript時,出於兩個原因,我更喜歡使用curl
。 第一,我可以直接下載文件,而不是在Safari中打開文件然后保存(這也會在丑陋的AppleScript中反映出來,我不太確定怎么寫); 第二,您可能沒有打開Safari,或者是因為您沒有打開網頁(不太可能,至少對我而言:-)),或者是因為您沒有將Safari用作瀏覽器。 當然,您現在就做,但是您永遠不知道何時可以改變主意。 2我也看到過對“ URL訪問腳本”的引用,但是我無法確定是否仍然支持該URL,並且我從未使用過。 由於我在Apple網站上找不到任何提及,因此我在文檔方面犯了錯誤,而是改用curl
。
1:一種方法是將整個bash腳本包裝在do shell script
。 那行得通,但是有點愚蠢。 不過,如果您願意,也可以這樣做:-)
2:恰當的例子:自Jaguar或Panther以來,我就一直使用Safari,直到我本學期早些時候(我在一周之內切換到Google Chrome瀏覽器)時,我才發現自己沒有切換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.