{"id":58,"date":"2005-08-30T15:28:55","date_gmt":"2005-08-30T15:28:55","guid":{"rendered":"http:\/\/www.reactivated.net\/weblog\/?p=58"},"modified":"2005-08-30T15:31:48","modified_gmt":"2005-08-30T15:31:48","slug":"entagged-sharp-in-beagle","status":"publish","type":"post","link":"https:\/\/www.reactivated.net\/weblog\/archives\/2005\/08\/entagged-sharp-in-beagle\/","title":{"rendered":"entagged-sharp in Beagle"},"content":{"rendered":"<p>I&#8217;ve recently been hacking on <a href=\"http:\/\/svn.myrealbox.com\/viewcvs\/trunk\/entagged-sharp\/\">entagged-sharp<\/a>, a C# library for extracting tags from audio files. This is used in <a href=\"http:\/\/banshee-project.org\/index.php\/Main_Page\">Banshee<\/a>, <a href=\"http:\/\/muine.gooeylinux.org\/\">Muine<\/a>, and probably some other projects too.<\/p>\n<p>It provides a nice simplistic interface for extracting tags, e.g.:<\/p>\n<blockquote><p><code>AudioFileWrapper afw = new AudioFileWrapper(\"\/path\/to\/audio.file\");<br \/>\nConsole.WriteLine(\"{0} - {1}\", afw.Artist, afw.Title);<\/code><\/p><\/blockquote>\n<p>&#8230;and this will &#8220;just work&#8221; for all of the audio file formats that are supported.<\/p>\n<p>I worked on extending the AudioFileWrapper interface, reducing internal abstraction, MIME support, unit tests, bug fixing, and adding Amiga module audio file support. ASF\/WMA tag filtering is coming soon.<\/p>\n<p>entagged-sharp has now been imported into Beagle CVS, replacing the filtering code we had previously. This pretty much closed all the audio-filtering bugs that we had, and added support for more formats (m4a, m4p, xm, sm, it, mod). Hopefully nothing broke at the same time :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve recently been hacking on entagged-sharp, a C# library for extracting tags from audio files. This is used in Banshee, Muine, and probably some other projects too. It provides a nice simplistic interface for extracting tags, e.g.: AudioFileWrapper afw = new AudioFileWrapper(&#8220;\/path\/to\/audio.file&#8221;); Console.WriteLine(&#8220;{0} &#8211; {1}&#8221;, afw.Artist, afw.Title); &#8230;and this will &#8220;just work&#8221; for all of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,1],"tags":[],"class_list":["post-58","post","type-post","status-publish","format-standard","hentry","category-beagle","category-gentoo"],"_links":{"self":[{"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":0,"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/posts\/58\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/media?parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/categories?post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reactivated.net\/weblog\/wp-json\/wp\/v2\/tags?post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}