From: Guillaume Pellerin Date: Fri, 3 Apr 2009 21:48:50 +0000 (+0000) Subject: get MP3 metadata and stream them into RSS X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=9884c2ba875d7c92ca28ef0795af930f358b5bac;p=deefuzzer.git get MP3 metadata and stream them into RSS --- diff --git a/deefuzz.py b/deefuzz.py index 9a37314..a4fd83c 100755 --- a/deefuzz.py +++ b/deefuzz.py @@ -21,7 +21,6 @@ import shout import subprocess from tools import * from threading import Thread -from mutagen.oggvorbis import OggVorbis version = '0.2.3' year = datetime.datetime.now().strftime("%Y") @@ -188,9 +187,9 @@ class Station(Thread): - def update_rss(self, file_name): - media_size = os.path.getsize(self.media_dir + os.sep + file_name) - media_link = self.channel.url + self.media_url_dir + file_name + def update_rss(self, media_obj): + media_size = media_obj.size + media_link = self.channel.url + self.media_url_dir + media_obj.file_name rss = PyRSS2Gen.RSS2( title = self.channel.name, link = self.channel.url, @@ -199,9 +198,12 @@ class Station(Thread): items = [ PyRSS2Gen.RSSItem( - title = file_name.split('.')[-2], + title = media_obj.metadata['artist'] + ' : ' + media_obj.metadata['title'], link = media_link, - description = file_name, + description = 'Album: ' + media_obj.metadata['album'] + + ', Date:' + media_obj.metadata['date'] + + ', Genre:' + media_obj.metadata['genre'] + + ', Comment:' + media_obj.metadata['comment'], enclosure = PyRSS2Gen.Enclosure(media_link, str(media_size), 'audio/mpeg'), guid = PyRSS2Gen.Guid(media_link), pubDate = datetime.datetime.now()), @@ -285,15 +287,24 @@ class Station(Thread): else: self.playlist, media = self.get_next_media_lin(self.playlist) self.counter += 1 + + file_name = media.split(os.sep)[-1] + file_title = file_name.split('.')[-2] + file_ext = file_name.split('.')[-1] + + if file_ext.lower() == 'mp3': + media_obj = Mp3(media) + elif file_ext.lower() == 'ogg': + media_obj = Ogg(media) + q.task_done() #self.log_queue(it) if os.path.exists(media) and not os.sep+'.' in media: it = q.get(1) - file_name = media.split(os.sep)[-1] - file_title = file_name.split('.')[-2] - self.channel.set_metadata({'song': file_title}) - self.update_rss(file_name) + title = media_obj.metadata['title'] + self.channel.set_metadata({'song': str(title)}) + self.update_rss(media_obj) print 'DeeFuzzing this file on %s : id = %s, name = %s' % (self.short_name, self.id, file_name) stream = self.core_process(media) q.task_done() @@ -309,6 +320,7 @@ class Station(Thread): self.channel.close() + def main(): if len(sys.argv) == 2: print "DeeFuzz v"+version diff --git a/tools/mp3.py b/tools/mp3.py index 7b8c591..fe5261e 100644 --- a/tools/mp3.py +++ b/tools/mp3.py @@ -37,6 +37,8 @@ class Mp3: self.description = self.get_description() self.mime_type = self.get_mime_type() self.extension = self.get_file_extension() + self.size = os.path.getsize(media) + self.file_name = media.split(os.sep)[-1] #self.args = self.get_args() def get_format(self): @@ -50,7 +52,7 @@ class Mp3: def get_description(self): return "MPEG audio Layer III" - + def get_metadata(self): m = MP3(self.media, ID3=EasyID3) metadata = {} @@ -58,7 +60,7 @@ class Mp3: try: metadata[key] = m[key][0] except: - pass + metadata[key] = '' return metadata def decode(self): diff --git a/tools/ogg.py b/tools/ogg.py index b0fef85..fed125e 100644 --- a/tools/ogg.py +++ b/tools/ogg.py @@ -12,18 +12,12 @@ import os import string -import subprocess - -from telemeta.export.core import * -from telemeta.export.api import IExporter from mutagen.oggvorbis import OggVorbis -class OggExporter(ExporterCore): +class Ogg: """Defines methods to export to OGG Vorbis""" - - implements(IExporter) - def __init__(self): + def __init__(self, media): self.item_id = '' self.metadata = {} self.description = '' diff --git a/tools/tools.py b/tools/tools.py index e2db650..c926436 100644 --- a/tools/tools.py +++ b/tools/tools.py @@ -30,4 +30,4 @@ def clean_word(word) : dict = '&[];"*:,' for letter in dict: word = string.replace(word,letter,'_') - return word \ No newline at end of file + return word