from threading import Thread
from tools import *
-version = '0.4'
+version = '0.3.5'
year = datetime.datetime.now().strftime("%Y")
platform_system = platform.system()
you should have received as part of this distribution. The terms
are also available at http://svn.parisson.org/deefuzzer/DeeFuzzerLicense
- depends : python, python-xml, python-shout, libshout3, icecast2
- recommends : python-mutagen
+ depends : python, python-xml, python-shout, libshout3, icecast2,
+ python-mutagen, python-twitter, python-tinyurl
provides : python-shout
Usage : deefuzzer $1
self.jingles_length = len(self.jingles_list)
self.jingle_id = 0
- def update_rss(self, media_list, rss_file, sub_title):
- rss_item_list = []
- if not os.path.exists(self.rss_dir):
- os.makedirs(self.rss_dir)
-
- channel_subtitle = self.channel.name + ' ' + sub_title
- _date_now = datetime.datetime.now()
- date_now = str(_date_now)
- media_absolute_playtime = _date_now
-
- for media in media_list:
- media_stats = os.stat(media.media)
- media_date = time.localtime(media_stats[8])
- media_date = time.strftime("%a, %d %b %Y %H:%M:%S +0200", media_date)
- media.metadata['Duration'] = str(media.length).split('.')[0]
- media.metadata['Bitrate'] = str(media.bitrate) + ' kbps'
- media.metadata['Next play'] = str(media_absolute_playtime).split('.')[0]
-
- media_description = '<table>'
- media_description_item = '<tr><td>%s: </td><td><b>%s</b></td></tr>'
- for key in media.metadata.keys():
- if media.metadata[key] != '':
- media_description += media_description_item % (key.capitalize(), media.metadata[key])
- media_description += '</table>'
-
- title = media.metadata['title']
- artist = media.metadata['artist']
- if not (title or artist):
- song = str(media.file_title)
- else:
- song = artist + ' : ' + title
-
- media_absolute_playtime += media.length
-
- if self.rss_enclosure == '1':
- media_link = self.channel.url + '/media/' + media.file_name
- media_link = media_link.decode('utf-8')
- rss_item_list.append(PyRSS2Gen.RSSItem(
- title = song,
- link = media_link,
- description = media_description,
- enclosure = PyRSS2Gen.Enclosure(media_link, str(media.size), 'audio/mpeg'),
- guid = PyRSS2Gen.Guid(media_link),
- pubDate = media_date,)
- )
- else:
- media_link = self.metadata_url + '/' + media.file_name + '.xml'
- media_link = media_link.decode('utf-8')
- rss_item_list.append(PyRSS2Gen.RSSItem(
- title = song,
- link = media_link,
- description = media_description,
- guid = PyRSS2Gen.Guid(media_link),
- pubDate = media_date,)
- )
-
- rss = PyRSS2Gen.RSS2(title = channel_subtitle,
- link = self.channel.url,
- description = self.channel.description.decode('utf-8'),
- lastBuildDate = date_now,
- items = rss_item_list,)
-
- f = open(rss_file, 'w')
- rss.write_xml(f, 'utf-8')
- f.close()
-
def get_playlist(self):
file_list = []
for root, dirs, files in os.walk(self.media_dir):
file_list.sort()
return file_list
- def update_twitter(self, message):
- if self.twitter_mode == '1':
- tags = '#' + ' #'.join(self.twitter_tags)
- message = message + ' ' + tags
- message = message[:113] + ' ' + self.tinyurl
- message = message.decode('utf8')
- self.logger.write('Twitting : "' + message + '"')
- self.twitter.post(message)
-
def get_next_media(self):
# Init playlist
if self.lp != 0:
lp_new = len(new_playlist)
if lp_new != self.lp or self.counter == 0:
+ # Init playlists
self.playlist = new_playlist
self.id = 0
self.lp = lp_new
self.logger.write(mess)
sys.exit(mess)
- def log_queue(self, it):
- self.logger.write('Station ' + self.short_name + ' eated one queue step: '+str(it))
-
def media_to_objs(self, media_list):
media_objs = []
for media in media_list:
elif file_ext.lower() == 'ogg':
media_objs.append(Ogg(media))
return media_objs
+ def update_rss(self, media_list, rss_file, sub_title):
+ rss_item_list = []
+ if not os.path.exists(self.rss_dir):
+ os.makedirs(self.rss_dir)
+
+ channel_subtitle = self.channel.name + ' ' + sub_title
+ _date_now = datetime.datetime.now()
+ date_now = str(_date_now)
+ media_absolute_playtime = _date_now
+
+ for media in media_list:
+ media_stats = os.stat(media.media)
+ media_date = time.localtime(media_stats[8])
+ media_date = time.strftime("%a, %d %b %Y %H:%M:%S +0200", media_date)
+ media.metadata['Duration'] = str(media.length).split('.')[0]
+ media.metadata['Bitrate'] = str(media.bitrate) + ' kbps'
+ media.metadata['Next play'] = str(media_absolute_playtime).split('.')[0]
+
+ media_description = '<table>'
+ media_description_item = '<tr><td>%s: </td><td><b>%s</b></td></tr>'
+ for key in media.metadata.keys():
+ if media.metadata[key] != '':
+ media_description += media_description_item % (key.capitalize(), media.metadata[key])
+ media_description += '</table>'
+
+ title = media.metadata['title']
+ artist = media.metadata['artist']
+ if not (title or artist):
+ song = str(media.file_title)
+ else:
+ song = artist + ' : ' + title
+
+ media_absolute_playtime += media.length
+
+ if self.rss_enclosure == '1':
+ media_link = self.channel.url + '/media/' + media.file_name
+ media_link = media_link.decode('utf-8')
+ rss_item_list.append(PyRSS2Gen.RSSItem(
+ title = song,
+ link = media_link,
+ description = media_description,
+ enclosure = PyRSS2Gen.Enclosure(media_link, str(media.size), 'audio/mpeg'),
+ guid = PyRSS2Gen.Guid(media_link),
+ pubDate = media_date,)
+ )
+ else:
+ media_link = self.metadata_url + '/' + media.file_name + '.xml'
+ media_link = media_link.decode('utf-8')
+ rss_item_list.append(PyRSS2Gen.RSSItem(
+ title = song,
+ link = media_link,
+ description = media_description,
+ guid = PyRSS2Gen.Guid(media_link),
+ pubDate = media_date,)
+ )
+
+ rss = PyRSS2Gen.RSS2(title = channel_subtitle,
+ link = self.channel.url,
+ description = self.channel.description.decode('utf-8'),
+ lastBuildDate = date_now,
+ items = rss_item_list,)
+
+ f = open(rss_file, 'w')
+ rss.write_xml(f, 'utf-8')
+ f.close()
+
+ def update_twitter(self, message):
+ if self.twitter_mode == '1':
+ tags = '#' + ' #'.join(self.twitter_tags)
+ message = message + ' ' + tags
+ message = message[:113] + ' ' + self.tinyurl
+ message = message.decode('utf8')
+ self.logger.write('Twitting : "' + message + '"')
+ self.twitter.post(message)
def core_process_stream(self, media):
"""Read media and stream data through a generator.