von Ihrer letzten Frage zu urteilen, sieht es aus wie Sie stattdessen einen Shell-Skript verwenden könnte, und es nur in Automator platzieren. In diesem Fall würde der folgende Bash-Skript arbeiten:
#!/bin/bash
mkdir -p ~/Desktop/URLs
n=1
while read mp3; do
curl "$mp3" > ~/Desktop/URLs/$n.mp3
((n++))
done < ~/Desktop/URLs.txt
Die mkdir -p
erstellt den Ordner (ohne erroring falls bereits vorhanden); n=1
richtet Ihren Zähler für die Dateinamen ein. Dann springt while read mp3; do
über jede Zeile in der Datei und liest jeden in die Variable mp3; curl "$mp3" > ~/Desktop/URLs/$n.mp3
lädt die Datei unter dieser Adresse herunter und speichert sie in der gewünschten Datei. Dann ((n++))
Inkrementen n
um eins; ((..))
markieren Mathe-Modus, und ++
ist der Self-Inkrement-Operator. Schließlich teilt die < ~/Desktop/URLs.txt
der while-Schleife mit, dass ihre Standardeingabe (was sie mit read
überprüft) aus dieser Datei stammt. Ich vermute, dass dies sauberer ist als die Verwendung von AppleScript, da die Stärken von AppleScript hauptsächlich auf die Interoperabilität mit anderen Anwendungen zurückzuführen sind, um die es bei dieser Aufgabe nicht geht.
Edit: Während das Skript von der Kommandozeile funktioniert gut, erlegt Automator irgendeine Art von Beschränkung, die es nicht bis zum Ende mit einem großen Anzahl von Dateien verursacht. Ich konnte beim Googlen keine Erklärung oder einen Weg finden, um es zu umgehen. Daher denke ich, dass es am besten ist, stattdessen AppleScript zu verwenden. Es ist länger, und ich denke, Sie werden sehen, warum ich vor ein Bash-Skript verwendet, aber hier ist es:
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
Wie Sie sehen können, ist es sperriger, aber es ist im Grunde das gleiche. Wir haben zuerst desktopPath
als den Weg zum Desktop (Überraschung) gesetzt, da wir es sehr oft verwenden werden. Der Baustein try
- on error
versucht, das Verzeichnis URLs
zu erstellen, wobei der Fehler ignoriert wird, wenn er bereits vorhanden ist. Wir initialisieren dann unseren Zähler und lesen jeden Absatz (also Zeile) in URLs.txt
(auf dem Desktop). Wir zitieren dann die URL, so dass wir sie in der Shell verwenden können (wobei ein streunender &
oder ;
eine unerwünschte Bedeutung haben könnte), und stellen Sie sicher, dass es dort tatsächlich eine URL gibt und keine leeren Anführungszeichen. (Das kann beispielsweise passieren, wenn die Datei mit einem Zeilenumbruch endet.) Wir verwenden dann curl
, um die Datei herunterzuladen, und inkrementieren n
. Wenn Sie glauben, dass Sie viele Dateien haben, können Sie am Ende des Skripts eine Zeile say "Done!"
hinzufügen, damit Sie wissen, wann es fertig ist.
Sie werden feststellen, dass ich do shell script
und curl
verwendet habe, um eine Datei herunterzuladen, anstatt nach Safari zu rufen. Immer wenn ich AppleScripts schreibe, die eine Datei herunterladen müssen, verwende ich aus zwei Gründen lieber curl
. Erstens kann ich die Datei direkt herunterladen, anstatt sie in Safari zu öffnen und dann zu speichern (was sich auch in hässlichem AppleScript widerspiegeln würde, dass ich nicht 100% sicher bin, wie ich schreiben soll); Zweitens, Safari ist möglicherweise nicht geöffnet, weil Sie keine Webseiten geöffnet haben (unwahrscheinlich, zumindest für mich :-)), oder weil Sie Safari nicht als Browser verwenden. Sicher, Sie tun jetzt, aber Sie wissen nie, wann Sie Ihre Meinung ändern könnten. Ich habe auch einen Verweis auf etwas namens "URL Access Scripting" gesehen, aber ich kann nicht sagen, ob das noch unterstützt wird oder nicht, und ich habe es nie benutzt. Da ich auf der Apple-Website keine Erwähnung davon finden kann, habe ich mich auf der Seite der Dokumentation geirrt und bin stattdessen mit curl
gegangen.
1: Eine Möglichkeit, dies zu tun, ist das ganze Bash-Skript in einem do shell script
zu wickeln. Das würde funktionieren, aber es wäre irgendwie dumm. Sie könnten es tun, wenn Sie wollten, aber:
2: Case in point: Ich hatte Safari seit entweder Jaguar oder Panther, und sah mich nicht wechseln - bis Anfang dieses Halbjahres, als ich wechselte innerhalb von einer Woche auf Google Chrome.
Hallo Antal, das funktioniert super - danke! Aber das Skript scheint nur bis zu "49.mp3" herunterzuladen, während meine URLs.txt Datei URLs zu mehr als 49 Dateien hat ... Gibt es eine "Mengenbeschränkung" für das Skript, das Sie mir gegeben haben? –
@themiddledrew: Seltsam, sollte nicht sein. Ich habe wahrscheinlich einen Fehler beim Entkommen gemacht (Bash ist so) - was sind die Zeilen # 49 und # 50 der Datei? Oder im Allgemeinen die Datei als Ganzes? –
-1: Alle Funktionen beiseite, die OP fragte nach Applescript kein Shell-Skript - von einem Syntaxstandpunkt aus sind sie fast vollständig voneinander entfernt - und sicherlich kein Buggy-Skript darüber. –