今日は。
先日、iPod Classicを手に入れました。鏡みたいな背面がカッコイイ。
160GBも入るらしいので、とにかく持ってる曲丸々入れてやろうとか思ってたんですが、問題点が2つ。
-
Macが2台あるが、それぞれ曲が入ってたり入ってなかったりしたので、ライブラリを合わせたい(お互いのライブラリの和集合がほしい)
-
全く同じ曲が重複している(画像の通り)。iPhoneやWalkmanなら単体で削除できるが、Classicはそれができないらしく...
辛抱強く1曲1曲選んで移してもよかったんですが、今後のことも考えて、この際2ライブラリを合わせて、かつ整理してしまおうと思い立った次第です。
方針
Mac1のライブラリを丸ごとMac2に移して、曲の重複を解消してしまえば上の2つは同時に解決できそう。
ただ...
iTunesの重複判定が緩すぎる
iTunesで、optionキーを押下しつつ(WindowsはAlt)メニューバーからファイル>ライブラリと動かすと、"完全に重複する項目を表示"と出ます。
確かに重複した項目がずらっと出るんですが、おそらく曲名しか見ていないのか、収録されているアルバムが違ったりしても表示されていたりしました(そもそもそういう機能なのだと思います)。
僕としては、完全に重複している曲を削除したいので、結局ここから選別していかないといけません。全体のライブラリから見れば数は絞れていますが、それでもかなりシンドイ...。
プログラムを組む
今思えば、AnimatorやらAppleScriptやらでもっとうまいやり方があったのかもしれませんが、何とは無しにPythonで書きました。コードは以下。利用は自己責任でお願いします。
https://github.com/sora410/iTunes_dup_delete/blob/master/iTunes_dup_delete.py
iTunes Music Library.xmlをBeautifulSoupで解析して、重複をカウントしてファイルパスからrmするだけです。名前、録音時間、アーティスト名、アルバム名全部合致していないと重複と見なされないようにしてあるので、判定はかなり厳しくなっているとは思います。
ただ、シークレットトラックなんかの前にめちゃある[Blank]みたいなのも同時に検知してしまうので、Blacklistを作っておきました。argparseで指定してもいいかなとは思ったんですが、複数指定の時の区切り文字に悩んだのでやめました。
あと少し...
重複した余分なファイルそのものは消すことができたのですが、iTunesにはまだ項目だけ残ってしまっています。
こちらのサイトを参考に、幽霊項目たちを一掃します。こんなうまいやり方があるんですね...。(終)