3月から2ヶ月かけて自分CDをすべてリッピングし直した。
リッピングし直した目的は、
・リッピングデータを可逆圧縮形式に(AACからアップルロスレスに変更)
・CDライブラリを作成(自分の所有CDの一覧表)
そのCDライブラリのスクリプトを作成した。
CDライブラリの作成手順
1)自分のCDをすべてiTunesでリッピング
2)iTunesの「コメント」欄にAmazonのASINコードを入力
3)ライブラリのプレイリストをエクスポート
4)漢字コードを UTF-16 から UTF-8 に変換
私は、秀丸エディタを使ってUTF-8に変換した。
5)テキストファイルからデータベース(MySQL)に変換
テキストファイルをレンタルサーバにアップロードし、テキストファイルからデータベースに変換するスクリプトを書いてMySQLのデータに変換した。
6)スクリプトでCDライブラリを表示
PHPのスクリプトでCDの一覧を表示するスクリプトを作成した。
それが
My Music Library
http://cd.t-y4.com/
デザインは、作り込む時間がなくて暫定版。
あとで、検索機能を追加するつもり。
CDを購入したら、iTunesでCDをリッピングして、2)から5)の作業をする。
すべてPHPで作り込んであるから簡単!
My Music Library は、アルバムジャケットの画像をAmazonから取得している。
ASINコードをiTunesで入力し、このASINコードでAmazonから画像を呼び出している。
今回、PHPスクリプトでこの画像を表示しているが、PEAR の Services_Amazon を利用している。
この Services_Amazon でちょっとはまった。
最初作ったスクリプトでは以下のエラーが出た。
Fatal error: Cannot use object of type PEAR_Error as array in XXX
エラーがでるのは、1ページにたくさんアルバムジャケットの画像を表示した場合。
最初のページでエラーは出ないが、2ページ目を表示すると上記のエラーが必ずでる。
エラーメッセージを調べると、
Amazon returned invalid HTTP response code 503
これはどういう意味?
グーグル先生にたずねてみると、Amazonに対してリクエストの上限を超えると出るエラーみたい。
1ページにたくさんアルバムジャケットの画像を表示するため、短時間にたくさんAmazonに対してリクエストしている。
するとリクエストの上限を超えて、このエラーになるのだろう。
すぐに良い解決方法がわからなかったため、とりあえず503エラーが出たら3秒待って再度リクエストを投げるように変えた。
これでなんとかエラーは回避。
もっと良いエラー回避方法があれば誰か教えて欲しい。