From: achbed Date: Wed, 19 Nov 2014 21:46:32 +0000 (-0600) Subject: Missing json import X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=8d8920f21cf03c271cfff3988e8b77d696f0053c;p=deefuzzer.git Missing json import Moved handling of rss_mode to within the update_rss function Renamed rss_* variables to feeds_* Renamed feed_* variables to feeds_* Renamed update_rss to update_feeds Fixed feeds_mode to have a default of 1 (enabled) Fixed issue where playlist feeds were not created at start time Added ability to disable playlist feed output Added tag to feeds options (1=output,0=suppress,default=1) Signed-off-by: achbed --- diff --git a/deefuzzer/station.py b/deefuzzer/station.py index b9b1810..82f418b 100644 --- a/deefuzzer/station.py +++ b/deefuzzer/station.py @@ -45,6 +45,7 @@ import random import shout import urllib import mimetypes +import json from threading import Thread from player import * @@ -72,8 +73,10 @@ class Station(Thread): record_mode = 0 run_mode = 1 station_dir = None - feed_json = 0 - feed_rss = 1 + feeds_json = 0 + feeds_rss = 1 + feeds_mode = 1 + feeds_playlist = 1 def __init__(self, station, q, logger, m3u): Thread.__init__(self) @@ -147,34 +150,29 @@ class Station(Thread): self.channel_url = self.server_url + self.channel.mount # RSS - rss_options = {} - if 'feed' in self.station: - rss_options['rss'] = self.station['feed'] - elif 'rss' in self.station: - rss_options['rss'] = self.station['rss'] - - self.rss_media_url = self.channel.url + '/media/' - - if 'rss' in rss_options: - if 'mode' in rss_options['rss']: - self.rss_mode = int(rss_options['rss']['mode']) - else: - self.rss_mode = 0 - self.rss_dir = rss_options['rss']['dir'] - self.rss_enclosure = int(rss_options['rss']['enclosure']) - if 'json' in rss_options['rss']: - self.feed_json = int(rss_options['rss']['json']) - if 'rss' in rss_options['rss']: - self.feed_rss = int(rss_options['rss']['rss']) - - if 'media_url' in rss_options['rss']: - self.rss_media_url = rss_options['rss']['media_url'] - if not self.rss_media_url: - self.rss_media_url = self.channel.url + '/media/' - - self.base_name = self.rss_dir + os.sep + self.short_name + '_' + self.channel.format - self.rss_current_file = self.base_name + '_current.xml' - self.rss_playlist_file = self.base_name + '_playlist.xml' + if 'feeds' in self.station: + self.station['rss'] = self.station['feeds'] + + if 'rss' in self.station: + if 'mode' in self.station['rss']: + self.feeds_mode = int(self.station['rss']['mode']) + self.feeds_dir = self.station['rss']['dir'] + self.feeds_enclosure = int(self.station['rss']['enclosure']) + if 'json' in self.station['rss']: + self.feeds_json = int(self.station['rss']['json']) + if 'rss' in self.station['rss']: + self.feeds_rss = int(self.station['rss']['rss']) + if 'playlist' in self.station['rss']: + self.feeds_playlist = int(self.station['rss']['playlist']) + + self.feeds_media_url = self.channel.url + '/media/' + if 'media_url' in self.station['rss']: + if self.station['rss']['media_url']: + self.feeds_media_url = self.station['rss']['media_url'] + + self.base_name = self.feeds_dir + os.sep + self.short_name + '_' + self.channel.format + self.feeds_current_file = self.base_name + '_current.xml' + self.feeds_playlist_file = self.base_name + '_playlist.xml' # Logging self.logger.write_info('Opening ' + self.short_name + ' - ' + self.channel.name + \ @@ -182,7 +180,7 @@ class Station(Thread): self.metadata_relative_dir = 'metadata' self.metadata_url = self.channel.url + '/rss/' + self.metadata_relative_dir - self.metadata_dir = self.rss_dir + os.sep + self.metadata_relative_dir + self.metadata_dir = self.feeds_dir + os.sep + self.metadata_relative_dir if not os.path.exists(self.metadata_dir): os.makedirs(self.metadata_dir) @@ -286,7 +284,7 @@ class Station(Thread): message = "Station " + self.channel_url + \ " : received OSC message '%s' with arguments '%d'" % (path, value) self.m3u_url = self.channel.url + '/m3u/' + self.m3u.split(os.sep)[-1] - self.rss_url = self.channel.url + '/rss/' + self.rss_playlist_file.split(os.sep)[-1] + self.feeds_url = self.channel.url + '/rss/' + self.feeds_playlist_file.split(os.sep)[-1] self.logger.write_info(message) def jingles_callback(self, path, value): @@ -390,7 +388,7 @@ class Station(Thread): artist_tags = ' #'.join(list(set(artist_names)-set(['&', '-']))) message = '#NEWTRACK ! %s #%s on #%s RSS: ' % \ (song.replace('_', ' '), artist_tags, self.short_name) - message = message[:113] + self.rss_url + message = message[:113] + self.feeds_url self.update_twitter(message) def get_next_media(self): @@ -412,6 +410,8 @@ class Station(Thread): self.logger.write_info('Station ' + self.channel_url + \ ' : generating new playlist (' + str(self.lp) + ' tracks)') + if self.feeds_playlist: + self.update_feeds(self.media_to_objs(self.playlist), self.feeds_playlist_file, '(playlist)') elif lp_new != self.lp: self.id = 0 @@ -439,9 +439,8 @@ class Station(Thread): self.logger.write_info('Station ' + self.channel_url + \ ' : generating new playlist (' + str(self.lp) + ' tracks)') - if self.rss_mode: - self.update_rss(self.media_to_objs(self.playlist), - self.rss_playlist_file, '(playlist)') + if self.feeds_playlist: + self.update_feeds(self.media_to_objs(self.playlist), self.feeds_playlist_file, '(playlist)') if self.jingles_mode and not (self.counter % 2) and self.jingles_length: media = self.jingles_list[self.jingle_id] @@ -476,10 +475,13 @@ class Station(Thread): continue return media_objs - def update_rss(self, media_list, rss_file, sub_title): + def update_feeds(self, media_list, rss_file, sub_title): + if not self.feeds_mode: + return + rss_item_list = [] - if not os.path.exists(self.rss_dir): - os.makedirs(self.rss_dir) + if not os.path.exists(self.feeds_dir): + os.makedirs(self.feeds_dir) channel_subtitle = self.channel.name + ' ' + sub_title _date_now = datetime.datetime.now() date_now = str(_date_now) @@ -513,8 +515,8 @@ class Station(Thread): media_absolute_playtime += media.length - if self.rss_enclosure == '1': - media_link = self.rss_media_url + media.file_name + if self.feeds_enclosure == '1': + media_link = self.feeds_media_url + media.file_name media_link = media_link.decode('utf-8') rss_item_list.append(RSSItem( title = song, @@ -545,15 +547,15 @@ class Station(Thread): lastBuildDate = date_now, items = rss_item_list,) - if self.feed_rss: + if self.feeds_rss: f = open(rss_file, 'w') rss.write_xml(f, 'utf-8') f.close() - if self.feed_json: + if self.feeds_json: path, fn = os.path.split(rss_file) base, ext = os.path.splitext(fn) - json_file = os.path.join(self.rss_dir, base + '.json') + json_file = os.path.join(self.feeds_dir, base + '.json') f = open(json_file, 'w') f.write(json.dumps(json_data, separators=(',',':'))) f.close() @@ -603,8 +605,7 @@ class Station(Thread): self.song = song.encode('utf-8') self.artist = self.artist.encode('utf-8') self.metadata_file = self.metadata_dir + os.sep + self.current_media_obj[0].file_name + '.xml' - if self.rss_mode: - self.update_rss(self.current_media_obj, self.rss_current_file, '(currently playing)') + self.update_feeds(self.current_media_obj, self.feeds_current_file, '(currently playing)') self.logger.write_info('DeeFuzzing on %s : id = %s, name = %s' \ % (self.short_name, self.id, self.current_media_obj[0].file_name)) self.player.set_media(self.media)