]> git.parisson.com Git - deefuzzer.git/commitdiff
Missing json import
authorachbed <github@achbed.org>
Wed, 19 Nov 2014 21:46:32 +0000 (15:46 -0600)
committerachbed <github@achbed.org>
Wed, 19 Nov 2014 21:46:32 +0000 (15:46 -0600)
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 <playlist> tag to feeds options (1=output,0=suppress,default=1)

Signed-off-by: achbed <github@achbed.org>
deefuzzer/station.py

index b9b181096d3198e7f4d620697b3a167c27608ee8..82f418b365e18a5d4a53fd84b4ed6a912b5ff04b 100644 (file)
@@ -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)