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

⌈⌋ branch:  streamtuner2


Check-in [e091ecf510]

Overview
Comment:Updates for 2.1.1 release
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: e091ecf510d648b1cccb479a48bca884c579bdc6
User & Date: mario on 2014-05-28 15:54:26
Other Links: manifest | tags
Context
2014-05-28
16:31
More complicated regex to extract paid stations and incomplete entries even (empty titles, or absent homepage URLs). So it gives a more complete listing than PyQuery parsing again. check-in: 141c3a22fb user: mario tags: trunk, 2.1.1
15:54
Updates for 2.1.1 release check-in: e091ecf510 user: mario tags: trunk
15:53
Set default win_config size (for Gtk3) check-in: c3c0ce1553 user: mario tags: trunk
Changes

Modified README from [7253f3c35f] to [c31808d0e4].

92
93
94
95
96
97
98
















99
100
101
102
103
104
105
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







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







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

Modified _package.epm from [a336014854] to [15050fe7e1].

1
2

3
4
5
6
7
8
9
1

2
3
4
5
6
7
8
9

-
+







%product streamtuner2 - internet radio browser
%version 2.1.0
%version 2.1.1
%vendor Mario Salzer
%license
%copyright Placed into the Public Domain, 2009-2014
%readme README

%description Browser for Internet Radio Stations
%description   .

Modified config.py from [eff4cdbef0] to [a443e08afc].

74
75
76
77
78
79
80

81
82
83
84
85
86
87
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88







+







               "audio/*": "xterm -e streamripper %srv",   # -d /home/***USERNAME***/Musik
               "video/youtube": "xterm -e \"youtube-dl %srv\"",
            }
            self.plugins = {
                "bookmarks": 1, # built-in plugin, cannot be disabled
                "shoutcast": 1,
                "xiph": 1,
                "modarchive": 0, # disable per default
                "file": 0,      # disable per default
                "punkcast": 0,  # disable per default
                "history": 0,
                "basicch": 0,   # ceased
                "tv": 0,        # ceased
            }
            self.tmp = os.environ.get("TEMP", "/tmp")

Modified gtk2.xml from [d03e67e7ef] to [b8c495c303].

238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

256
257
258
259
260
261
262
263
264
265
266
238
239
240
241
242
243
244











245




246
247
248
249
250
251
252







-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-







                                <property name="expand">True</property>
                                <property name="fill">True</property>
                                <property name="padding">5</property>
                                <property name="position">6</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label_record2">
                                <property name="visible">True</property>
                                <property name="can_focus">True</property>
                                <property name="xalign">0.019999999552965164</property>
                                <property name="yalign">0.49000000953674316</property>
                                <property name="label" translatable="yes">You usually want to run recording applications in a
terminal window, as they're commandline tools.</property>
                                <property name="use_markup">True</property>
                                <property name="wrap">True</property>
                              </object>
                              <packing>
                              <placeholder/>
                                <property name="expand">True</property>
                                <property name="fill">True</property>
                                <property name="position">7</property>
                              </packing>
                            </child>
                          </object>
                        </child>
                      </object>
                    </child>
                  </object>
                </child>
1977
1978
1979
1980
1981
1982
1983













































1984
1985
1986
1987
1988
1989
1990
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkCheckButton" id="search_channel_all">
                    <property name="label" translatable="yes">all channels</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">False</property>
                    <property name="active">True</property>
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2365
2366
2367
2368
2369
2370
2371



2372
2373
2374
2375
2376
2377
2378







-
-
-







        <property name="can_focus">False</property>
        <property name="label" translatable="yes">station homepage</property>
        <property name="use_underline">True</property>
        <signal name="activate" handler="on_homepage_stream_clicked" swapped="no"/>
      </object>
    </child>
  </object>
  <object class="GtkTextBuffer" id="textbuffer1">
    <property name="text" translatable="yes">record,1</property>
  </object>
  <object class="GtkDialog" id="timer_dialog">
    <property name="can_focus">False</property>
    <property name="border_width">5</property>
    <property name="type_hint">normal</property>
    <signal name="delete-event" handler="true" swapped="no"/>
    <child internal-child="vbox">
      <object class="GtkVBox" id="dialog-vbox2">
