« BDレコーダー死す:処分はメーカー責任希望 | トップページ | ◇AACとロスレス圧縮のとても大きな差 »

◆iTunes⇒walkman楽曲転送ツール

 iTunes管理の曲情報をwalkmanに同期/転送するツール

iTunesで管理している曲をwalkmanで聴くために、これまでMusicCenterForPCというソフトを利用しようとしてきました。

残念ながらこのMusicCenterForPCはバグも多く、転送失敗や楽曲重複、プレイリストがうまく取り込めないことがあるといった問題があります。
なによりiTunes上で変更があった場合反映させるのが大変です。

そこでiTunes->walkman転送専用ソフト(i2wSD)を自作しました。

i2wSDは最初にiTunesのライブラリ情報ファイルを読み込み情報を解析します。
ライブラリ情報はデフォルトでは「ミュージック/iTunes/iTunes Music Library.xml」が用いられます。
(「ファイル」⇒「ライブラリ」⇒「ライブラリのエクスポート」で生成したファイルでも構いません)
その情報から楽曲ファイルの保存フォルダを特定し、そのフォルダ全体、または楽曲ファイルごとにWalkman用のSDにデータを転送します。
プレイリストもこのライブラリ情報から取得し、walkman用に生成します。
SD上にファイルが既存の場合、更新時刻とサイズのチェックを行い、必要な場合のみ上書きを行います。

動かした結果の表示情報を示します。walkmanのSDに楽曲ファイルが転送され、問題なく再生できました。

-- 情報 --
iTunes MusicFolder              = D:/iTunes/Music/
ライブラリ情報中の楽曲数        = 15467
見つからなかったファイル数       = 5
重複するファイル数               = 13
重複するため転送しないファイル数 = 13
有効な楽曲ファイル数             = 15449
  .m4a AACオーディオファイル 44100hz/128bit : 14592
  .m4a AACオーディオファイル 44100hz/256bit : 393
  .m4a AACオーディオファイル 44100hz/320bit : 431
  .m4a Appleロスレス・オーディオファイル 44100hz : 31
  .m4a Appleロスレス・オーディオファイル 96000hz : 2
有効楽曲ファイルの総サイズ       = 76198998280bytes (70.97GB)
有効楽曲ファイルの総演奏時間     = 50days 9:12:14
MusicFilder直下のフォルダ数      = 658
Playlist数                      = 21
Playlistに入れられた楽曲数      = 2980

ライブラリ読み込み所要時間 0:05.002

======= 作業開始 2018/10/22 14:56:29
転送 D:/iTunes/Music/ -> G:/MUSIC

*** 楽曲フォルダ転送 開始時刻 2018/10/22 14:56:29
削除されたSD上の楽曲ファイル数       = 0
削除されたSD上のプレイリスト数       = 0
重複回避のため削除したSDファイル数   = 0
既存のためスキップした楽曲ファイル数 = 0
重複回避のためスキップしたファイル数 = 13
転送した楽曲ファイル数               = 15461
*** 楽曲フォルダ転送 完了 所要時間   = 2:52:20.967
*** プレイリスト(m3u8)生成 開示時刻 2018/10/22 17:48:50
生成したプレイリストの数             = 21
*** プレイリスト生成完了 所要時間    = 0:05.859

======= 作業完了 2018/10/22 17:48:56  所要時間 2:52:26.857

フォルダを単純に転送するだけではiTunse上管理からもれたゴミファイルも転送されるかも知れないと心配したのですが、 管理している楽曲ファイル数(15452)と転送した楽曲ファイル数+重複数(15439+13=15452)は一致しました。

 iTunesライブラリ情報上の矛盾について

ライブラリ情報上にありながら、その実体がないものがあります。これはiTunesの何らかの障害のためだと思われます。

 iTunes上の楽曲修正と再転送

特に障害があるわけではないのですが、若干気持ち悪いiTunse上のデータ矛盾を無くすため、 重複やリンク情報(.xml上のLocation)の異常のあった5つのアルバムを置き換えました。

  • A161 Mozart:ピアノ協奏曲 1,2,3,4番 ;Perahia(Pf,Cond)/English Chamber Orc.
  • A159 Mozart:ピアノ協奏曲 5,6番 ;Brendel/Marriner/Academy of St.Martin
  • E072 Beethoven:交響曲 5番,6番;スクロヴァチェフスキー/ザールブリュッケン放送交響楽団
  • A207 Brahms:ブラームス:ハイドン変奏曲/エルガー:エニグマ変奏曲 他;ヨッフム、ロンドン、バイエルン
  • C021 ビートルズ:クラシカル ビートルズ ;アンサンブル SDR

