Skip to content

tomato111/iTunesMusicLibrary-to-SQLiteDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

■概要━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 iTunes Music Library to SQLite DB は iTunes ミュージックライブラリの曲情報を
 SQLite のデータベース(.db)へ変換するスクリプトです。
 作成された DB は foobar2000 のコンポーネントで参照できるので、iTunes での再生回数、
 レーティング、最終再生日、追加日、といったタグに書き込まれない情報を移行することが出来ます。
 また、foobar2000 での再生回数などの情報管理は、引き続き DB 上で行えます。
 DB の参照および書き込み には foo_customdb.dll を想定しています。

 [注意]
 既存のDBへの追加・更新も可能ですが、 その場合は必ずバックアップをとってから実行してください。
 
 
■仕様━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
  customdb_sqlite.db はスクリプトと同じフォルダに作られます。
  既に customdb_sqlite.db がある場合は、既存の情報と重複しないように追記します。
  DB 内に対象の曲情報が入っていて iTunes ライブラリの情報の方が新しい場合は
  その新しい値でDB内を更新します。古いor等しい場合は何もしません。
  ※新しい/古い は値で判断するのでレートの場合は評価が高いほうが"新しい"になります
  曲名が無いもの、音楽ファイルでないもの、の情報は書き込まれません。
  

  設定ファイルの setting.ini に従い DB を作成します。
  書式は(key)=(value)とイコールで繋いで書き、;(セミコロン)で始まる行は無視します。

  [key] セクション
     レコード追加時のキー情報です。foobar側はこのキーをDB内に探して
     一致した情報を表示、という流れになります。
     
     使える(value)は  Artist  (アーティスト名)
                      Name    (曲名)
                      Album   (アルバム名)
                      Track Number (トラックナンバー)

     DB に実際に書きこむキーは
                      "key1の(value),key2の(value),key3の(value)"
     のように上から,(カンマ)で繋いだものになります。(foo_customdb.dllのデフォルトに準拠)
     なので、
      key1=Artist   |    key1=Name
      key2=Name     |    key2=Artist
     この左と右の設定は全く別物になります。
     また、(value)が取得できない曲はその部分を"?"に変換してキーとします。

  [field name] セクション
     設定したキーと一緒に書き込む情報です。
     
     使える(key)は  Play Count  (再生回数)
                    Rating      (レート)
                    Play Date UTC  (最後に再生した日)※UTCと入っていますが書き込むのはローカル時間です
                    Date Added  (追加した日)
                    
     (value)には任意のフィールド名を記述します。foobar側は %フィールド名% のように
     Title Formatting で値を参照する流れになります。


■使用方法━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 1. 以下から SQLite ODBC Driver をダウンロードして、インストール。sqliteodbc.exe or _w64.exe 
    http://www.ch-werner.de/sqliteodbc/
 2. ミュージックフォルダにある iTunes フォルダ内の iTunes Music Library.xml をメモ帳で開いて、
    "名前をつけて保存" で文字コードを "Unicode" にしてデスクトップ等に名前はそのままで保存。
	※iTunesが参照するファイルには上書きしないでください
 3. 仕様にしたがって setting.ini を設定する。
 4. 保存した iTunes Music Library.xml を iTunes Music Library to SQLite DB.wsf へドロップする。
 5. 作成されたdbを foobar2000 の設定フォルダへ移動して完了。

あとは foo_customdb.dll を適切に設定するだけです。


■foo_customdb.dllでの設定ヒント━━━━━━━━━━━━━━━━━━━━━━━

 デフォルトのiniでは、
 「アーティスト名,曲名」をキーとして
 「再生回数」、「レート」、「最後に再生した日」の情報を、それぞれフイールド名の
 「PLAY_COUNT_CD」、「RATING_CD」、「LAST_PLAYED_CD」で DB に書き込みます。
 
 なので、foo_customdb.dll で情報を読み出すor書き込む際は
 FieldsタブのNameに PLAY_COUNT_CD や RATING_CD や LAST_PLAYED_CD を入力し、
 Keyは Custom を選択して %artist%,%title% を入力。または $meta(artist),$meta(title)
 と入力します。以上で例えば %PLAY_COUNT_CD% では再生回数が取得できるようになります。

 上記のように db 作成時のキーとフィールド名を、 foo_customdb に設定することで
 正しくデータベースへアクセス出来ます。

 
■更新履歴━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 --v0.1公開(2011/03/15)-----------
 公開
 
 --v0.2更新(2011/03/21)-----------
 既存のDBに対する処理を追加
 
 --v0.3更新(2011/03/31)-----------
 月計算の間違いを修正
 キーにトラックナンバーを追加

 --v0.4更新(2011/04/04)-----------
 少し処理改善
 キー情報が取得できない曲はその部分を"?"で処理するようにした

 --v0.5更新(2011/04/19)-----------
 少し処理改善

 --v0.6更新(2011/11/14)-----------
 曲名等に'(シングルクォーテーション)が含まれているとエラーになる不具合を修正

 --v0.7更新(2014/02/25)-----------
  数値文字参照が文字列に変換されない不具合を修正

■最後に━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 iTunes の動作として.xml へ情報を書き込むタイミングは、何か曲を再生し始めた時のようです。
 なので、最後に再生した曲の情報(再生回数、再生日)はxmlに反映されないので注意してください。
 
 IniClass.js はこちらのコードを少し修正して使わせて頂いています。
 http://shoji.blog1.fc2.com/blog-entry-130.html

 なにかあればこちらから
 http://ashiato1.blog62.fc2.com/blog-entry-47.html
 code by tomato111