2700
2701
2702
2703
2704
2705
2706


















2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724



2725
2726
2727
2728
2729
2730
2731
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


















+
+
+







            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <object class="GtkEntry" id="timer_value">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="invisible_char">●</property>
                <property name="text" translatable="yes">Fri,Sat 20:00-21:00</property>
                <property name="primary_icon_activatable">False</property>
                <property name="secondary_icon_activatable">False</property>
                <property name="primary_icon_sensitive">True</property>
                <property name="secondary_icon_sensitive">True</property>
              </object>
              <packing>
                <property name="left_attach">1</property>
                <property name="right_attach">2</property>
                <property name="top_attach">1</property>
                <property name="bottom_attach">2</property>
              </packing>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
3243
3244
3245
3246
3247
3248
3249
3250
3251

3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263

3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274

3275
3276

3277
3278
3279
3280
3281
3282
3283
3292
3293
3294
3295
3296
3297
3298

3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310

3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322

3323
3324

3325
3326
3327
3328
3329
3330
3331
3332







-

+










-

+










-
+

-
+







                            <property name="can_focus">False</property>
                            <child>
                              <object class="GtkMenuItem" id="menu_bookmark">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">bookmark</property>
                                <property name="use_underline">True</property>
                                <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <accelerator key="F8" signal="activate"/>
                                <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <signal name="activate" handler="bookmark" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="imagemenuitem_saveas">
                                <property name="label">gtk-save-as</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                                <accelerator key="F2" signal="activate"/>
                                <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <accelerator key="F2" signal="activate"/>
                                <signal name="activate" handler="save_as" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="gtk-edit">
                                <property name="label">gtk-edit</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                                <accelerator key="F3" signal="activate"/>
                                <accelerator key="Return" signal="activate" modifiers="GDK_MOD1_MASK"/>
                                <accelerator key="space" signal="activate" modifiers="GDK_MOD1_MASK"/>
                                <accelerator key="Return" signal="activate" modifiers="GDK_MOD1_MASK"/>
                                <accelerator key="F3" signal="activate"/>
                                <signal name="activate" handler="streamedit_open" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkMenuItem" id="extensions0">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
3342
3343
3344
3345
3346
3347
3348
3349
3350

3351
3352
3353
3354
3355
3356
3357
3391
3392
3393
3394
3395
3396
3397

3398
3399
3400
3401
3402
3403
3404
3405
3406







-

+







                            <child>
                              <object class="GtkImageMenuItem" id="menuitem_delete">
                                <property name="label">gtk-delete</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                                <accelerator key="Delete" signal="activate"/>
                                <accelerator key="x" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <accelerator key="Delete" signal="activate"/>
                                <signal name="activate" handler="delete_entry" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="imagemenuitem8">
                                <property name="label">gtk-find</property>
                                <property name="visible">True</property>
3659
3660
3661
3662
3663
3664
3665
3666
3667

3668
3669
3670
3671
3672
3673
3674
3708
3709
3710
3711
3712
3713
3714

3715
3716
3717
3718
3719
3720
3721
3722
3723







-

+







                          <packing>
                            <property name="expand">False</property>
                            <property name="homogeneous">True</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkToolButton" id="stop">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="visible_horizontal">False</property>
                            <property name="label" translatable="yes">stop</property>
                            <property name="stock_id">gtk-cancel</property>
                            <signal name="clicked" handler="on_stop_clicked" swapped="no"/>
                          </object>
                          <packing>
                            <property name="expand">False</property>
                            <property name="homogeneous">True</property>

Modified gtk3.xml from [eafd4c36a0] to [bc08f78b0f].

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256

257
258
259
260
261
262
263
264
265
266
267
239
240
241
242
243
244
245











