, 그것은 보인다. 이 경우, 다음과 같은 배쉬 스크립트가 작동 것이다 :
#!/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
는 (이미 존재하는 경우 erroring없이) 폴더를 생성한다; n=1
은 파일 이름에 대한 카운터를 설정합니다. 그런 다음 while read mp3; do
은 파일의 모든 행을 반복하며 각 변수를 mp3 변수로 읽습니다. curl "$mp3" > ~/Desktop/URLs/$n.mp3
은 해당 주소에서 파일을 다운로드하여 원하는 파일에 저장합니다. 그런 다음 은 1 씩 증가하여 n
이됩니다. ((..))
오프 수학 모드이고 ++
은 자체 증가 연산자입니다. 마지막으로, < ~/Desktop/URLs.txt
은 while 루프가 표준 입력을 가장한 것으로 알려줍니다 (이 파일은 read
으로 확인). 내 생각 엔 AppleScript를 사용하는 것보다 훨씬 깔끔한 것입니다. AppleScript의 강점은 주로이 작업이 아닌 다른 응용 프로그램과 상호 운용되기 때문입니다.
편집 : 해당 스크립트 명령 줄에서 잘 작동하지만, 자동화가 파일의 큰 숫자가 완료되지 원인 제한의 일종을 부과한다. 내 인터넷 검색에서 우회하는 방법이나 설명을 찾을 수 없으므로 대신 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
을 사용했음을 알게 될 것입니다. 파일을 다운로드해야하는 AppleScript를 작성할 때마다 curl
을 두 가지 이유로 선호합니다. 하나는 Safari에서 파일을 열어 저장하는 것보다는 파일을 직접 다운로드 할 수 있습니다.이 파일을 저장하면 (필자는 쓰는 방법을 100 % 확신 할 수없는 못생긴 AppleScript에도 반영됩니다). 두 가지로, 웹 페이지가 열려 있지 않아서 (나에게는 최소한 :-)) 또는 Safari를 브라우저로 사용하지 않기 때문에 Safari를 열지 못할 수도 있습니다. 물론, 당신은 지금,하지만 당신은 언제 당신이 마음을 바꿀 수도 모를. "URL 액세스 스크립팅"에 대한 참조를 보았습니다. 그러나 여전히 지원되는지 여부는 알 수 없으며 사용하지도 않았습니다. Apple의 웹 사이트에서 이에 대한 언급을 찾을 수 없기 때문에 나는 설명서의 측면에서 실수를했으며 curl
을 대신 사용했습니다.
1 :이 일을 한 가지 방법은 do shell script
에 전체 bash는 스크립트를 래핑하는 것입니다. 그게 효과가 있겠지만, 어리 석다. 당신이 원하는 경우에 당신은 그것을 할 수 있지만 :-)
2 : 적절한 예 : 나는 재규어 나 표범 중 하나 때문에 사파리를 사용했고, 자신을 스위칭 할 때까지 이번 학기, 내가 전환 할 때 보지 않았다 1 주일 동안 Google 크롬으로
안녕 Antal, 그 위대한 작품 - 감사합니다! 그러나 내 URLs.txt 파일에 49 개 이상의 파일에 대한 URL이있는 반면 스크립트는 "49.mp3"까지 다운로드하는 것만 같습니다 ... 스크립트에 "수량 제한"이 있습니까? –
@themiddledrew : 이상하게 여겨서는 안됩니다. 아마 탈옥 (Bash는 그렇게)하는 실수를 저질렀습니다. 파일의 # 49 번과 # 50 번 줄은 무엇입니까? 또는 일반적으로 전체 파일입니까? –
-1 : 모든 기능을 제쳐두고, OP는 쉘 스크립트가 아닌 Applescript를 요구했습니다. 구문 관점에서 볼 때 거의 완전히 반대입니다. 물론 그 위에 버그가있는 스크립트는 아닙니다. –