1
2
3
4
5
6
7
8
9
10
11 | # encoding: UTF-8
# api: streamtuner2
# title: Xiph.org
# description: ICEcast radios. Scans per JSON API, slow XML, or raw directory.
# type: channel
# url: http://dir.xiph.org/
# version: 0.8
# category: radio
# config:
# { name: xiph_source, value: buffy, type: select, select: "cache=JSON cache srv|xml=Clunky XML blob|buffy=Buffy YP.XML|web=Forbidden fruits", description: "Source for station list extraction." }
# { name: xiph_filter, value: 1, type: bool, description: "Filter duplicate stations from list." } |
|
| 1
2
3
4
5
6
7
8
9
10
11 | # encoding: UTF-8
# api: streamtuner2
# title: Xiph.org
# description: ICEcast radios. Scans either the raw website or the slow XML feed
# type: channel
# url: http://dir.xiph.org/
# version: 0.8
# category: radio
# config:
# { name: xiph_source, value: buffy, type: select, select: "cache=JSON cache srv|xml=Clunky XML blob|buffy=Buffy YP.XML|web=Forbidden fruits", description: "Source for station list extraction." }
# { name: xiph_filter, value: 1, type: bool, description: "Filter duplicate stations from list." } |
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269 | return self.filter_duplicates(r)
# strip entries by title+playing from Xiph BETA result list
def filter_duplicates(self, entries):
if "xiph_filter" not in conf or not int(conf.xiph_filter):
return entries
seen = []
filt_r = filter(lambda row: row["title"] not in seen and not seen.append(row["title"]), entries)
return filt_r
for row in entries:
curr = (row["title"], row["playing"])
if not curr in seen:
filt_r.append(row)
seen.append(curr)
return filt_r
# Regex dict
def rx_all(self, fields, src, flags=re.X):
row = {}
for k, v in fields.items():
m = re.search(v, src, flags)
if m: |
<
|
>
|
<
<
<
<
<
>
| 248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265 | return self.filter_duplicates(r)
# strip entries by title+playing from Xiph BETA result list
def filter_duplicates(self, entries):
if "xiph_filter" not in conf or not int(conf.xiph_filter):
return entries
seen = []
return filter(
lambda r: not(r["title"]+r["playing"] in seen or seen.append(r["title"]+r["playing"])),
entries
)
# Regex dict
def rx_all(self, fields, src, flags=re.X):
row = {}
for k, v in fields.items():
m = re.search(v, src, flags)
if m: |