246




247
248
249
250
251
252
253







-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-







                                <property name="expand">True</property>
                                <property name="fill">True</property>
                                <property name="padding">5</property>
                                <property name="position">6</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label_record2">
                                <property name="visible">True</property>
                                <property name="can_focus">True</property>
                                <property name="xalign">0.019999999552965164</property>
                                <property name="yalign">0.49000000953674316</property>
                                <property name="label" translatable="yes">You usually want to run recording applications in a
terminal window, as they're commandline tools.</property>
                                <property name="use_markup">True</property>
                                <property name="wrap">True</property>
                              </object>
                              <packing>
                              <placeholder/>
                                <property name="expand">True</property>
                                <property name="fill">True</property>
                                <property name="position">7</property>
                              </packing>
                            </child>
                          </object>
                        </child>
                      </object>
                    </child>
                  </object>
                </child>
806
807
808
809
810
811
812

813
814
815
816
817
818
819
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806







+







                                  </packing>
                                </child>
                                <child>
                                  <object class="GtkEntry" id="config_channel_order">
                                    <property name="visible">True</property>
                                    <property name="can_focus">True</property>
                                    <property name="invisible_char">●</property>
                                    <property name="width_chars">30</property>
                                    <property name="primary_icon_activatable">False</property>
                                    <property name="secondary_icon_activatable">False</property>
                                  </object>
                                  <packing>
                                    <property name="expand">True</property>
                                    <property name="fill">True</property>
                                    <property name="position">1</property>
2011
2012
2013
2014
2015
2016
2017


























































































2018
2019
2020
2021
2022
2023
2024
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkCheckButton" id="search_channel_all">
                    <property name="label" translatable="yes">all channels</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">False</property>
                    <property name="xalign">0.5</property>
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2450
2451
2452
2453
2454
2455
2456



2457
2458
2459
2460
2461
2462
2463







-
-
-







        <property name="can_focus">False</property>
        <property name="label" translatable="yes">station homepage</property>
        <property name="use_underline">True</property>
        <signal name="activate" handler="on_homepage_stream_clicked" swapped="no"/>
      </object>
    </child>
  </object>
  <object class="GtkTextBuffer" id="textbuffer1">
    <property name="text" translatable="yes">record,1</property>
  </object>
  <object class="GtkDialog" id="timer_dialog">
    <property name="can_focus">False</property>
    <property name="border_width">5</property>
    <property name="type_hint">normal</property>
    <signal name="delete-event" handler="true" swapped="no"/>
    <child internal-child="vbox">
      <object class="GtkBox" id="dialog-vbox2">
2757
2758
2759
2760
2761
2762
2763




































2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779






2780
2781
2782
2783
2784
2785
2786
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
















+
+
+
+
+
+







            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <object class="GtkEntry" id="timer_value">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="invisible_char">●</property>
                <property name="text" translatable="yes">Fri,Sat 20:00-21:00</property>
                <property name="primary_icon_activatable">False</property>
                <property name="secondary_icon_activatable">False</property>
              </object>
              <packing>
                <property name="left_attach">1</property>
                <property name="right_attach">2</property>
                <property name="top_attach">1</property>
                <property name="bottom_attach">2</property>
              </packing>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
3696
3697
3698
3699
3700
3701
3702
3703
3704

3705
3706
3707
3708
3709
3710
3711
3812
3813
3814
3815
3816
3817
3818

3819
3820
3821
3822
3823
3824
3825
3826
3827







-

+







                          <packing>
                            <property name="expand">False</property>
                            <property name="homogeneous">True</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkToolButton" id="stop">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="visible_horizontal">False</property>
                            <property name="label" translatable="yes">stop</property>
                            <property name="stock_id">gtk-cancel</property>
                            <signal name="clicked" handler="on_stop_clicked" swapped="no"/>
                          </object>
                          <packing>
                            <property name="expand">False</property>
                            <property name="homogeneous">True</property>