AppleScriptで聞いている曲をTwitterに呟くまで
Twitterで今聞いてる曲を#nowplayingとして呟きたい!!でもサードーパーティーで最適なアプリケーションが見つからない.それならば作ってしまえばいいのだ,ということでAppleScriptを使って作ってみた.
確実に前回の記事と順番を間違えた
今回もPashuaと
www.bluem.net
Twitter Scripterを使わせてもらいました
www.mousedown.net
Pashuaをダウンロード,解凍すると"Pashua.scpt"と"Pashua.app"の二つを探してApplicationのフォルダにぶち込んでおく
Pashua.scptをそのまま使うと不具合が起こる場合があるので下記の部分を修正しておく(原因は調べた気がするが忘れた)
tell application "Finder" to delete tmpfile
⬇︎
tell application "Finder" delete tmpfile end tell
PashuaとTwitterScripterを組み合わせるとこのようになった.Pictureフォルダにはアートワークがない場合の別の画像を用意しておいた.(名前はcover_not.png)
global sendText tell application "iTunes" set theArtist to artist of current track set theAlbum to album of current track set theName to name of current track set sendText to "♪" & theArtist & "/" & theName & " /" & theAlbum & " #nowplaying" as text if (count of artwork of current track) ≥ 1 then set artworkExists to true set anArtwork to raw data of artwork 1 of current track tell application "iTunes" to tell artwork 1 of current track set d to raw data if format is «class PNG » then set x to "png" else set x to "jpg" end if end tell (((path to pictures folder) as text) & "cover." & x) set b to open for access file result with write permission set eof b to 0 write d to b close access b else set artworkExists to false end if end tell tell application "Finder" set appPath to (path to applications folder) set thisFolder to appPath as string if "Pashua:Pashua.app:" exists then -- Looks like the Pashua disk image is mounted. Run from there. set customLocation to "Pashua:" else -- Search for Pashua in the standard locations set customLocation to "" end if end tell try set thePath to alias (thisFolder & "Pashua.scpt") set pashuaBinding to load script thePath tell pashuaBinding -- Display the dialog try set pashuaLocation to getPashuaPath(customLocation) if artworkExists is true then set dialogConfiguration to my getDialogConfiguration((((path to pictures folder) as text) & "cover." & x)) else set dialogConfiguration to my getDialogConfiguration((((path to pictures folder) as text) & "cover_not.png")) end if set theResult to showDialog(dialogConfiguration, customLocation) if {} = theResult then else if cb of theResult is not "1" then tell application "Twitter Scripter" if artworkExists is true then tweet sendText & return & tf of theResult using account pop of theResult with image (((path to pictures folder) as text) & "cover." & x) else if artworkExists is false then tweet sendText & return & tf of theResult using account pop of theResult end if end tell end if end try end tell end try -- Returns the configuration string for an example dialog on getDialogConfiguration(pashuaLocation) if pashuaLocation is not "" then set img to "img.type = image img.x = 320 img.y = 90 img.maxwidth = 128 img.tooltip = Album Art img.path =" & (POSIX path of pashuaLocation) & return else set img to "" end if return " # Set window title *.title = Currently playing... # Introductory text txt.type = text txt.label = Track/Album Info txt.default =" & sendText & return & " txt.height = 10 txt.width = 300 txt.x = 0 txt.y = 160 #txt.tooltip = This is an element of type “text” # Add a cancel button with default label cb.type = cancelbutton cb.label = Cansel # Add a text field tf.type = textfield tf.label = tf.default = tf.width = 300 tf.tooltip = This is an element of type “textfield” # Add a popup menu pop.type = popup pop.label = Tweet Account pop.width = 300 pop.option = pop.option = pop.default = pop.tooltip = This is an element of type “popup” db.type = defaultbutton db.label = Tweet " & img end getDialogConfiguration