メディアタグを操作するための便利なライブラリ

すべての住民への挨拶。 ある夕方、ギガバイトの音楽を整理するというアイデアが思い浮かびました。 もっと正確に言うと、聴力や無駄な量を刺激しないように、単に低ビットレートのトラックをすべて削除したかったのです。 もちろん、すべてを手動で行うこともできますが、最初は怠で、2番目は数か月ではないにしても数週間かかります。 とにかく、私はプログラマーですか? このような気取らない推論で、プロセスを自動化する価値があるという結論に達しました。 自動化を実行する言語の問題は特に立っていませんでした。私は職場でC#を書いています。自宅にはVisual Studioの高速バージョンもあります。 不要なものを削除しないように、同じシャープとスタジオを使用してファイルのビットレートを調べる方法を見つけるだけです。 短命だが生産的なグーグルは、私を1つの素晴らしい図書館に連れて行った。



簡単な説明


そのため、ライブラリはTaglib-sharpと呼ばれ、その名前が示すように、メディアファイル(ビデオ、オーディオ、写真)のタグを使用するように設計されています。 このプロジェクトはオープンソースであり、LGPLライセンスの下で無料で配布されています。 ライブラリをダウンロードし(たとえば、 ここまたはここ から )、プロジェクトにリンクを追加し、TagLibを使用するように書き込みます。これで、開始する準備ができました。

以下は、タグから情報を取得する小さな例です。 この例は完全ではなく、残りはライブラリヘルプから簡単に見つけることができます。



//     .      . var audioFile = TagLib.File.Create(@"C:\Users\Ethiopian\Music\Feindbild.mp3"); //      Console.WriteLine(": {0}\n: {1}\n: {2}\n: {3}\n: {4}" , audioFile.Tag.Album , String.Join(", ", audioFile.Tag.Performers) , audioFile.Tag.Title , audioFile.Tag.Year , audioFile.Properties.Duration.ToString("mm\\:ss"));
      
      







上記のコードを実行した結果、コンソールは次のようになります。



 : Gotterdammerung : Megaherz : Feindbild : 2002 : 04:41
      
      







少なくとも、情報を取得する方法を学びました。それを使用するときです。



実用化


ライブラリで十分に遊んだら、元のタスクに戻りましょう。 そこで何をしたいのですか? うん! 低ビットレートのすべてのエントリを削除します。 そして、ここで、プロパティ.Properties.AudioBitrateは、私たちにとって理想的であり、シーンに登場します。 その上で不適切なファイルを取り除きます。

控えめな目的のために、通常のコンソールユーティリティで十分であり、パラメータとしてファイルを含むフォルダへのパスを渡し、すでにタグでファイルをレーキし、不要なものを削除します。 削除方法自体は次のようになりました。



 private static void RemoveBadAudio(string foldPath) { //     ,     . DirectoryInfo dir = new DirectoryInfo(foldPath); //         int deletedCounter = 0; int savedCounter = 0; //  mp3    foreach (FileInfo file in dir.GetFiles("*.mp3")) { //  if (TagLib.File.Create(file.FullName).Properties.AudioBitrate < 320) { file.Delete(); deletedCounter++; } else { savedCounter++; } } Console.WriteLine("\n\ : {0} \n : {1}", deletedCounter, savedCounter); }
      
      







さて、それでプログラムは機能し、タスクを実行します。 私はあなたにコードをあまり蹴らないようにお願いします、主な仕事はそれを素早く行い、「それが機能するようにする」ことでした



UPD:記事の公開後、友人から「サブディレクトリはどうですか?」というかなり重要な質問を受け取りました。

実際、元の方法は、指定されたディレクトリのルートにあるファイルでのみ機能します。 サブディレクトリのファイルをキャプチャするには、次の方法を使用できます。



 private static void RemoveBadFilesInSubDirectories(string foldPath) { DirectoryInfo parentDirectory = new DirectoryInfo(foldPath); foreach (DirectoryInfo dir in parentDirectory.GetDirectories()) { //      ,  . //   ,           ,   dir. } }
      
      







結論として


Taglib-sharpライブラリの使用方法の1つを検討し、同時に低品質のmp3録音から耳を保護しました。 もちろん、これがこのライブラリの唯一のアプリケーションではありません。 たとえば、タグによるファイル名の変更や、アーティストフォルダーによるファイルの並べ替えを自動化できます。 はい、多くのこと、主なことは、恐れることなく始めることです。 そして、シムに行きましょう。 またお会いしましょう。



All Articles