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

⌈⌋ ⎇ branch:  streamtuner2


Diff

Differences From Artifact [c31808d0e4]:

To Artifact [2a149ea96d]:


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98













99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

You can just execute the main binary "st2.py". All the other files
need to be copied into /usr/share/streamtuner2/ however. If it
doesn't work, make sure you have Python and gtk/pygtk installed:

  sudo apt-get install python python-gtk2 python-glade2 python-xdg


The *.glade file represents the GUI.  So if you have the glade-3
application installed, you can inspect and enhance the interface.
Give it a try, report back.


development state
-----------------

There was a lengthy development pause, actual maintenance time of
this application is probably 2-3 months now. However, it is mostly
feature-complete meanwhile. The internal application structures are
somewhat settled. Some modules are still pretty rough (json format,
http functions), and especially the action module for playing and
recording isn't very autonomic (though has some heuristic and uses
stream format hints).

The directory modules mostly work. If they don't, it's just a
matter of adapting the regular expressions. Shoutcast and Live365
lately changed the HTML output, so broke. Therefore PyQuery parsing
methods were implemented, which extract stream info from HTML soup
using CSS/jQuery selectors.
And it should be pretty easy to add new ones. There will also
somewhen be a feature to add simple station 'scripts'; in testing.


comparison to streamtuner1
--------------------------

Streamtuner1 has been written around 2002-2004. At this time it was
totally unfeasible to write any responsive application in a scripting
language. Therefore it was implemented in C, which made it speedy.

Using C however has some drawbacks. The codebase is more elaborate,
and it often takes more time to adapt things.

Personally I had some occasional crashes because of corrupt data
from some of the directory services. Because that was more difficult
to fix in C code, this rewrite started. It's purely for practical
purposes, not because there was anything wrong with streamtuner1.

streamtuner2 being implemented directly in Python (the C version had
a Python plugin), cuts down the code size considerably. It's much
easier to add new plugins. (Even though it doesn't look that way yet.)

For older machines or netbooks, the C streamtuner1 might overall
remain the better choice, btw. Running inside the Python VM makes this
variant more stable, but also way more memory hungry. (This has been
reduced with some de-optimizations already.)


advertisement
-------------

If you are looking for a lightweight alternative, Tunapie is still
in development, and it has a working Shoutcast+Xiph reader.
http://tunapie.sourceforge.net/

Streamtuner2 CLI can also be used as proxy server for streamtuner1.
There is a wrapper available. But there was nobody yet to be found who
wanted it set up globally. (Else streamtuner1 would just require a patch
in /etc/hosts to work again.)
It's available as st1proxy.tgz and cli-mode-only.tgz from
http://milki.include-once.org/streamtuner2/ext/
Contact me for setup help. Requires a webserver with unrestrained
vhost support.


license
-------

Public Domain.
(no rules: unrestricted copying, modification, distribution, etc.)


history
-------














2.1.1
- 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
- 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







<
|
<
<
|

<
<

<
<
<
<
<
<
<
|
<
<
<
<
<
<
<
<
<
<
|

<
<
<
|
<
<
|
<
<
<
<
|
<
<
<
|
<
<
<
<
|

<
<

<
<
<
<


|
<
















>
>
>
>
>
>
>
>
>
>
>
>
>
|















|







14
15
16
17
18
19
20

21


22
23


24







25










26
27



28


29




30



31




32
33


34




35
36
37

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

You can just execute the main binary "st2.py". All the other files
need to be copied into /usr/share/streamtuner2/ however. If it
doesn't work, make sure you have Python and gtk/pygtk installed:

  sudo apt-get install python python-gtk2 python-glade2 python-xdg


The gtk*.xml file represents the GUI.  So with glade installed, you


can inspect and adapt the interface.











alternatives










------------




* http://sourceforge.net/projects/radiotray/


* https://sites.google.com/site/glrpgreatlittleradioplayer/




* http://tunapie.sourceforge.net/



* VLC also has a few directory discovery services built-in




* Rythmbox comes with last.fm, libre.fm, radio lookups








Streamtuner2 CLI can also be used as proxy server for streamtuner1.
There is a wrapper available. But there was nobody yet to be found who
wanted it set up globally.

It's available as st1proxy.tgz and cli-mode-only.tgz from
http://milki.include-once.org/streamtuner2/ext/
Contact me for setup help. Requires a webserver with unrestrained
vhost support.


license
-------

Public Domain.
(no rules: unrestricted copying, modification, distribution, etc.)


history
-------

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-01-05)
- 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