先頭の4文字は管理用にふってあるもので、楽曲データではありません。

次の結果が得られます

-- 情報 --
iTunes MusicFolder              = D:/iTunes/Music/
ライブラリ情報中の楽曲数        = 15454
見つからなかったファイル数       = 0
重複するファイル数               = 0
重複するため転送しないファイル数 = 0
有効な楽曲ファイル数             = 15454
  .m4a AACオーディオファイル 44100hz/128bit : 14533
  .m4a AACオーディオファイル 44100hz/256bit : 393
  .m4a AACオーディオファイル 44100hz/320bit : 431
  .m4a Appleロスレス・オーディオファイル 44100hz : 95
  .m4a Appleロスレス・オーディオファイル 96000hz : 2
有効楽曲ファイルの総サイズ       = 77228069893bytes (71.92GB)
有効楽曲ファイルの総演奏時間     = 50days 10:4:35
MusicFilder直下のフォルダ数      = 657
Playlist数                      = 21
Playlistに入れられた楽曲数      = 2936

ライブラリ読み込み所要時間 0:05.616

======= 作業開始 2018/10/22 23:44:17
転送 D:/iTunes/Music/ -> G:/MUSIC

*** 楽曲フォルダ転送 開始時刻 2018/10/22 23:44:17
削除されたSD上の楽曲ファイル数       = 8
削除されたSD上のプレイリスト数       = 21
重複回避のため削除したSDファイル数   = 0
既存のためスキップした楽曲ファイル数 = 15397
重複回避のためスキップしたファイル数 = 0
転送した楽曲ファイル数               = 64
*** 楽曲フォルダ転送 完了 所要時間   = 2:52.825
*** プレイリスト(m3u8)生成 開示時刻 2018/10/22 23:47:12
生成したプレイリストの数             = 21
*** プレイリスト生成完了 所要時間    = 0:05.589

======= 作業完了 2018/10/22 23:47:18  所要時間 3:01.040

置き換えは全てAppleロスレスにしましたので、ファイルサイズが大きくなっています。
変更ファイルのみの転送ですので、所要時間は大幅に短くなっています(3時間->3分)

アルバムアーティスト名の変更などに伴いSDカード上にある古い名前のフォルダは削除されました。

-- エラー/警告 情報 --
delete file/folder on sd "Brendel_Marriner_Academy of St.Martin_"
delete file/folder on sd "Perahia(Pf,Cond)_English Chamber Orc._"
delete file/folder on sd "アンサンブル SDR"
delete file/folder on sd "アンサンブル SDR_"
delete file/folder on sd "オイゲン・ヨッフム_ロンドン交響楽団(1-24)、バイエルン放送交響楽団"
delete file/folder on sd "スクロヴァチェフスキー/ザールブリュッケン放送交響楽団"
delete file/folder on sd "ピアノ協奏曲 5,6番 _Brendel_Marriner_Academy of"
delete file/folder on sd "not in iTunes folder ピアノ協奏曲 1,2,3,4番 _Perahia(Pf,Cond)_Englis"

 iTunesの問題点

iTunesで見えない重複が有る場合、単純に削除しただけでは、見えなかったものが出てくるだけで、 削除がうまくできない場合があります。一旦削除した上でiTunesを起動しなおし、残っていれば再び削除します。
i2wSDを使い繰り返し[ライブラリ読み込み]を行い確認します。

iTunesのエクスポート情報は曲名によっては上手くいかない場合があるようです。

次の例ではLocation情報が欠落しています、曲名を日本語を使わないものに変更したところLocation情報が出るようになりました。

最初にAlbum名の日本語も外しましたが、Locationは欠落したままでした。

「交響曲第5番ハ短調 第1楽章 アレグロ・コン・ブリオ」の何が気に入らないのかは分かりません。

 トラック名の再取得

