2.2.0 (2016-12-31) * Adds new plugins for RCast, Streema, vTuner2, Liveradio.ie, RadioSure, house-mixes, and Reciva. * Feature extensions include the Cache Reset, Config import/export, Gtk theme setting and installer, and Specbuttons for custom shortcuts, and script stations. * Live365, di.fm and WindowsMediaGuide are gone. * Marks the first release with thorough Windows support, and comes with a Python+Gtk post-installer and additional tools for the SFX archive. Comes with a CHM manual version instead. * Many typos and stale infos in the manual have been remedied, more details on contrib plugins and station status icons (reddit, dirble, etc), and stream $placeholders have been documented. * Internet-Radio now supports the search, its DOM extraction was updated. * Other fixes encompass the file browser, MODarchive categories, Radio-Browser submit function, Radionomy icon sizes, ... * Reddit and Record-stop are now distributed plugins. * Channels can easier hook new content types and extractors in the action module, the .QTL export format was added, better cross-platform quoting and a multi-URL workaround added. * Better channel refresh indication, and colorized status bar. * Plugin management has been extended, and a few fixes and option safeguards applied, support for table/dict settings. * Other internal changes include plugin init2() callbacks, a secret `conf.cmd` option, "rt" open flag fixes, new unichr() alias, a cmd= flag for run_fmt_url() 2.1.9 (2015-05-25) * Overhaul favicon/banner module, support instant icon display updates, simpler cache filenames, rescaling, implicit sanitizing, less coupling. * Add radio.net channel. * Add di.fm/sky.fm/jazzradio as contrib plugin. * Add basic Magnatune channel. * Add ListenLive contrib plugin. * Add reddit channel plugin, and optional support for converting Soundcloud links to streamable addresses. * Add WindowsMediaGuide plugin and fix ASX extraction. * More Python3 fixes. * More forced UTF-8 decoding to speed downloading up. * Crash fixes for server search. * Fix for stream url conversion for MyOggRadio plugin. * Add bitrate filter plugin to apply on all channels. * Remove iTunes plugin. * Fix Dirble channel fetching, add weighted bitrate+format selection. * Add channel homepage title+link in toolbar (like in streamtuner1). * More internal simplifications and rewrites, externalized pluginconf. * Compact main settings list, introduce SpinButtons for integers. * Update documentation, add project links, slim down images. * Introduce 0install package using PYZ bundle. 2.1.8 (2015-05-05) * New channel plugins for Radionomy.com, Filtermusic.net, Delicast.com. * Added Dirble channel again, using new API. * Removed iCast plugin. Removed 8tracks plugin. * Brought back Xiph XML extraction, and added direct website extraction, in addition to JSON cache mode. * Add TV list for UbuntuUsers channel. * Introduction of User Plugin Manager and channel module updating, automatic plugin activation, contrib plugins: PublicRadioFan, GLRP. * Change Youtube plugin to use only v3 API henceforth. * Minor fixes to action/playlist extraction, add specific JAMJ extractor. * Update manual on new channel/feature plugins. * Separated config and pluginconf modules. * Fixes to contrib/ plugins: compound, file, punkcast. * Scroll back to last category on initialization, simplified window and state storage. * Some Gtk3 fixes, catch invalid favicons while updating columns, another fix for search function. * Better inline documentation for player configuration, more thorough program binary detection. Simplified channel parsing utility code, added @use_rx decorator. And a few more internal cleanups. * Add new configuration dialog group for Playlist processing. * Experimental new package for Arch Linux / pacman. 2.1.7 (2015-04-26) - Experimental support for drag and drop, which allows playback, importing, or exporting stations from/to files. - Configuration dialog became more clearly arranged by separating channels and feature plugins. - More manual examples on recording configuration added. - Several enhancements to playlist conversion, support for .desktop links, better heuristics, and working url+title extraction. - All MOD files use generic audio/mod+zip MIME type. - Use new and distinct /tmp/streamtuner2/ directory for cache+export. - Implemented hashing for cached m3u/pls files. - Support "feeds" stream in Jamendo, more complete Ogg Vorbis support and JAMJSON extraction instead of using old v2 API. - Initial startup and application state restoration became more robust, active category is tracked more dynamically. - Some internal simplifications and code cleanup (logging simplified, more uikit wrappers for Gtk3, removed outdated PIL workaround, cleanup up remnant module descriptions). - Statusbar is just a plain text label, automatically emptied. - Disable partial stream refreshing, and threading per --nt flag or config option, because Gtk3 support is still flaky. Let gtk_idle callbacks run in order through an internal precedence spool. - Browser invocations corrected. - Crash in cache search fixed. - PYZ building now supported by xpm and Packfile for custom adaptions. 2.1.6 (2015-04-13) * The action module has been completely restructured. It now supports playlist rewriting, better heuristics, XSPF, JSPF, ASX, SMIL formats. * Along with that a category playlist export function was bundled, and the Save-As dialog reworked. * A new SomaFM channel was bundled, and user agent switcher plugin added. * Fixes for the bookmarks channel, cache search, plugin lookup code were applied. * Startup is faster again, but plugins now initialize on selection first. Which makes the category association exacter after restarts. * More code cleanup and restructuring, GUI updates, command line flag handling. Still a beta release. 2.1.5 (2015-04-05) - This is a beta release, with lots of cleanups and various bugfixes. - Adds a self-contained PYZ package, which Python can run directly. - Now fully utilizes the plugin meta data scheme for default settings, discovery, and to reduce internal complexity. - A new channel plugin for "Radio-Browser.info" has been bundled. - Another plugin for interfacing with "RadioTray" was introduced, to share bookmarks via DBUS once RadioTray implements it. - Notebook tabs are now on the left per default, and can be rearranged directly in the GUI. - The configuration dialog now indicates the availability of selected audio players. Default audio players are now automatically configured during the first startup. - Gtk properties are now utilized more over internal UI state vars. - The the GtkBuilder UI file is now compressed, the Gtk2 fallback removed. - The former channel icon PNGs are now embedded. - Theme configuration was removed. - Category retrieval became more resilient. - HTTP timeouts have been added. - The bookmarks tab, settings window, search dialog, stream inspector/editor have been externalized into plugins; yet remain core features. - The packaging layout has been slightly restructured - to support relocatable installations (for PyZIP package). - Minor fixes to youtube, internet_radio, punkcast, timer and other plugins. - Help pages have been updated further, as well as CREDITS, README and general PACKAGING infos, and most plugin short descriptions. - The project wiki now contains a more details on plugin APIs. 2.1.4 (2015-03-25) - Fixed Internet-Radio extraction. - Added basic TuneIn channel. - Removed Dirble and MusicGoal channels. - Fix desktop and packaging infos according to Debian guidelines. - Switch to fpm/xml for package building. - Remove bundled requests library. - Update icon and fix path to application logo. - Minor documentation updates. 2.1.3 (2014-08-15) - New plugin for Dirble.com introduced. - Channel tabs can now be rearranged from notebook top to left side. - Live365 was fixed again. - Xiph cache service was fixed, and duplicates are now filtered out. - Category map storage is now handled by backend instead of channels. - Shorter Youtube homepage URLs are used, HTTP headers compacted. 2.1.2 (2014-07-31) - Listing from the renewed Radionomy Shoutcast has been fixed. - Live365 was disabled. - New iTunes Radio stations channel (via RoliSoft Radio Playlist API). - New channel module "iCast.io" as seen in VLC. - SurfMusic.de is now available in a localized English display. - Shorter Youtube URLs are now used, Wadsworth constant available. - MyOggRadio.org API interaction fixed. - Fixed cache search to copy results before overwriting category. - Slim new search dialog offers scanning all channels or just current. - More online music service links have been added. - Better post-extraction cleanup. 2.1.1 (2014-05-28) - Added SurfMusik and Youtube plugin channels. Google/DMOZ removed. - Jamendo viewing now utilizes the v3.0 JSON API for genres/tracks and uses cover images instead of favicons. - A new logo was introduced. - The reworked configuration dialog now provides editable lists for player and recording apps configuration, a more descriptive options pane, a better overview for enabled and available plugins (with fresh meta comment blocks), and dropdowns instead of text-fields are used. - Internet-Radio parsing was fixed, a workaround for absent titles added. Shoutcast also alternates between DOM and Regex fetching. - For Xiph browsing a custom caching API was introduced. - Status bar / download progress display was fixed. - A history plugin was added. And extension hooks{} support started. - Some more Python3 fixes applied. Documentation was adapted. 2.1.0 (2014-04-28) - support for running on Python3 or Python2, as well as Gtk3 (PyGI) and Gtk2 (PyGtk with Python2) bindings - fixed Shoutcast, DMOZ, Live365 - while Jamendo now lists radios only - removal of basic.ch and tv channels - include requests+urllib3 in favour of urllib+urllib2 - some manual pages have been updated - drop PSON and only use plain json module henceforth - new bundle/ directory, but pyquery/lxml dropped - colorized debugging output - uninitialized channels are no longer attached as tabs - absent liststore references have finally been fixed 2.0.9 (2014-01-05) - sys.path patch (less py module conflicts) from Stefan Talpalaru - fixed main_quit signal slot, so window size saving works - added [new] button in streamedit window - prepared remaining print syntax for python3 (still needs 2to3 though) - fix for https://bugzilla.redhat.com/show_bug.cgi?id=655596 array error - transitioned glade file to gtk.Builder, just a few things broke - made configuration window resizable - locked station list columns, no longer resortable (associatation mismatch) - applied Vincents fixed for Windows action.run and Shoutcast PQ parsing - live365 parsing restored by patch from Abhisek Sanyal - fix Pixbuf typecasing in mygtk liststore appending 2.0.8.7 (unreleased) - Development 2.0.8.5 (unreleased) - Development 2.0.8.2 (unreleased) - Bugfixes 2.0.8 (2010-09-03) - configuration files use prettified json - fixed double quotation for %pls players and /local/file handling - (unused) channel .shutdown function introduced (late saving) - external plugin: basic file browser, no ID3 editing yet - allow interpolating of %genre and other fields, streamripper wrapper - fixed pyQuery parsing for latest shoutcast change (strangely the regular expressions were still working) 2.0.7 (2010-08-12) - json cache files are now stored .gz compressed - xiph channel .format() call fixed into .mime_fmt() - simplified __init__ and attributes of main window object - .play() is now a per-channel function - global_key now accepts multiple keys, updates gtk view - new musicgoal plugin with radios and podcasts - silenced channel initialization errors - double clicking tabs is functioning now (-> channel service homepage) - shoutcast finally became a real channel plugin - processing.py pseudo module removed 2.0.6 (2010-07-31) - mirrored Station>Extensions menu into stream context menu - creation of .nobackup files in cache/ and icons/ directories - global_key plugin allows radio switching via keyboard shortcut - compound channel plugin is new, mixes different source channels - new external plugin: podspider - more documentation restructuring - feature plugins` options are now listed in configuration dialog - current_channel_gtk() - added basic package dependencies for .deb archives, packaged-in lxml/ removed (lacked etree.so anyway) - TV plugin for shoutcast video listings - simpler overriding of stream column titles is now possible - cleaner .src.tgz package, contrib/ files have been externalized - minor fix for quicksearch function 2.0.5 (2010-07-26) - display logic now can extract homepage URLs from station titles - automated google search for missing station homepages - kept .m3u files are reused for playing (faster) - registration code for (stations) extension submenu - timer plugin for programming broadcast play/recordings, uses kronos - heuristic update of bookmarks when reloading station lists - general thread() wrapper function implemented, for worker pool - simple mygtk wrapper for adding menu entries - MyOggRadio plugin is now complete, can upload individual favourites - links plugin, which lists other radio directories in bookmarks tab - CLI mode implemented - two PHP wrapper scripts to generate YP.Shoutcast for Streamtuner1 - GUI startup progress window added - one GtkWarning message fixed - the Shoutcast channel was plugin-ed out, but remains in the UI file - multiple additions to and restructuring of the help files, manpage 2.0.4 (2010-07-22) - PyQuery parsing for InternetRadio.org.uk channel, and adapted PQ usage for shoutcast - utility function http.fix_url extended, common string parsing functions strip_tags, mime_fmt are now in channels.GenericChannel - http module reworked, visual feedback now for GET and AJAX methods, and CookieJar was enabled - channel/tab order can now be configured (instead of tab dragging) - fixed PyQuery wrapper module, packaged lxml modules in (evades extra support for Windows port, native modules will be used on Linux) - more Gtk.Widget mini help popups in the dialog windows 2.0.3 (2010-07-18) - new channel plugin: MyOggRadio (an open source directory) - also Internet-Radio.org.uk channel, but only regex parsing for now - the quick search box is now in the toolbar, while an all-scanning search feature has been implemented in the former dialog - Shoutcast.com broke regex parsing, the homepage links are gone - Category updates are now performed in a thread too - interna: GenericChannel.display() is now .prepare() - live365 category parsing fixed - Live365 and Xiph are no longer built-in tabs, can be fully disabled - fixed disabling search, config, streamedit windows (gtk close event) - and a few help files were added 2.0.2 (2010-07-13) - more checks for initializing channel plugins - gtkrc theming support extended: apply and combobox in config dialog - PyQuery as new alternative parsing mechanism, as option for shoutcast - category tree gets loaded on first display of empty channels - windows port tested, new external project: python+gtk installer bundle - removal of .pyc bytecode files from generic .deb and .rpm packages - distribution includes gtkrc theme "MountainDew" - removed most debug print statements, introduced a config option for it 2.0.1 (2010-07-08) - new channel plugin: jamendo (just a simple browser for now) - new channel plugin: basicch (all new, because old scraper nonfunc) - new channel plugin: punkcast (just a very basic listing) - fixed shoutcast channel parsing - new elaborate http.ajax method using braindamaged urllib2 - extremely cool plugin configuration scheme implented w/ GUI controls - plugins (except code or glade built-in) now deactivatable individually - preliminary support for application themes - support for per-channel .play() method - reenabled audioformat= in play calls - channeltab doubleclick doesn't work despite hours of fruitless trying - add "format" to stream edit dialog - new helper methods: mygtk.bg(), config.get() 2.0.0 (2010-07-05) - search function implemented, highlights results in current category list - right click context menu added - station data inspection/editor added - auto_save_appstate implemented - station delete implemented - clean up of internal application interfaces: new self.channel() instead of self.c[self.cc] kludges all around (all traces rm), and new self.row(), and some auxiliary windows now have handling code in separate classes - now real favicons for directory providers are displayed - removed directory service homepage button (still in menu), donated icon to stations instead; double-click on channel tab still resultless - load_favicon hook (for currently playing station) added - added channel switching to menu, and submenu view merged into edit - fixed initialisation of open channel tab (previously only default shoutcast was populated by .first_show method) - made a new logo for 2.0.0 release - fixed shoutcast category loading 1.9.9-2 (2010-07-01) - bookmark handling fixed - pson/json decoding still flaky 1.9.9 (2010-07-01) - fixed record action - shoutcast parser redone twice - rebuilding of TreeView list more robust noew, always in gobject.idle() - favicon downloading methods implemented, display enabled per default - live365 is buggy, but usable - bookmarks still broken 1.9.8 (2010-06-25) - save-as dialog implemented (export to .m3u, .pls or .xspf) - download progress bar added - last selected category and stream entry is remembered in all channel tabs now (though the implementation is spread between a separate but unused state.json and mygtk.app_state() which stores notext indexes) - menu edit/copy implemented: saves current stream URL into clipboard - fixed XDG_CONFIG_HOME use - code parts have been extracted into separate modules - the Google stations plugin has been ported from streamtuner1 - packaging of .deb and .rpm archives 1.9.7 (2010-06-20) - configuration window added - threading support enabled (uses python 2.6 processing if avail) - more generic window/state saving - update_categories() added in menu - "generic" class for channels has been separated from shoutcast - new channel module "live365" (without login support) - bookmarks module has comments now - new defaults for audio/ogg and other media types - pseudo-json is now a fallback if python 2.6 module isn't there - preparations for saner url extraction in action. class - better doc for mygtk.columns() - (temp.) faster initial startup by not .load()ing default category 1.9.6 (2010-06-15) - added xiph.org example implementation, incomplete - bookmark module basics done - rowmap defined manually again, instead of in mygtk. 1.9.5 (2010-06-15) - basic menu added, toolbar style switching - glade XML file is searched in binary dir - static classes move to bottom - forgotten/deleted streams feature added - display() filter 1.9.4 (2010-06-14) - category change - app_state - mygtk.column_view() and .column_data() have been merged into more general mygtk.columns() - more elaborate, only depends on datamap, instead of individual sublists, pixbuf support added - shoutcast.rowtypes cellmap titles colsizes cellrendr colattrs gone 1.9.3 (2010-06-10) - thread for http GET (doesn't work) - app_restore added - action.record, browse, homepage stream / channel, .reload streams - .status() shortuct - dict2list removed (now in .columns_view) - treeviewcolumns sizes - simplified form of datamap, less dicts, more lists, reshuffled - http. wrapper class - action. with actual os.system() call 1.9.2 (2010-06-10) - action.play(), .m3u - pseudojson instead of pickle in Config class - more doc on top - icons in column_view() for category trees - fix for [format] regex in shoutcast - mime defaults for action. module in conf . .pls and .m3u methods in action. 1.9.1 (2010-06-10) - first real shoutcast server scans - ?? - .. - cache stream lists + category names 1.9.0 (2010-06-10) - first GUI implementation with standard glade - at least shoutcast category names were read