結構前に着手しつつも長いこと延期していたのだが、今日で大体目処が付いたので書く。「Linuxへの移行」は、正確には、「WindowsのMusicBeeからLinuxのtinyMediaManagerへの移行」である。

移行するメタデータは、MusicBeeに登録した以下の情報である。

  • 標準のタグ: タイトル、出演者、年、種類(映画、音楽、TV)、音楽ビデオの場合のジャンル、長さ、メディアのパス
  • カスタムタグ: "Source"(DVD/BDなどの種類)、"Not ripped"(メディアを持っていて、PC内にないもの)など

移行するには、まず、MusicBeeに登録したビデオ情報を取り出す必要がある。しかし、MusicBeeにはDBのエクスポート機能がないため、最初はDBを解読しようとして途中までできたのだが、調査中にiTunesのXML形式で書き出せることが分かったので、その機能を使った。

次に、iTunesのXMLで記録された情報をtinyMediaManager(以下、tmm)に登録する必要があるのだが、tmmにはCSVなどからバッチ処理で登録する機能がない。しかし、メディアファイルと同じディレクトリに、ビデオ情報を記載したXMLのファイル(nfoファイル)を作ることで、その情報を読み込んで登録できることが分かった。それで、iTunesのXMLをnfoファイルに変換するプログラム(以下、変換プログラム)を作った。

変換プログラムでは、iTunesのXMLを読むために、PlistParserというPHPのライブラリを使った。あとは、XMLから読み込んだ情報を、各メディアファイルごとにnfoに書き出せば良いのだが、いくつか苦労したことがあるので、以下に書く。

MusicBeeのタグに対応するnfoの要素がないもの(主にカスタムタグ)は、tag要素に記述した(例: "Not ripped" → "<tag>Offline</tag>")。また、下記のように、すべてのメディアの種類が定義されていないため、メディアの種類はtag要素にも記述した。

nfoのsource(メディアの種類)に書くべき記号一覧が公開されていないようなので、tmmで調べたところ、以下のとおりだった。

  • DVD Video: DVD
  • Blu-ray disc: BLURAY
  • TV: TV
  • デジタルTV(地デジ): (なし)
  • VHS: VHS
  • LD: (なし)

それから、tmmがメディアファイルやnfoを登録する際、ファイル名に"-"や"_"のような区切り文字が2個以上入っていると、タイトルが最初の単語だけになってしまい、異なるビデオが同じものとみなされることがあるようだった(例: "test-1-a.vob"と"test-1-b.vob"が"Test 1"に統合される)。ただ、それが起こらない場合もあって、正確な規則は不明である。

(12/6 20:30 追記) nfoに情報を追加する時、iTunesのXMLから取得した値をhtmlspecialchars()でURLエンコードする必要がある場合があった。いつもではなく、場合によって不要なこともあった。理由は調べていないが、既にある子に値を上書きする時はエンコード不要(元々エンコードされているようだ)で、SimpleXMLのaddChildメソッドで追加する時にはエンコードが必要だった。URLエンコードしないと、"&"などの特殊文字がそのままnfo(XMLファイル)に書かれるため、異常なXMLとなり、tmmが読み込まない現象が起こった。

また、tmmには、scrapeといって、ビデオ(主に映画)の情報を公開DB(IMDBなど)から取得してnfoを作る機能があるので、MusicBeeに登録した情報(手で打ち込んだ)だけを使うよりは、scrapeできるものはそれでnfoを作る方が、正しい・多くの情報が格納できる可能性が高い。それで、変換プログラムでは、既存のnfoがある場合には、その情報を上書きせずに、追加情報(主にカスタムタグ)だけを追加するようにした。なお、長さは、TVなどで本編と異なる場合があるので、MusicBeeに登録した情報で上書きするようにした。なお、iTunesのXMLでの長さはms単位である。

