]> git.parisson.com Git - deefuzzer.git/commitdiff
get MP3 metadata and stream them into RSS
authorGuillaume Pellerin <yomguy@parisson.com>
Fri, 3 Apr 2009 21:48:50 +0000 (21:48 +0000)
committerGuillaume Pellerin <yomguy@parisson.com>
Fri, 3 Apr 2009 21:48:50 +0000 (21:48 +0000)
deefuzz.py
tools/mp3.py
tools/ogg.py
tools/tools.py

index 9a37314851ad858baaa3dd8d3765b560833a61e0..a4fd83c446dbd7e024c125e27a780d69fdabb73e 100755 (executable)
@@ -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
index 7b8c591d0cba21315fc364b4b500533b6a044205..fe5261ebd6b105e1ac3a09c7d7002a2f6aab2c0b 100644 (file)
@@ -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):
index b0fef85e38251f89109a4a18b3288fd33b5dd273..fed125e186ea512c7aa41901102420b3a86adfb7 100644 (file)
 
 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 = ''
index e2db650e1728733e071b6621ea8a627b211c41ee..c926436000b4708ed66ea4a712eb68e74fa8320d 100644 (file)
@@ -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