Check-in [2c8a7bf1a8]
Overview
Comment: | More mapping options in Radiotray hook. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
2c8a7bf1a81bb5b2847f66016c1e4e85 |
User & Date: | mario on 2018-12-18 22:40:56 |
Other Links: | manifest | tags |
Context
2018-12-21
| ||
23:03 | Fix dict error for new categories. check-in: ceba1060dd user: mario tags: trunk | |
2018-12-18
| ||
22:40 | More mapping options in Radiotray hook. check-in: 2c8a7bf1a8 user: mario tags: trunk | |
22:40 | Optional toolbar button for search dialog. check-in: 4beef0ad4d user: mario tags: trunk | |
Changes
Modified channels/radiotray.py from [f78abe4734] to [d06646c6dc].
1 2 3 | # api: streamtuner2 # title: RadioTray hook # description: Allows to bookmark stations to RadioTray/NG | > | | > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # encoding: utf-8 # api: streamtuner2 # title: RadioTray hook # description: Allows to bookmark stations to RadioTray/NG # version: 0.8 # type: feature # category: bookmarks # depends: deb:python-dbus, deb:streamtuner2, deb:python-xdg # config: # { name: radiotray_map, type: select, value: "group", select: 'root|group|category|asis|channel|play', description: 'Map genres to default RadioTray groups, or just "root".' } # url: http://radiotray.sourceforge.net/ # priority: extra # id: streamtuner2-radiotray # extraction-method: xml # pack: radiotray.py # fpm-prefix: /usr/share/streamtuner2/channels/ # # Adds a context menu "Add in RadioTray.." for bookmarking. # Should work with old Radiotray and Radiotray-NG. It will # now probe for RTNG first and prefers to edit its bookmark # list. # # The mapping options: # ยท "root" is just meant for the old Radiotray format. # ยท "group" tries to fit genres onto existing submenus. # ยท "category" maps just the channel category. # ยท "channel" instead creates `Shoutcast - Rock` entries. # ยท "asis" will transfer the literal station genre. # ยท "play" is unused. # # With the old Radiotry this plugin will fall back to just # playUrl() until the addRadio remote call is added. # The patch for radiotray/DbusFacade.py would be: # + # + @dbus.service.method('net.sourceforge.radiotray') # + def addRadio(self, title, url, group="root"): # + self.dataProvider.addRadio(title, url, group) |
︙ | ︙ | |||
123 124 125 126 127 128 129 | return r # send to def share(self, *w): row = self.parent.row() if row: | | < > | | > > > > > | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 | return r # send to def share(self, *w): row = self.parent.row() if row: group = self.map_group(row.get("genre", self.parent.channel().current)) log.PROC("mapping genre '%s' to RT group '%s'" % (row["genre"], group)) # Radiotray-NG try: self.radiotray_ng().add_radio(row["title"], row["url"], group) except: try: cfg = self.radiotray_ng().get_config() self.save_rtng_json(cfg, row, group) self.radiotray_ng().reload_bookmarks() self.parent.status("Exported to Radiotray. You may need to use Preferences > Reload Bookmarks.") except Exception as e: log.ERR("radiotray-ng not active", e) # RadioTray doesn't have an addRadio method yet, so just fall back to play the stream URL try: self.radiotray().addRadio(row["title"], row["url"], group) except: try: self.radiotray().playUrl(row["url"]) except: log.ERR("radiotry-old not active") pass # manually add to RTNG bookmarks.json def save_rtng_json(self, cfg, row, group): fn = json.loads(cfg)["bookmarks"] j = json.load(open(fn, "r")) found = None group = {"root": "streamtuner2", "": "streamtuner2"}.get(group, group) # find existing group for g in j: if g["group"] == group: found = g break # else add new group if not found: found = { "group": group, "image": None, "stations": [] } j.append(found) # overwrite bookmarks.json if found: found["stations"].append({ "image": None, "name": row["title"], "url": row["url"] }) json.dump(j, open(fn, "w"), indent=4) # match genre to RT groups def map_group(self, genre): if not genre or not len(genre) or conf.radiotray_map == "root": return "root" if conf.radiotray_map == "channel": return "%s - %s" % (self.parent.current_channel, self.parent.channel().current) if conf.radiotray_map == "asis": return genre # if RadioTray itself can map arbitrary genres to its folders if conf.radiotray_map == "play": raise NotImplementedError("just call .playUrl()") if conf.radiotray_map == "category": genre = self.parent.channel().current # else "group" - find first fit for station genre map = { "Jazz": "jazz|fusion|swing", "Latin": "latin|flamenco|tango|salsa|samba", "Classic Rock": "classic rock", "Classical": "classic|baroque|opera|symphony|piano|violin", "Pop / Rock": "top|pop|rock|metal", "Oldies": "20s|50s|60s|70s|oldie", |
︙ | ︙ |