日本語では検索できなかったので、海外で公開された映画しかscrapeできないと思っていたのだが、邦画でもローマ字で検索すればできることが分かった(例: 「セーラー服と機関銃」→ "sera fuku to"で検索)。なお、カタカナで書かれた英語の単語は、英語の綴りでヒットしない場合、ローマ字の綴りにするとヒットする可能性が高い。

scrapeの結果は、邦画の情報も全部英語で記述されており、俳優の名前などもローマ字になっている。邦画のDBがあればいいのだが、少し探した限りではないようだ。あるいは、tmmが日本語に対応していないだけかも知れない。

最終的には以下の手順で移行を行うことにして、現在実行中である。なお、"place holder"は、DVDなどの物理メディアを持っていて、PC内にメディアファイルがないものの情報だけを記録した、ダミーのメディアファイルを指す。

  1. tmmで、scrapeできるものはし(place holderのビデオを除く)、ローマ字になっている邦画のタイトルを日本語に戻す。
  2. 変換プログラムを実行して、各ビデオのnfoを作る。
  3. 作ったnfoをtmmに登録する。
  4. 登録結果を修正する。
  5. place holderのビデオをscrapeし、nfoに情報を追加する。
  6. scrape結果を修正する。

現在は3まで終わっている。移行で問題になりそうだった・なったことを以下に書く。

iTunes形式のXMLのサイズは、音楽ファイルの情報も一緒になっているため50MBもあって、変換プログラムで問題が起こらないか心配だったのだが、読み込みに時間が掛かった程度で、nfoの作成は一瞬で終わった(デバッグ時間は除く)。

それから、どうしてもうまくtmmに登録できない(複数の巻が同じものになってしまう)ビデオがあった。原因は不明なのだが、ディレクトリ階層が深かったようで、巻ごとにシンボリックリンクを作って浅くしたら、回避できた。

そして、今は以下のような感じでplace holderや邦画を含むビデオがtmmで表示できるようになった。Scrapeできたファイルは、アートワークやジャンルなどが表示され、出演者などの詳細情報も表示可能である。ビデオファイルがPC内にあるものは、右下の再生ボタンを押せば、VLCなどのプレーヤーで再生することができる。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-12-04_22-59-28_v1

tinyMediaManagerの画面

なお、tmmの問題ではないのだが、tmmからDVD(IFOファイル)を再生しようとすると、毎回アプリケーションを選択させられる。これは、LinuxにIFOのMIMEタイプが登録されていないためと思われるので、登録方法を調べて対応する予定だ。

本当は、gmusicbrowserでビデオも管理したかったのだが、ビデオと音楽では管理を別にする必要があって、改造するにしても、かなりの変更が要りそうだったので、とりあえずはtmmを使うことにした。Scrapeで詳細情報が取得できたり、ビデオの再生もできて、結構便利なのだが、検索機能が今ひとつだったり、上述のようなよく分からない挙動をすることがあるのが、ちょっと気に入らない。

(12/6 20:18 追記) 移行が終わった。「何事もなく」とはまでは行かなかったが、大きな問題はなく、情報の修正などにちょっと手間や時間が掛かった程度だ。以下に、起こった問題と対処を書く。

  • MusicBeeに登録していたディスク番号(タグ=Disc Number)をnfoに入れるのを忘れたので、複数枚からなるビデオの区別が付かなくなった。→ nfoのタイトルに、"[Disc 01]"のようにディスク番号を追加するように、変換プログラムを修正した。
  • TVドラマやニュースのタイトルが大体同じで区別が付かない。→ ドラマの回や放送日を自動で抽出するのは難しかったので、手でタイトルに追加した。
  • tmmが表示するビデオの長さ(ファイルをスキャンして得た値)は、実際の2倍になっているようだ。→ 長さは余り使わないし、scrapeして得られた本編の長さは正しいので、保留にした。
  •   0
  •   0

コメントを書く

名前    

メール 

URL