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
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 *.glade file represents the GUI.  So if you have the glade-3
The gtk*.xml file represents the GUI.  So with glade installed, you
application installed, you can inspect and enhance the interface.
Give it a try, report back.

can inspect and adapt the interface.

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).

alternatives
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.

* http://sourceforge.net/projects/radiotray/
Using C however has some drawbacks. The codebase is more elaborate,
and it often takes more time to adapt things.

* https://sites.google.com/site/glrpgreatlittleradioplayer/
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.

* http://tunapie.sourceforge.net/
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.)

* VLC also has a few directory discovery services built-in
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.)

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

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
wanted it set up globally.
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.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
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
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