Check-in [72fbdf4b92]
Overview
Comment: | new iTunes Radio stations channel (via RoliSoft Radio Playlist generator API.) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
72fbdf4b92cd9730368aab7e5769c279 |
User & Date: | mario on 2014-05-31 09:01:36 |
Original Comment: | new iTunes Radio stations channel (via RoliSoft Radio Playlist generator API.) |
Other Links: | manifest | tags |
Context
2014-05-31
| ||
23:31 | more hooks: init, config_load, config_save check-in: 60a80d0570 user: mario tags: trunk | |
09:01 | new iTunes Radio stations channel (via RoliSoft Radio Playlist generator API.) check-in: 72fbdf4b92 user: mario tags: trunk | |
2014-05-30
| ||
23:22 | New channel module "iCast.io" as seen in VLC lua scripts. (Quite efficient, but station entries of medium quality.) check-in: 26b942d018 user: mario tags: trunk | |
Changes
Added channels/itunes.py version [a84557177e].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 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 | # encoding: UTF-8 # api: streamtuner2 # title: iTunes Radio (via RS) # description: iTunes unsorted station list via RoliSoft Radio Playlist caching webservice. # version: 0.1 # type: channel # category: radio # priority: optional # documentation: http://lab.rolisoft.net/playlists.html # # Provides pre-parsed radio station playlists for various services # → Shoutcast # → Xiph/ICEcast # → Tunein # → iTunes # → FilterMusic # → SomaFM # → AccuRadio # → BBC # # In this module only iTunes will be queried for now. # # import re from config import conf, dbg, __print__ from channels import * import ahttp as http # Surfmusik sharing site class itunes (ChannelPlugin): # description title = "iTunes RS" module = "itunes" #module = "rs_playlist" homepage = "http://www.itunes.com?" has_search = False listformat = "audio/x-scpls" titles = dict(listeners=False, bitrate=False, playing=False) categories = [ "Adult Contemporary", "Alternative Rock", "Ambient", "Blues", "Classic Rock", "Classical", "College", "Comedy", "Country", "Eclectic", "Electronica", "Golden Oldies", "Hard Rock", "Hip Hop", "International", "Jazz", "News", "Raggae", "Religious", "RnB", "Sports Radio", "Top 40", "'70s Retro", "'80s Flashback", "'90s Hits", ] config = [ ] base = "http://lab.rolisoft.net/playlists/itunes.php" #base = "http://aws-eu.rolisoft.net/playlists/itunes.php" #base = "http://aws-us.rolisoft.net/playlists/itunes.php" # static list for iTunes def update_categories(self): pass # Just copy over stream URLs and station titles def update_streams(self, cat, search=None): m3u = http.get(self.base, {"category": cat.lower()}) if len(m3u) < 256: __print__(dbg.ERR, m3u) rx_m3u = re.compile(r""" ^File(\d+)\s*=\s*(http://[^\s]+)\s*$\s* ^Title\1\s*=\s*([^\r\n]+)\s*$\s* """, re.M|re.I|re.X) r = [] for e in rx_m3u.findall(m3u): r.append(dict( genre = cat, url = e[1], title = e[2], format = "audio/mpeg", playing = "", )) return r |