achbed [Mon, 26 Jan 2015 23:41:42 +0000 (17:41 -0600)]
Lots of style fixes
Also:
Fixes for a few "using unset variable" cases
Began removing calls to .has_key() (depreciated)
Fixed reference issue on raiseErrors flag (should have been self.raiseErrors)
achbed [Sat, 24 Jan 2015 07:54:41 +0000 (01:54 -0600)]
Updates for relative paths
Added base_dir parameter to station definition (issue #10)
Added default station short_name to auto-created stations
Removed previously-mandatory tags from example XML config stationfolder tag
achbed [Tue, 20 Jan 2015 00:16:59 +0000 (18:16 -0600)]
Changes based on ChoiZ's mode_playing branch
Station: media.dir now overrides media.m3u if both are specified and non-blank
Station: Noted media.m3u and media.dir options as depreciated (uses them if present for smooth upgrade path)
Station: Combine media.m3u and media.dir options into one new media.source option
Station: media.source is now checked to see if it's a file or folder at load time, and playlist or folder list mode is selected automatically
Core: Updated to reflect new source setting when using station autocreation
achbed [Mon, 19 Jan 2015 22:58:29 +0000 (16:58 -0600)]
Additional logging when a station was found stopped and will never be restarted
Better description in logging station initialization errors
Internal station name and status filenames will no longer be regenerated on restart
Move thread execution detection into create loop (as we can't restart dead threads)
Altered create loop to run all the time (instead of only at station creation)
Fixed issue where streams would not be closed if an error occurred in playlist advancement
Fixed issue where saved playlist position could result in an index overflow
Added maxretry value (determines how many times to attempt a station thread restart)
Fixed minor documentation things
achbed [Sun, 11 Jan 2015 22:58:34 +0000 (16:58 -0600)]
Move thread execution detection into create loop (as we can't restart dead threads)
Altered create loop to run all the time (instead of only at station creation)
Fixed issue where streams would not be closed if an error occurred in playlist advancement
Fixed issue where saved playlist position could result in an index overflow
Added maxretry value (determines how many times to attempt a station thread restart)
Fixed minor documentation things
achbed [Fri, 12 Dec 2014 22:19:03 +0000 (16:19 -0600)]
BUG: a few logging functions were called incorrectly in station.py
FEATURE: Added option (ignoreerrors) to log and continue when an error occurs during station setup
achbed [Wed, 3 Dec 2014 15:16:09 +0000 (09:16 -0600)]
Split try block for exporting the different feed types (so failure on one doesn't block the other)
Converted the Producer to put a static True value on the queue instead (prevent possible overflow)
Add jingles:frequency option
Now resets counter to prevent eventual overflow
Add saving of status file to record current position
Add reading of status file on station init to restart where it left off
Reset the counter when incremented to prevent overflows
When a new playlist is detected (ie, songs added/removed) playback attempts to keep going instead of restarting
achbed [Mon, 1 Dec 2014 06:37:45 +0000 (00:37 -0600)]
Revised crashed station detection
Added main loop in station to allow remote commands to restart playback after stopping
Added livecreation option to enable.disable watchfolder mode
Added fix for newly created stations not starting
Cleaned up a missed queue unlock instance
achbed [Mon, 1 Dec 2014 00:26:06 +0000 (18:26 -0600)]
Added new QueueLogger class (logging from a queue so we can do thread-safe logging)
Moved core and station to new common log functions (_info and _err) using new QueueLogger
Core now attempts to restart stations that stop
Core now detects new folders on the fly instead of only at start time (stationfolder option)
Station.py has a lot of changes to utilize the common blocking queue only when needed rather than at every step (may increase performance with many stations)
TODO:
Detect proper vs unexpected shutdown of stations and restart only unexpected ones
Make new folder detection for stationfolder an option
achbed [Fri, 28 Nov 2014 20:27:22 +0000 (14:27 -0600)]
Refactored main icecast loop for readability
Added additional error handling in main icecast loop
Added additional error handling to icecast chunk send loop
achbed [Sat, 22 Nov 2014 04:57:24 +0000 (22:57 -0600)]
Added new station.feeds.showfilename option that includes the media file name in the feed
Added new station.feeds.showfilepath option that includes the server path to the media file in the feed
achbed [Fri, 21 Nov 2014 04:36:52 +0000 (22:36 -0600)]
Added documentation
Revised init handling of preferences for consistency
Fixed issue where some boolean flags (ie, modes) were not being handled properly
achbed [Thu, 20 Nov 2014 05:58:38 +0000 (23:58 -0600)]
Core fix for inconsistent list object for station preferences
Added stationdefaults preference (apply default settings to all stations)
Added stationfolder preference (generate stations automagically from a folder structure)
Added stationconfig preference (load other preference files as stations)
Moved get_conf_dict to utils.py
Added documentation for the stationdefaults preference
Added documentation for the stationfolder and stationconfig preferences (deefuzzer_doc.xml only)
achbed [Thu, 20 Nov 2014 04:52:32 +0000 (22:52 -0600)]
Added stationdefaults parameter (provides a mechanism to give default values for all stations)
New merge_defaults function in utils.py - combines two dict objects recursively
achbed [Wed, 19 Nov 2014 21:46:32 +0000 (15:46 -0600)]
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 <playlist> tag to feeds options (1=output,0=suppress,default=1)
achbed [Wed, 19 Nov 2014 20:48:19 +0000 (14:48 -0600)]
Added ability to export json data as well as RSS feeds
Added ability to selectively enable/disable json or RSS output
Renamed <rss> tag to <feed>
RSS reads from <rss> tag if no <feed> tag is present (for backwards compatibility)