トラック名をCDDBから取得する場合日本語は避けた方が良さそうです。

取り込んだ後で自分で日本語に置き換えるのが、面倒でも安全です。

CDDBで希望しないものを選択してしまった場合、iTunes12の場合

  1. タイトルを全部選択する
  2. 「ファイル」メニュー⇒「ライブラリ」⇒「トラック名を取得」
で選びなおすことができます。

 MusicCenterForPCとの共存

MusicCenterForPCにはiTunesの楽曲は一切入れず、Moraからダウンロードする楽曲だけを管理させ、walkmanに転送するとう使い方が(僕の環境では)現実的だともいます。

 i2wSDのダウンロードと使用法

i2wSDは次のアドレスからダウンロードできます。

i2w.zip

i2wSD.zipを展開し、

  • A05_run.bat
を起動すると、冒頭の画面が現れます。

Java8以上の環境が必要です。

XMLの解析のためDTD情報を取得します。
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"

使用法は最初の画面に出ます。

使用法
-- iTunesで ライブラリをエクスポート
   [編集]->[環境設定]->[詳細]
       iTunesライブラリXMLをほかのアプリケーションと共有
   [ファイル]->[ライブラリ]->[ライブラリを整理]
       (ミュージック)/iTunes/iTunes Music Library.xmlにエクスポートされる
-- walkmanで SDカード初期化(一度だけでよい)
   [設定]->[各種初期化]->[SDカード初期化]
-- 本プログラム
   iTunesでエクスポートされたファイルを 「iTunesのライブラリ.xml」 にドラッグ、または[参照]で設定
   SDを挿し、「sdのMUSICフォルダ」にSDのMUSICフォルダをドラッグ、または[参照]で設定
   [ライブラリ読み込み]
   [楽曲およびプレイリスト転送]
      SDカードのMUSICフォルダ内を削除した上で楽曲を転送しプレイリストを作成します
   [CANCEL]
      転送作業を中断します。ファイルが中途半端になりますので注意してください
      ファイルサイズをチェックしますので、再転送の場合は上書きされます
   [表示]
      進行表示⇒エラー/警告情報⇒情報⇒HELP順で表示を変更します
 設定補足:
  
  [SDのMUSICを一旦削除する] :onの場合SDのMUSICを一旦空にします
  [楽曲情報を転送する]      :offにすると転送しません
  [Playlist(m3u8)を生成する]:offにすると生成しません
  [フォルダを単純コピーする]:onにするとMusicフォルダ内のファイルを単純コピーします
                             offの場合はライブラリ情報に基づき楽曲ファイルを転送します
  [iTunesにないファイルは..]:フォルダの単純コピーの場合、iTunesにないファイルはSDから削除します
  [更新時間とサイズをチェ..]:onにすると転送先の同名ファイルがiTunesのものより新しく
                             かつサイズが同じ場合転送しません
                             offの場合同名ファイルは上書きします
  [転送エラーが起こっても..]:onにすると場合画面にメッセージを出し、処理を続けます
                             offの場合エラーが発生すると処理を停止します
 楽曲ファイルが存在しない場合
  ライブラリ情報読み込み時に楽曲ファイルの有無をチェックします
  ライブラリ情報上のファイルが見つからない場合、フォルダ名を変えて調べます
  ファイルが存在しない場合、[ライブラリ情報によらず..]=off時の転送対象とはなりません

SD無しでiTunesのライブラリ情報のチェックだけを行うこともできます。

 i2wSDのリビルド

i2wSDはA01_build.batでリビルドできます。

用意されているi2wSD.jarが万が一異常を起こすようであれば、ソースi2wSD.javaを修正することができます。
ただしi2wSD.javaは増改築、その場その場での必要機能の追加/削除を行ったものであり、あまり美しくはありません。

 メモ

SDをwalkmanに挿すとデータベース生成が始まります。

計測したところ
 9分41秒
かかりました。

|

« BDレコーダー死す:処分はメーカー責任希望 | トップページ | ◇AACとロスレス圧縮のとても大きな差 »

トラックバック


この記事へのトラックバック一覧です: ◆iTunes⇒walkman楽曲転送ツール:

« BDレコーダー死す:処分はメーカー責任希望 | トップページ | ◇AACとロスレス圧縮のとても大きな差 »