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