« Orion Browser(オリオンブラウザ) | トップページ | ターミナル 実行中のプロセスの終了とウィンドウを閉じる »

[CURL]ヘッダー付きダウンロード

ブラウザーで右クリックからCURLとしてコピーしてください
AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006##自分環境がos12なので2.8にしているだけです
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use scripting additions
011
012property refMe : a reference to current application
013
014
015###クリックボードの中のURLを取得
016set ocidPasteboard to refMe's NSPasteboard's generalPasteboard()
017###クリックボードの中のURLを取得
018set ocidPasteboardTypeString to ocidPasteboard's stringForType:(refMe's NSPasteboardTypeString)
019#改行除去
020set ocidPasteboardTypeString to (ocidPasteboardTypeString's stringByReplacingOccurrencesOfString:("\r") withString:(""))
021set ocidPasteboardTypeString to (ocidPasteboardTypeString's stringByReplacingOccurrencesOfString:("\n") withString:(""))
022set ocidPasteboardTypeString to (ocidPasteboardTypeString's stringByReplacingOccurrencesOfString:("' \\") withString:("'"))
023set strURL to ocidPasteboardTypeString as text
024
025#元になるCURLとしてコピーしたリンク
026set ocidURLstring to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
027ocidURLstring's setString:(strURL)
028# ' でリストにする
029set ocidURLstringArray to ocidURLstring's componentsSeparatedByString:("'")
030#リスト数
031set numCntArray to ocidURLstringArray's |count|()
032#HEADER用
033set ocidHeaderString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
034#
035repeat with itemNo from 0 to (numCntArray - 1) by 1
036  set strLineString to (ocidURLstringArray's objectAtIndex:(itemNo)) as text
037  if strLineString starts with "http" then
038    set strURL to strLineString as text
039  else if strLineString contains "-H" then
040    #
041  else if strLineString is "" then
042    #
043  else if strLineString contains "curl" then
044    #
045  else
046    (ocidHeaderString's appendString:(" -H '"))
047    (ocidHeaderString's appendString:(strLineString))
048    (ocidHeaderString's appendString:("'"))
049  end if
050end repeat
051####
052set strHeader to ocidHeaderString as text
053
054###
055set ocidURLstring to refMe's NSString's stringWithString:(strURL)
056set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLstring)
057set strGetURL to ocidURL's absoluteString() as text
058set ocidFileName to ocidURL's lastPathComponent()
059
060###ダウンロードフォルダ
061set appFileManager to refMe's NSFileManager's defaultManager()
062set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDownloadsDirectory) inDomains:(refMe's NSUserDomainMask))
063set ocidDownloadsDirPathURL to ocidURLsArray's firstObject()
064#保存ファイルパス
065set ocidSaveFilePathURL to ocidDownloadsDirPathURL's URLByAppendingPathComponent:(ocidFileName) isDirectory:(false)
066set strSaveFilePath to ocidSaveFilePathURL's |path| as text
067
068####################
069#実在チェック
070set strCommandText to ("/usr/bin/curl  -I \"" & strGetURL & "\"") as text
071
072log "\r" & strCommandText & "\r"
073
074################## 
075#コマンド実行
076set ocidComString to refMe's NSString's stringWithString:(strCommandText)
077set ocidTermTask to refMe's NSTask's alloc()'s init()
078ocidTermTask's setLaunchPath:("/bin/zsh")
079set ocidArgumentsArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
080ocidArgumentsArray's addObject:("-c")
081ocidArgumentsArray's addObject:(ocidComString)
082ocidTermTask's setArguments:(ocidArgumentsArray)
083set ocidOutPut to refMe's NSPipe's pipe()
084set ocidError to refMe's NSPipe's pipe()
085ocidTermTask's setStandardOutput:(ocidOutPut)
086ocidTermTask's setStandardError:(ocidError)
087ocidTermTask's setCurrentDirectoryURL:(ocidDownloadsDirPathURL)
088set listDoneReturn to ocidTermTask's launchAndReturnError:(reference)
089if (item 1 of listDoneReturn) is (false) then
090  log "エラーコード:" & (item 2 of listDoneReturn)'s code() as text
091  log "エラードメイン:" & (item 2 of listDoneReturn)'s domain() as text
092  log "Description:" & (item 2 of listDoneReturn)'s localizedDescription() as text
093  log "FailureReason:" & (item 2 of listDoneReturn)'s localizedFailureReason() as text
094end if
095##################
096#終了待ち
097ocidTermTask's waitUntilExit()
098
099##################
100#標準出力をログに
101set ocidOutPutData to ocidOutPut's fileHandleForReading()
102set listResponse to ocidOutPutData's readDataToEndOfFileAndReturnError:(reference)
103set ocidStdOut to (item 1 of listResponse)
104set ocidStdOut to refMe's NSString's alloc()'s initWithData:(ocidStdOut) encoding:(refMe's NSUTF8StringEncoding)
105##これが戻り値
106set strStdOut to ocidStdOut as text
107if strStdOut contains "404" then
108  return "失敗しました404 見つかりませんでした"
109end if
110
111
112####################
113#ダウンロード本番
114set strCommandText to ("/usr/bin/curl  \"" & strGetURL & "\" -o \"" & strSaveFilePath & "\"  " & strHeader & "") as text
115
116log "\r" & strCommandText & "\r"
117
118################## 
119#コマンド実行
120set ocidComString to refMe's NSString's stringWithString:(strCommandText)
121set ocidTermTask to refMe's NSTask's alloc()'s init()
122ocidTermTask's setLaunchPath:("/bin/zsh")
123set ocidArgumentsArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
124ocidArgumentsArray's addObject:("-c")
125ocidArgumentsArray's addObject:(ocidComString)
126ocidTermTask's setArguments:(ocidArgumentsArray)
127set ocidOutPut to refMe's NSPipe's pipe()
128set ocidError to refMe's NSPipe's pipe()
129ocidTermTask's setStandardOutput:(ocidOutPut)
130ocidTermTask's setStandardError:(ocidError)
131ocidTermTask's setCurrentDirectoryURL:(ocidDownloadsDirPathURL)
132set listDoneReturn to ocidTermTask's launchAndReturnError:(reference)
133if (item 1 of listDoneReturn) is (false) then
134  log "エラーコード:" & (item 2 of listDoneReturn)'s code() as text
135  log "エラードメイン:" & (item 2 of listDoneReturn)'s domain() as text
136  log "Description:" & (item 2 of listDoneReturn)'s localizedDescription() as text
137  log "FailureReason:" & (item 2 of listDoneReturn)'s localizedFailureReason() as text
138end if
139##################
140#終了待ち
141ocidTermTask's waitUntilExit()
142
143##################
144#標準出力をログに
145set ocidOutPutData to ocidOutPut's fileHandleForReading()
146set listResponse to ocidOutPutData's readDataToEndOfFileAndReturnError:(reference)
147set ocidStdOut to (item 1 of listResponse)
148set ocidStdOut to refMe's NSString's alloc()'s initWithData:(ocidStdOut) encoding:(refMe's NSUTF8StringEncoding)
149##これが戻り値
150log ocidStdOut as text
151
152
153##################
154#戻り値チェック
155set numReturnNo to ocidTermTask's terminationStatus() as integer
156log numReturnNo
157if numReturnNo = 0 then
158  log "0: 正常終了"
159else
160  ##################
161  #エラーをログに
162  set ocidErrorData to ocidError's fileHandleForReading()
163  set listResponse to ocidErrorData's readDataToEndOfFileAndReturnError:(reference)
164  set ocidErrorOutData to (item 1 of listResponse)
165  set ocidErrorOutString to refMe's NSString's alloc()'s initWithData:(ocidErrorOutData) encoding:(refMe's NSUTF8StringEncoding)
166  set listResponse to refMe's NSFileHandle's fileHandleForWritingToURL:(ocidLogFilePathURL) |error| :(reference)
167  set ocidReadHandle to (item 1 of listResponse)
168  set listDone to ocidReadHandle's seekToEndReturningOffset:(0) |error| :(reference)
169  log (item 1 of listDone) as boolean
170  set listDone to ocidReadHandle's writeData:(ocidErrorOutData) |error| :(reference)
171  log (item 1 of listDone) as boolean
172  set listDone to ocidReadHandle's closeAndReturnError:(reference)
173  log (item 1 of listDone) as boolean
174end if
175
176if numReturnNo = 1 then
177  return "1: スクリプトエラー"
178else if numReturnNo = 2 then
179  return "2: 引数エラー"
180else if numReturnNo = 126 then
181  return "126: アクセス権エラー"
182else if numReturnNo = 127 then
183  return "127: スクリプトファイルが見つかりません"
184else if numReturnNo = 130 then
185  return "130: 強制終了"
186else if numReturnNo = 133 then
187  return "133: 異常終了"
188end if
189
AppleScriptで生成しました

|

« Orion Browser(オリオンブラウザ) | トップページ | ターミナル 実行中のプロセスの終了とウィンドウを閉じる »

CURL」カテゴリの記事