My Music Libraryを作成

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秒待って再度リクエストを投げるように変えた。
これでなんとかエラーは回避。

もっと良いエラー回避方法があれば誰か教えて欲しい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください