-
Notifications
You must be signed in to change notification settings - Fork 0
tomato111/iTunesMusicLibrary-to-SQLiteDB
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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