簡體   English   中英

Applescript讀取.txt文件中的MP3 URL列表,然后下載所有按數字順序重命名每個文件(1,2,3…)

[英]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,並且想通過AutomatorScript Menu運行腳本。

任何幫助,不勝感激!

謝謝,
戴夫

我知道這是一個老話題,但是我認為我最近的發現可能對其他尋找與我相同的東西有所幫助。 這就是我使用Automator而不是AppleScript想到的。

  1. 打開自動器
  2. 創建工作流程文檔
  3. 在“文本庫”下,抓取“獲取指定的文本”並將其拖到您的工作流程中
  4. 然后拖入“從文本中提取數據”
  5. 然后從下拉菜單中選擇“ URL”
  6. 在Internet Library下,獲取“下載URL”
  7. 將您的網址列表粘貼到第一個框中,然后點擊右上角的“運行”

這是您的工作流應如下所示:

在此處輸入圖片說明

希望這對某人有用。

從最后一個問題來看,您似乎可以改用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 scriptcurl來下載該文件,而不是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM