Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ branch:  streamtuner2


Artifact [ab291f4bb2]

Artifact ab291f4bb24c1c55cfe49e8fd06260186f6bc60f:

Wiki page [project state] by mario on 2015-03-29 07:28:26.
D 2015-03-29T07:28:26.712
L project\sstate
N text/x-markdown
P c8988d0963e17a6b80a38dce150224ffc19c51db
U mario
W 1788
## Stability
 
* The application runs mostly stable. The GUI interfaces are workable.
* It's supposed to run on Gtk2 and Gtk3.
* Python3 support is achieved.  
* There haven't been any optimizations regarding memory usage and 
  performance.
* The current internal API is vastly undocumented. 
 
## Current bugs

* Audio- and list-format support is not very robust / needs better API 
* Not all keyboard shortcuts work 
* Some internal UI state flags remain, that need to be substituted with Gtk callbacks.
 
## Features

* Treeview layouts and lists are dynamically from datamap[] structure and stream{} dicts.
* Channel categories are often built-in defaults (can be freshened up however) 
* Config vars and cache data get stored as JSON in ~/.config/streamtuner2/ 
* Plugin meta data spec is mostly used now for configuration description, and plugin management.
 
## Missing:

* Localization (not actually planned for)

## Security notes

* Directory scrapers use partially complex regular expressions - which is probably 
  not a security risk, but might lead to faulty data. Albeit HTML entitiy cleanup and constraints are in place. (As for fragile, the InternetRadio DOM method is less exact even.)
* MEDIUM: little integrity checking for .pls / .m3u references and files 
* minimal XML/SGML entity decoding (-> faulty data) 
* fixed: now uses only proper Python json module (no longer Python-style dicts and eval)
* HIGH RISK: no verification of downloaded favicon image files (ico/png), 
 as they are passed to gtk.gdk.Pixbuf (OTOH data pre-filtered by Google) 
* MEDIUM: audio players / decoders are easily affected by buffer overflows 
  from corrupt mp3/stream data. However nothing we can preassert here, streamtuner2 just passes them on.

Z 150166ba21c8dfb7ebcbbc93cbb40423