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

⌈⌋ ⎇ branch:  streamtuner2


Check-in [f94731a05b]

Overview
Comment:Make static category lists more readable.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: f94731a05bd13e2be1db2071a6bfc8a7442adc0f
User & Date: mario on 2015-05-07 17:10:43
Other Links: manifest | tags
Context
2015-05-07
17:11
Additional project+help links for manual. check-in: 76cf990460 user: mario tags: trunk
17:10
Make static category lists more readable. check-in: f94731a05b user: mario tags: trunk
17:09
Remove unsupported view-source: URL prefix, rewrite links from /cat/ to /doc/tip/ for downloading/plain view instead of text/html browsing. check-in: 8e4f191706 user: mario tags: trunk
Changes

Modified contrib/delicast.py from [2f25207529] to [78844d8df5].

1
2
3
4
5
6
7
8
9
10
11
12
13
# encoding: UTF-8
# api: streamtuner2
# title: Delicast
# description: directory of streaming media
# url: http://delicast.com/
# version: 0.1
# type: channel
# category: radio
# config: -
# png:
#    iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA
#    AmJLR0QA/4ePzL8AAAAHdElNRQffBB4UJAsX77G0AAAANUlEQVQY02OwQwMMdv/BAEUASCFEoAIIEZIEIGYjBCAUwpb/6O5ACEABGQJ2cFsQIlB3oAEA6iVo+vl+BbQA
#    AAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMDQtMzBUMjI6MzY6MDMrMDI6MDAFLUvfAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA0LTMwVDIyOjM2OjAzKzAyOjAwdHDz





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# encoding: UTF-8
# api: streamtuner2
# title: Delicast
# description: directory of streaming media
# url: http://delicast.com/
# version: 0.2
# type: channel
# category: radio
# config: -
# png:
#    iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA
#    AmJLR0QA/4ePzL8AAAAHdElNRQffBB4UJAsX77G0AAAANUlEQVQY02OwQwMMdv/BAEUASCFEoAIIEZIEIGYjBCAUwpb/6O5ACEABGQJ2cFsQIlB3oAEA6iVo+vl+BbQA
#    AAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMDQtMzBUMjI6MzY6MDMrMDI6MDAFLUvfAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA0LTMwVDIyOjM2OjAzKzAyOjAwdHDz
35
36
37
38
39
40
41

42






43
44
45
46
47
48
49

    # control flags
    has_search = False
    listformat = "srv"
    audioformat = "mp3"
    titles = dict(listeners=False, bitrate=False, playing="Location")
    base = "http://delicast.com/"

    categories = ["60s", "70s", "80s", "90s", "Alternative", "Blues", "Chillout", "Christian", "Classical", "Community", "Country", "Culture", "Dance", "Disco", "Easy listening", "Electronic", "Folk", "Funk", "Gospel", "Hiphop", "House	Indie", "Information", "Jazz", "Latin", "Lounge", "Love", "Metal", "Oldies", "Pop", "R n b", "Reggae", "Rock", "Romantic", "Soul", "Sports", "Student", "Talk", "Techno", "Trance", "Urban", "World music"]








    # static
    def update_categories(self):
        pass









>
|
>
>
>
>
>
>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

    # control flags
    has_search = False
    listformat = "srv"
    audioformat = "mp3"
    titles = dict(listeners=False, bitrate=False, playing="Location")
    base = "http://delicast.com/"

    categories = ["60s", "70s", "80s", "90s", "Alternative", "Blues",
    "Chillout", "Christian", "Classical", "Community", "Country", "Culture",
    "Dance", "Disco", "Easy listening", "Electronic", "Folk", "Funk",
    "Gospel", "Hiphop", "House Indie", "Information", "Jazz", "Latin",
    "Lounge", "Love", "Metal", "Oldies", "Pop", "R n b", "Reggae", "Rock",
    "Romantic", "Soul", "Sports", "Student", "Talk", "Techno", "Trance",
    "Urban", "World music"]


    # static
    def update_categories(self):
        pass


71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
                    url = "urn:delicast",
                    genre = cat,
             #      genre = unhtml(tags),
                ))
        return r
      

    # Update `url`
    def row(self):
        r = ChannelPlugin.row(self)
        if r.get("url") == "urn:delicast":
            html = ahttp.get(r["homepage"])
            ls = re.findall("^var url = \"(.+)\";", html, re.M)
            r["url"] = ls[0]
        return r








|








78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
                    url = "urn:delicast",
                    genre = cat,
             #      genre = unhtml(tags),
                ))
        return r
      

    # Update `url` on station data access (incurs a delay for playing or recording)
    def row(self):
        r = ChannelPlugin.row(self)
        if r.get("url") == "urn:delicast":
            html = ahttp.get(r["homepage"])
            ls = re.findall("^var url = \"(.+)\";", html, re.M)
            r["url"] = ls[0]
        return r

Modified contrib/di.py from [7e57dd345f] to [09e4c6e16c].

