1
2
3
4
5
6
7
8
9
10
11
12
13
14 | # encoding: utf-8
# api: streamtuner2
# title: MyOggRadio
# description: Open source internet radio directory.
# type: channel
# category: radio
# version: 0.7
# url: http://www.myoggradio.org/
# depends: json, ahttp >= 1.5
# config:
# { name: myoggradio_login, type: text, value: "user:password", description: "Account for storing personal favourites." }
# { name: myoggradio_morph, type: boolean, value: 0, description: "Convert pls/m3u into direct shoutcast url." }
# priority: standard
# png: |
|
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14 | # encoding: utf-8
# api: streamtuner2
# title: MyOggRadio
# description: Open source internet radio directory.
# type: channel
# category: radio
# version: 0.7.5
# url: http://www.myoggradio.org/
# depends: json, ahttp >= 1.5
# config:
# { name: myoggradio_login, type: text, value: "user:password", description: "Account for storing personal favourites." }
# { name: myoggradio_morph, type: boolean, value: 0, description: "Convert pls/m3u into direct shoutcast url." }
# priority: standard
# png: |
|
30
31
32
33
34
35
36
37
38
39
40
41
42
43 |
from channels import *
from config import *
import action
from uikit import uikit
import ahttp
import re
import json
import copy
from uikit import gtk
|
>
| 30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 |
from channels import *
from config import *
import action
from uikit import uikit
import ahttp
import time
import re
import json
import copy
from uikit import gtk
|
|
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 | # bookmarks
elif (cat == "personal") and self.user_pw():
data = ahttp.get(self.api + "favoriten.json?user=" + self.user_pw()[0], encoding="utf-8")
entries = json.loads(data)
# unknown
else:
self.parent.status("Unknown category")
pass
# augment result list
for i,e in enumerate(entries):
entries[i]["homepage"] = self.api + "c_common_details.jsp?url=" + e["url"]
entries[i]["genre"] = cat
entries[i]["format"] = "audio/mpeg" |
|
| 87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | # bookmarks
elif (cat == "personal") and self.user_pw():
data = ahttp.get(self.api + "favoriten.json?user=" + self.user_pw()[0], encoding="utf-8")
entries = json.loads(data)
# unknown
else:
self.status("Unknown category")
pass
# augment result list
for i,e in enumerate(entries):
entries[i]["homepage"] = self.api + "c_common_details.jsp?url=" + e["url"]
entries[i]["genre"] = cat
entries[i]["format"] = "audio/mpeg" |
|
126
127
128
129
130
131
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 | if row["title"] in (r.get("title") for r in self.streams["common"]):
pass
elif row["url"] in (r.get("url") for r in self.streams["common"]):
pass
# send
else:
self.parent.status("Sharing station URL...")
self.upload(row)
sleep(0.5) # artificial slowdown, else user will assume it didn't work
# tell Gtk we've handled the situation
self.parent.status("Shared '" + row["title"][:30] + "' on MyOggRadio.org")
return True
# upload bookmarks
def send_bookmarks(self, entries=[]):
for e in (entries if entries else parent.bookmarks.streams["favourite"]):
self.upload(e)
# send row to MyOggRadio
def upload(self, e, form=0):
if e:
login = self.user_pw()
submit = {
"user": login[0], # api
"passwort": login[1], # api
"url": e["url"],
"bemerkung": e["title"],
"genre": e["genre"],
"typ": e["format"][6:],
"eintragen": "eintragen", # form
}
|
|
|
|
>
>
|
|
|
>
>
|
>
>
>
>
|
|
| 127
128
129
130
131
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 | if row["title"] in (r.get("title") for r in self.streams["common"]):
pass
elif row["url"] in (r.get("url") for r in self.streams["common"]):
pass
# send
else:
self.status("Sharing station URL...")
if (self.upload(row)):
# artificial slowdown, else user will assume it didn't work
self.status(0.5)
time.sleep(0.1)
# tell Gtk we've handled the situation
self.status("Shared '" + row["title"][:30] + "' on MyOggRadio.org", icon="gtk-save")
else:
self.status()
return True
# upload bookmarks
def send_bookmarks(self, entries=[]):
for e in (entries if entries else parent.bookmarks.streams["favourite"]):
self.upload(e)
# send row to MyOggRadio
def upload(self, e, form=0):
return True
if e:
login = self.user_pw()
if not login:
return
submit = {
"user": login[0], # api
"passwort": login[1], # api
"url": e["url"],
"bemerkung": e["title"],
"genre": e["genre"],
"typ": e["format"][6:],
"eintragen": "eintragen", # form
}
|
|
184
185
186
187
188
189
190
191
192
193
194
195 | if len(conf.myoggradio_login) and conf.myoggradio_login != "user:password":
return conf.myoggradio_login.split(":")
else:
lap = conf.netrc(["myoggradio", "myoggradio.org", "www.myoggradio.org"])
if lap:
return [lap[0] or lap[1], lap[2]]
else:
self.parent.status('<span background="orange">⛔ No login data for MyOggRadio configured. See F12 for setup, or F1 for help.</span>', timeout=10, markup=1);
pass
|
|
<
< | 193
194
195
196
197
198
199
200
201
202
| if len(conf.myoggradio_login) and conf.myoggradio_login != "user:password":
return conf.myoggradio_login.split(":")
else:
lap = conf.netrc(["myoggradio", "myoggradio.org", "www.myoggradio.org"])
if lap:
return [lap[0] or lap[1], lap[2]]
else:
self.status("No login data for MyOggRadio configured. See F12 for setup, or F1 for help.", timeout=10, icon="gtk-dialog-error")
pass
|