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

⌈⌋ ⎇ branch:  streamtuner2


Update of "project state"

Overview

Artifact ID: 07d6034ba9bf27e923ba4f1322642ecdcdb0e2be
Page Name:project state
Date: 2015-05-11 21:14:01
Original User: mario
Mimetype:text/x-markdown
Parent: ab291f4bb24c1c55cfe49e8fd06260186f6bc60f (diff)
Next a2446e830e6fe46a25a5f5dab72581d82ab53105
Content

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: integrity checking for .pls / .m3u references and files only on conversion
  • 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.