CDのリッピングデータの整理 その後

以前からコツコツとリッピングをして整理をしていたCDですが,最後にデータのバックアップをとったのが2017年1月28日だったのでもう7年くらい作業をしていないようで,歳をとるのは速いとまったく関係ないところに感心してしまいます。結果として,どのように作業をしていたのか完璧に忘れていたので作業を再開しようにもどうしてよいかわからない,という実に情けないことになっていました。関連するファイルなどを眺めながら少し思い出す努力をしてみました。

1. 曲(pieces.xls),演奏者(performer.xls),レーベル(label.xls)のデータベースファイル(エクセルのデータ)にデータが登録されているか確認。
2. 登録されていなければ追加。
3. データベースから必要なデータをコピペして新しいエクセルデータとしてCDのトラックデータを作成。
4. トラックデータをcsvで出力。
5. csvファイルをSuper Tag Editor (改)に読み込ませて区切り文字を| (縦棒)にしてテキストファイル(*.txt)として出力。たぶんこのような手続きをやっていたと思われるが,どうやればこれができるのか,まだ使い方が思い出せない。
6. Mp3tagにCDからリッピングしたトラックをwavからflacに変換したファイルを読み込ませる。
7. トラックファイルを全て選択。
8. 5で出力した|区切りのテキストファイルを「テキストファイル - タグ」ボタンを使って読み込む。
9. 「タグを編集」ボタンをおしてカバーアートを追加。
10. 「保存」ボタンでタグを書き込み。
11. 「タグ - ファイル名」ボタンでファイルを出力。
12. 「アクション」ボタンの右側の矢印でメニューを開いて「Output cover art」を選んでカバーアートを出力。

どうも上記のような手順でやっていたようです。8, 11, 12での設定はMp3tagディレクトリの下のdataとexportディレクトリに設定をコピーしておく必要があります。これは以前に使っていた設定ファイルを保存していたものをそのままコピーしています。他にMp3tag/mp3tag.cfgも以前の設定ファイルをコピーをしておきます。オリジナルのdata, export, mp3tag.cfgは適当に名前を変えて保存しておくのが平和です。パーミッションはオリジナルのものにあわせておきます。

5はたんに区切り文字を変えるだけのことなのでsuper Tag Editorを使う必要もなくて,適当なプログラムを書いて処理をしたほうが簡単で速そうです。

とりあえず,macOS上でできればよいだろう,ということで,試してみました。macOSに入っているperlはパーミッションなどが面倒なのでhomebrewから新たにperlをインストールします。
1. brew install perl
2. cpan Text::CSV_XS
3. rehash
としてText::CSV_XSモジュールを使えるようにします。brewからインストールしたperlは/usr/local/bin/perlにインストールされます。もともとmacOSに入っていたperlは/usr/bin/perlです。パスはたぶん/usr/local/bin/を先に探すように設定されているはずなので,特に問題ないはずですが,そうでなければ環境変数PATHの設定で,/usr/local/bin/を先に探すように.profileや.cshrcを書き換えておきます。その上で,conv_csv2bar-sep.plのような適当な名前で以下のコードを保存します。



#!/usr/local/bin/perl
use Text::CSV_XS;

$csv=Text::CSV_XS->new();

if($ARGV[0] eq ""){
print "This programe should be followed by a name of csv file.\n";
end;
}

$file=$ARGV[0];
open(CSV,$file);
while(){
## Do NOT chomp line data;
## chomp;
next if($. == 1); # remove header line
$line = $_;

if ($csv->parse($line)) {
my @field = $csv->fields;
my $count = 0;
$joined = join('|',@field);

# output with CRLF
print "$joined\r\n";
}else{
my $err = $csv->error_input;
print "parse() failed on argument: ", $err, "\n";
}
}
close(CSV);



難しい話は何もないはずなのですが,parse($line)がエラー($status = 0)を返してparseをできずその原因がまったくわかりませんでした。どうも,chomp;によって改行コードを取り除いてからcsvデータをparseすると正しくparseできなくなるようでした。改行コードがついたままparseしたからといって出力に改行コードがついてくることはないようで,改行コードは明示的にprint文につけなければいけないようです。でもって,excelで読み込むことを考えてとりあえずDOS形式のファイルとなるように改行コードをCRLF (\r\n)をつけてprint文で出力しています。改行コードはいつもワナにハマりますが,今回も例外なくハマりました。

Text::CSV_XSについてはこのあたりが参考になりました。

いずれにしても,macOS上でwineを使ってMp3tagも動きそうなのでこれでmacOSだけでなんとかなりそうな気がしてきました。Mp3tagのために7年も前に作った設定用のファイルが最新版でもちゃんと動作するようなのでこれにはとても救われました。素晴らしいです。macOS用のMp3tagもありますが,設定ファイルに互換性があるかどうかもわからないしmacOS版だけ有料ってこともあるし,とりあえずwindows版Mp3tagをmacOS上のwineで使って様子を見てみることにします。

この記事へのコメント