2011-07-12 18 views
1

再生回数を設定する曲と最後に再生した日を設定するソングが必要です。これらは、last.fmからデータを取得するperlスクリプトから呼び出されます。残念ながら、最後にプレイした日付のスクリプトを呼び出すと、エラーメッセージsetItunesLastPlayed.scpt: execution error: iTunes got an error: A descriptor type mismatch occurred. (-10001)が表示されます。AppleScript、iTunes、 'date'

私はこのようにそれを呼んでいる:

osascript /Users/gms8994/setItunesLastPlayed.scpt "<ARTIST>" "<TITLE>" "Wednesday, July 05, 2011 07:14:11 AM" 

Iは、ゼロパディング日と時間なしで、私は、iTunesからの最後のプレーの価値を要求した場合、それが戻ってくるという通知をしなかったので、私は削除しようとしましたそれらは役に立たない。

ここに私のスクリプトです。

on run argv 
    tell application "iTunes" 
     set theArtist to (item 1 of argv) 
     set theTitle to (item 2 of argv) 
     set theLastPlay to (item 3 of argv) 

     set theLastPlay to date theLastPlay 

     set results to (every file track of playlist "Library" whose artist contains theArtist and name contains theTitle) 
     repeat with t in results 
      tell t 
       say theLastPlay 
       set played date of t to theLastPlay 
      end tell 
     end repeat 
    end tell 
end run 

誰でも私に修正点を教えてもらえますか?

+0

エラーはかなり一般的です。あなたのプレイカウントスクリプトは動作しますか?スクリプトエディタやスクリプトデバッガからAppleScriptを実行しようとしましたが、どこが失敗したのか正確に見てきましたか? –

+0

@Philip Reganプレイ数のスクリプトは正しく機能します。数字を渡すだけです。エディタでdateスクリプトを実行すると、ハードコードされた「文字列」( 'theLastPlayを「Wednesday、July 05、2011 07:14:11 AM」に設定しています)が正しく動作します。 –

+0

私はここでこれを読む前にコメントを投稿しましたが、文字列がPerlからApplescriptに渡されたときに何らかの変換が行われているのだろうかと思います。 –

答えて

0

トラックのplayed dateプロパティには、日付文字列だけでなく、dateオブジェクトが必要です。あなたは、日付オブジェクトにあなたの日付を変換する必要があります:私は、直接指定した文字列から日付オブジェクトを作成する方法があるとは思わない

set newDate to (current date) 
set month of newDate to "July" 
set year of newDate to "2011" 
(* You can fill in the rest *) 
set played date of t to newDate 

ので、あなたは何をする機能を維持する必要がありますlast.fm(または、彼らが日付の保存と報告に依存している技術)の場合、日付形式を変更することを決定します。

+0

これは、「TheLastPlayを実行するために、TheLastPlayを設定する必要がありますか? –

+0

必ずしもそうではありません。 Applescriptは動的にフォールトに入力されるので、日付を解析できないときには、文字列自体を設定してエラーを結果として返すかもしれませんが、正確な動作はわかりません(少なくとも私と私それ以外のことを教えてくれるドキュメントはまだありません)。明示的に文字列を日付に変換して日付を設定すると、エラーなく日付を設定できました。 –