32
33
34
35
36
37
38

39
40
41
42
43
44
45
class di (ChannelPlugin):

    # control flags
    has_search = False
    listformat = "pls"
    audioformat = "audio/aac"
    titles = dict(listeners=False, bitrate=False, playing=False)

    categories = ["di.fm", "sky.fm", "jazzradio.com"]
               # sky.fm is an alias of "radiotunes.com"

    # static
    def update_categories(self):
        pass








>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class di (ChannelPlugin):

    # control flags
    has_search = False
    listformat = "pls"
    audioformat = "audio/aac"
    titles = dict(listeners=False, bitrate=False, playing=False)

    categories = ["di.fm", "sky.fm", "jazzradio.com"]
               # sky.fm is an alias of "radiotunes.com"

    # static
    def update_categories(self):
        pass

Modified contrib/publicradiofan.py from [4d38edc4a6] to [27f032530a].

36
37
38
39
40
41
42

43




44
45
46
47
48
49
50
class publicradiofan (ChannelPlugin):

    # control attributes
    has_search = False
    format = "mp3"
    listformat = "href"
    titles = dict(listeners=False, bitrate=False, playing="Description")

    categories = ["adult alternative", "adult contemporary", "blues", "business", "classical", "community", "contemporary", "country", "easy", "education", "ethnic", "folk", "free-form", "full service", "government", "international", "jazz", "military", "news", "nostalgia", "oldies", "reading", "regional", "religious", "rock", "seasonal", "sports", "student", "talk", "traffic", "urban", "variety", "world", "youth"]




    

    # static
    def update_categories(self):
        pass
        








>
|
>
>
>
>







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class publicradiofan (ChannelPlugin):

    # control attributes
    has_search = False
    format = "mp3"
    listformat = "href"
    titles = dict(listeners=False, bitrate=False, playing="Description")

    categories = ["adult alternative", "adult contemporary", "blues", "business", "classical",
    "community", "contemporary", "country", "easy", "education", "ethnic", "folk", "free-form",
    "full service", "government", "international", "jazz", "military", "news", "nostalgia",
    "oldies", "reading", "regional", "religious", "rock", "seasonal", "sports", "student",
    "talk", "traffic", "urban", "variety", "world", "youth"]
    

    # static
    def update_categories(self):
        pass
        

Modified contrib/windowsmedia.py from [e67533e16b] to [c3090e4bd8].

42
43
44
45
46
47
48

49
50
51


52
53
54
55
56
57
58


    # control flags
    has_search = False
    listformat = "wax"
    audioformat = "audio/mpeg"
    titles = dict(listeners=False, bitrate=False, playing="Location")

    _web = "http://www.windowsmedia.com/RadioUI/Home.aspx?g={}&culture=en-gb"
    base = "http://www.windowsmedia.com/RadioUI/getstationsforgenre.aspx?g={}&offset=0&culture={}"
    _url = "http://www.windowsmedia.com/RadioTunerAPI/Service.asmx/playStation?stationID={}&dialupDetected=true&useHighBandwidth=false&locale={}"



    categories = ["80s", "Adult Hits", "Adult Rock", "Alternative Rock",
    "Americana + Roots", "Big Band", "Blues", "Christian Hits", "Classic R&B",
    "Classic Rock", "Classical", "Comedy", "Country", "Dance + Electronica",
    "Holiday", "Indie", "International", "Jazz", "Latin", "Metal", "Miscellaneous",
    "New Age", "News + Talk", "Oldies", "Public Radio", "Rap + Hip Hop", "Reggae",
    "Religious", "Rock", "Smooth Jazz", "Soft Rock", "Soundtracks + Musicals",







>


|
>
>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61


    # control flags
    has_search = False
    listformat = "wax"
    audioformat = "audio/mpeg"
    titles = dict(listeners=False, bitrate=False, playing="Location")

    _web = "http://www.windowsmedia.com/RadioUI/Home.aspx?g={}&culture=en-gb"
    base = "http://www.windowsmedia.com/RadioUI/getstationsforgenre.aspx?g={}&offset=0&culture={}"
    _url = "http://www.windowsmedia.com/RadioTunerAPI/Service.asmx/playStation?"\
         + "stationID={}&dialupDetected=false&useHighBandwidth=true&locale={}"
           # reversed default true and false for connection speed

    categories = ["80s", "Adult Hits", "Adult Rock", "Alternative Rock",
    "Americana + Roots", "Big Band", "Blues", "Christian Hits", "Classic R&B",
    "Classic Rock", "Classical", "Comedy", "Country", "Dance + Electronica",
    "Holiday", "Indie", "International", "Jazz", "Latin", "Metal", "Miscellaneous",
    "New Age", "News + Talk", "Oldies", "Public Radio", "Rap + Hip Hop", "Reggae",
    "Religious", "Rock", "Smooth Jazz", "Soft Rock", "Soundtracks + Musicals",