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

⌈⌋ ⎇ branch:  streamtuner2


Check-in [ec262d679d]

Overview
Comment:Remove custom .catmap handling (automatically saved by GenericChannel.reload_categories which invokes update_categories).
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: ec262d679de63051f38f6f660e01b7d981cc41bf
User & Date: mario on 2015-03-30 18:38:19
Other Links: manifest | tags
Context
2015-03-30
19:41
Fix regex mapping mode, switch config option to descriptors, add "asis" to avoid mapping, "root" for unmapped storage, and use "group" for genre rewrite. check-in: 8cd5bb3da2 user: mario tags: trunk
18:38
Remove custom .catmap handling (automatically saved by GenericChannel.reload_categories which invokes update_categories). check-in: ec262d679d user: mario tags: trunk
17:42
Use absolute path (conf.share) for plugin lookup with pkgutil. check-in: 665f4b36ad user: mario tags: trunk
Changes

Modified channels/modarchive.py from [6105d250d0] to [d62c0ac39b].

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







-
-
-
-
-
-
-
-
-
-













-
-







from config import conf
from channels import *
from config import __print__, dbg














# MODs
class modarchive (ChannelPlugin):

    # description
    title = "modarchive"
    module = "modarchive"
    homepage = "http://www.modarchive.org/"
    base = "http://modarchive.org/"
    titles = dict(genre="Genre", title="Song", playing="File", listeners="Rating", bitrate=0)

    # keeps category titles->urls    
    catmap = {"Chiptune": "54", "Electronic - Ambient": "2", "Electronic - Other": "100", "Rock (general)": "13", "Trance - Hard": "64", "Swing": "75", "Rock - Soft": "15", "R & B": "26", "Big Band": "74", "Ska": "24", "Electronic - Rave": "65", "Electronic - Progressive": "11", "Piano": "59", "Comedy": "45", "Christmas": "72", "Chillout": "106", "Reggae": "27", "Electronic - Industrial": "34", "Grunge": "103", "Medieval": "28", "Demo Style": "55", "Orchestral": "50", "Soundtrack": "43", "Electronic - Jungle": "60", "Fusion": "102", "Electronic - IDM": "99", "Ballad": "56", "Country": "18", "World": "42", "Jazz - Modern": "31", "Video Game": "8", "Funk": "32", "Electronic - Drum & Bass": "6", "Alternative": "48", "Electronic - Minimal": "101", "Electronic - Gabber": "40", "Vocal Montage": "76", "Metal (general)": "36", "Electronic - Breakbeat": "9", "Soul": "25", "Electronic (general)": "1", "Punk": "35", "Pop - Synth": "61", "Electronic - Dance": "3", "Pop (general)": "12", "Trance - Progressive": "85", "Trance (general)": "71", "Disco": "58", "Electronic - House": "10", "Experimental": "46", "Trance - Goa": "66", "Rock - Hard": "14", "Trance - Dream": "67", "Spiritual": "47", "Metal - Extreme": "37", "Jazz (general)": "29", "Trance - Tribal": "70", "Classical": "20", "Hip-Hop": "22", "Bluegrass": "105", "Halloween": "82", "Jazz - Acid": "30", "Easy Listening": "107", "New Age": "44", "Fantasy": "52", "Blues": "19", "Other": "41", "Trance - Acid": "63", "Gothic": "38", "Electronic - Hardcore": "39", "One Hour Compo": "53", "Pop - Soft": "62", "Electronic - Techno": "7", "Religious": "49", "Folk": "21"}
    categories = []
 
    
    

    # refresh category list
    def update_categories(self):

        html = http.get("http://modarchive.org/index.php?request=view_genres")

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
66
67
68
69
70
71
72


73
74




75
76














77
78
79
80
81
82
83







-
-
+
+
-
-
-
-
+

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







                if sub:
                    self.categories.append(sub)
                sub = []
                self.categories.append(main)
            else:
                sub.append(subname)
                self.catmap[subname] = id
        #
        

        # .categories and .catmap are saved by reload_categories()
        #-- keep catmap as cache-file, it's essential for redisplaying        
        self.save()
        return

        pass

    # saves .streams and .catmap
    def save(self):
        ChannelPlugin.save(self)
        conf.save("cache/catmap_" + self.module, self.catmap)


    # read previous channel/stream data, if there is any
    def cache(self):
        ChannelPlugin.cache(self)
        # catmap
        cache = conf.load("cache/catmap_" + self.module)
        if (cache):
            self.catmap = cache
        pass


    # download links from dmoz listing
    def update_streams(self, cat):

        url = "http://modarchive.org/index.php"
        params = dict(query=self.catmap[cat], request="search", search_type="genre")

Modified channels/shoutcast.py from [1749bea8b8] to [d4f5d3a425].

82
83
84
85
86
87
88
89
90




91
92
93
94
95
96
97
82
83
84
85
86
87
88


89
90
91
92
93
94
95
96
97
98
99







-
-
+
+
+
+







            self.catmap[title] = int(id)
            if not int(main):
                self.categories.append(title)
                current = []
                self.categories.append(current)
            else:
                current.append(title)
        self.save()


        # .categories/.catmap get saved by reload_categories()
        pass
        

    # downloads stream list from shoutcast for given category
    def update_streams(self, cat):

        if (cat not in self.catmap):
            __print__( dbg.ERR, "nocat" )
            return []
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
125
126
127
128
129
130
131


















-
-
-
-
-
-
-
-
-
-
-
                "homepage": "",
                "format": "audio/mpeg"
            })

        #__print__(dbg.DATA, entries)
        return entries


    # saves .streams and .catmap
    def save(self):
        channels.ChannelPlugin.save(self)
        conf.save("cache/catmap_" + self.module, self.catmap)

    # read previous channel/stream data, if there is any
    def cache(self):
        channels.ChannelPlugin.cache(self)
        self.catmap = conf.load("cache/catmap_" + self.module) or {}