いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

大量のMP3を整理するソフトを作ってみた

http://ir9.jp/hd08/0525_00.png

こんな感じで大量のMP3が転がってるフォルダがあるのですが…どれが必要・どれが不要ってのが全くわからないのですよ。

ファイル名で判断しようにも、ファイル名から想像できるとおり、これらのファイルはダウンローダーから拾ってきた mp3 なので「連番」。 曲の内容を全く示しておらず、不明っぷりを増加させています。(ちなみに、別に違法なファイルではありません。念のため。^^;)


再生しながらファイルを削除出来るプレイヤーがほしい!

こんなプレイヤーがほしかったのです。

  • ファイルをプレイヤーにぶち込む
  • 再生する
  • 不要なファイルであれば、プレイリストを始めファイルごと削除。

ところがどっこい。こんなプレイヤーが存在しないっぽい。Winodws Media Player も WinAmp も「プレイリストから削除」は出来るものの、ファイル自体が削除出来ないという。あぁなんということでしょう…!(いやまぁ、簡単にしかツール調べてないけど)



ってことで! 私は真面目で硬派で策士な第2PG!



http://ir9.jp/hd08/0525_01.png

整理用ツール自作しました。



…何人か絶対「ぅわ…すげぇやっつけ仕事…(プ」とか思ったに違いない。 えぇ思ったに違いありません。 先生、今なら起こらないから正直に手を挙げなさい。ね。 んまぁ、手を挙げたところで、体育館の裏に呼び出しちゃうけどね!




そういえば、アプリ名決めてないなぁ……うーん



「おとうさま、おんがくファイルを整理するね」



俺によし。


これで

  • フォルダ指定して
  • 右のリストをダブルクリックして再生
    1. 要らなければ 「消去」 ボタンでファイルをゴミ箱へ
    2. 必要であれば 「↓」ボタンで次のファイルを視聴開始

ということが出来るようになりました。 個人的には便利に活用してます。 が、今回使ったら、次回いつ使うんだろうなぁー とか、その辺が少し心配です。(ぉ

とはいえ、2時間でこれだけ出来たのは良かったです。C#万々歳!(C++なんかで絶対書きたくないね!)

[余談] バグ

このソフトウェアは Windows Media Player 11 を利用しているのですが…

Windows Media Player のイベント 'PlayStateChange' を捕まえて、newState == 8(終了)を検出できたまではいいけど、そこから次のファイルを再生しようとすると 「メディアを開いています...」 で止まってしまう…(そして Meida Player の再生ボタンを押すと再生される)

なぜだ… Microsoft よ…


誰か原因知ってたら教えてください(他力本願

原因判明

C# + WMP 関連で検索していたとき「関数から戻さないと WMP の制御が云々」という話題がどこかしらであったことに気づき

  1. 再生終了イベント検知
  2. タイマーで 10ms 後にコールバックしてくるように設定
  3. 終了通知イベント用関数を終了させる
  4. タイマーコールバックイベント発生
  5. 新しいファイルを再生させる

ってやったらうまくいきました。

GetMessage() してメッセージを Dispach してもらえないと WMP 的には困ってしまうことがあるようですね。(多分)