From: Guillaume Pellerin Date: Thu, 16 Apr 2009 02:10:10 +0000 (+0000) Subject: fix song title for null metadata, got 16 stable deefuzzing threads (105 tracks each... X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=6dd7d6607273cdf0b2a202e660c120acc7d0dc1f;p=deefuzzer.git fix song title for null metadata, got 16 stable deefuzzing threads (105 tracks each), so FAST !! :) --- diff --git a/deefuzz.py b/deefuzz.py index caf648f..f7bc814 100755 --- a/deefuzz.py +++ b/deefuzz.py @@ -249,9 +249,16 @@ class Station(Thread): media_date = time.localtime(media_stats[8]) media_date = time.strftime("%a, %d %b %Y %H:%M:%S +0000", media_date) + title = media.metadata['title'] + artist = media.metadata['artist'] + if not (title or artist): + song = str(media.file_name) + else: + song = str(artist) + ' : ' + str(title) + if self.rss_enclosure == '1': rss_item_list.append(PyRSS2Gen.RSSItem( - title = media.metadata['artist'] + ' : ' + media.metadata['title'], + title = song, link = media_link, description = media_description, enclosure = PyRSS2Gen.Enclosure(media_link, str(media.size), 'audio/mpeg'), @@ -260,7 +267,7 @@ class Station(Thread): ) else: rss_item_list.append(PyRSS2Gen.RSSItem( - title = media.metadata['artist'] + ' : ' + media.metadata['title'], + title = song, link = media_link, description = media_description, guid = PyRSS2Gen.Guid(media_link), @@ -314,23 +321,13 @@ class Station(Thread): def media_to_objs(self, media_list): media_objs = [] for media in media_list: - file_name, file_title, file_ext = self.get_file_info(media) + file_name, file_title, file_ext = get_file_info(media) if file_ext.lower() == 'mp3': media_objs.append(Mp3(media)) elif file_ext.lower() == 'ogg': media_objs.append(Ogg(media)) return media_objs - def get_file_info(self, media): - file_name = media.split(os.sep)[-1] - file_title = file_name.split('.')[:-2] - try: - file_title = file_title[0] - except: - pass - file_ext = file_name.split('.')[-1] - return file_name, file_title, file_ext - def core_process_stream(self, media): """Read media and stream data through a generator. Taken from Telemeta (see http://telemeta.org)""" @@ -375,27 +372,28 @@ class Station(Thread): break media = self.get_next_media() self.counter += 1 - q.task_done() it = q.get(1) if os.path.exists(media) and not os.sep+'.' in media: - file_name, file_title, file_ext = self.get_file_info(media) try: self.current_media_obj = self.media_to_objs([media]) except: self.logger.write('Error : Station ' + self.short_name + ' : ' + media + 'not found !') break + title = self.current_media_obj[0].metadata['title'] artist = self.current_media_obj[0].metadata['artist'] if not (title or artist): - song = str(file_title) + song = str(self.current_media_obj.file_name) else: song = str(artist) + ' : ' + str(title) + self.channel.set_metadata({'song': song}) self.update_rss(self.current_media_obj, self.rss_current_file) self.logger.write('DeeFuzzing this file on %s : id = %s, index = %s, name = %s' \ - % (self.short_name, self.id, self.index_list[self.id], file_name)) + % (self.short_name, self.id, self.index_list[self.id], self.current_media_obj[0].file_name)) + stream = self.core_process_read(media) q.task_done() diff --git a/tools/mp3.py b/tools/mp3.py index c82ca93..c1beb5d 100644 --- a/tools/mp3.py +++ b/tools/mp3.py @@ -40,6 +40,7 @@ import os import string from mutagen.easyid3 import EasyID3 from mutagen.mp3 import MP3 +from tools import * EasyID3.valid_keys["comment"]="COMM::'XXX'" @@ -63,9 +64,9 @@ class Mp3: self.metadata = self.get_file_metadata() self.description = self.get_description() self.mime_type = self.get_mime_type() + self.file_name, self.file_title, self.file_ext = get_file_info(self.media) 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): @@ -140,4 +141,3 @@ class Mp3: args.append('"' + value + '"') return args - diff --git a/tools/tools.py b/tools/tools.py index c926436..6349d4b 100644 --- a/tools/tools.py +++ b/tools/tools.py @@ -12,11 +12,7 @@ import os import re -import sys -import time -import datetime import string -import random def clean_word(word) : """ Return the word without excessive blank spaces, underscores and @@ -31,3 +27,13 @@ def clean_word(word) : for letter in dict: word = string.replace(word,letter,'_') return word + +def get_file_info(media): + file_name = media.split(os.sep)[-1] + file_title = file_name.split('.')[:-2] + try: + file_title = file_title[0] + except: + pass + file_ext = file_name.split('.')[-1] + return file_name, file_title, file_ext