プログラミングのスキルアップにおいて、他人のプログラムを見ることはとても参考になります。
特にプログラムを自作する場合、自分が作りたい機能のソースコードを探して、そのアルゴリズムを参考にしたり、ソースコードの一部を修正して利用することで、プログラミング作業の効率化とスキルアップが同時に達成できます。
ということで、今回は、MP3タグ編集ツールをテーマにしてスキルアップを図ってみたいと思います。
何故MP3タグ編集かというと、実は私が最近購入した格安MP3プレーヤーで、自分が指定した順で曲を再生させたい場合、ファイル名やMP3タグを編集する必要が生じたからです。
MP3タグを編集する有名どころのフリーツールを入れてはみましたが、機能が豊富すぎて、自分がやりたかったファイル名やタグの連番付与や一括変更の方法が結局分かりませんでした。
Google検索したところ、TagLibというフリーのライブラリを使えば簡単にMP3タグ編集できそうなので、今回はそれを使っています。
この記事では、
- TagLibというフリーライブラリの取り込み方法
- TagLibの使い方
- ファイル名の変更方法
- DataGridViewにおける表示データの絞り込み
- 文字コードがShift-Jisか否かの判定方法
- 正規表現を使った文字列置換
がスキルアップのエッセンスとなっています。
勿論、プログラミングの勉強としてではなく、単にツールとしてご利用になりたい方は自由に使っていただいて結構ですが、あくまでも自己責任でお願いします。
私も実際にこのツールを利用し、ある程度の動作確認はしてはいますが、前提は「プログラミング独学の教材」という位置づけであるため、考慮不足や取り切れていないバグが存在します。
実際の利用に際しては、必ずオリジナルのMP3をバックアップしておくことをお忘れなく。
Contents
実行ファイルのダウンロード
実際の実行ファイルは下記からダウンロードできます。
ZIPファイルで圧縮していますので、任意のフォルダに解凍後、Mp3TagEditor.exe を実行して下さい。
実際に操作しながら読み進めて頂くと、より理解しやすいかと思います。
尚、動作確認で用いるMP3ファイルは、ファイル名やタグが書き変わっても良いものをご用意ください。
画面の操作説明
次回の記事に掲載されているソースコードを読むときの前提知識となりますので、一通りの使い方は理解しておいて下さい。
まず画面レイアウトは次の通りです。
基本操作
MP3のあるフォルダ、又はMP3ファイルを一覧部分に直接ドラッグ&ドロップすることで、ファイル名(拡張子は省略)とMP3タグが表示されます。
フォルダの下にサブフォルダが有る場合、そのサブフォルダも含めた全てのMP3ファイルが表示されます。
基本操作としては
- 一覧部分に表示されている内容に対して、「絞り込み条件」で絞り込みを行う
- 対象項目に対してフォーマットに記載したルールで文字列を書き込むか、文字列の置換を行う
- タグ更新ボタンをクリックして編集内容をMP3ファイルに適用する
の3ステップになります。
絞り込み検索
絞り込み検索は「簡易」と「詳細」の2つのモードがあり、起動時は「簡易」にチェックが入っています。
「簡易」にチェックが入っている場合、項目名(列名)とキーワードを入力することで、その項目にキーワードが含まれている行だけ絞り込みを行います。
画面の例では ”アーティスト いきものがかり” と入力されていますので、アーテイスト列に ”いきものがかり” というキーワードが含まれている行が絞り込まれます。
複数項目を指定したい場合、”アーティスト いきものがかり タイトル よ “ とすると、アーティストに ”いきものがかり” が含まれていて、さらに タイトルに ”よ” の文字が含まれている行が絞り込まれます。
「簡易」のチェックが外れている場合、DataGridView に指定できる絞り込み条件の記述方法が利用できます。
例えば、アーティストが ”いきものがかり” で、タイトルが ”心” 以外から始まる行を絞り込みたい場合、 ”アーティスト = ‘いきものがかり’ and タイトル not like ‘心%’ ” という記述が出来ます。
詳しくは、こちら をご参照ください。
フォーマットを使った文字列のセット
対象項目のコンボボックスで選んだ項目に対して、指定したフォーマットの文字列をセットします。
フォーマットには、固定文字列の他に任意のタグ名や連番を指定できます。
画面の例では “{連番}.{アルバム名}_{アーティスト}” と記載されていますが、仮にアルバム名が ”いきものばかり ~メンバーズBESTセレクション” だとすると、次のようになります。
01.いきものばかり ~メンバーズBESTセレクション~_いきものがかり
また、連番部分のフォーマットは、連番書式で指定することが可能です。
画面の例では “0#” になっていますので、2桁で先頭を0で埋める指定になっています。
もし3桁で0埋めをしない場合、 “###” という指定ができます。
単純置換と正規表現による置換
対象項目に対して「置換」をしたい場合、置換前の文字列と置換後の文字列を指定します。
「置換」には「正規表現」と「単純」の2モードがあり、初期値は「正規表現」モードになっています。
正規表現はすこし分かり難いので、こちら のサイトを参考にして頂ければと思います。
画面の例では “^.*?[-. ]” となっていますが、これは「先頭から数えて最初にハイフンかピリオドか半角スペースのいずれかが見つかるまで」という指定になります。
置換後の入力欄は未入力になっていますので、「上記の指定に一致する部分を消去する」という動作になります。
これは何をしているかというと、例えばファイル名などの先頭に連番が振られている場合、連番部分だけ抹消するという動作になります。
「正規表現」のチェックを外すと「単純」モードになりますが、こちらは単に置換前文字列を置換後文字列に置換するというものです。
まとめ
今回自作したMP3タグ編集ツールは、絞り込み表示と連番付与にウェイトを置いたものに仕上がっています。
基本はMP3ファイルが格納されているフォルダを本ツールにドラッグ&ドロップし、編集対象項目を選び、フォーマットや置換の機能を用いてタグを設定したり、ファイル名を変更するという単純なものです。
次回はソースコードを解説しますので、好きなように機能の追加・変更を行って活用して頂ければと思います。