-
Notifications
You must be signed in to change notification settings - Fork 3
/
__init__.py
59 lines (51 loc) · 1.93 KB
/
__init__.py
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
from os.path import join, dirname
from ovos_workshop.skills.common_play import OVOSCommonPlaybackSkill, \
MediaType, PlaybackType, ocp_search, ocp_featured_media
from tunein import TuneIn
class TuneInSkill(OVOSCommonPlaybackSkill):
def __init__(self, *args, **kwargs):
self.supported_media = [MediaType.RADIO]
self.skill_icon = join(dirname(__file__), "res", "tunein.png")
super().__init__(*args, **kwargs)
@ocp_featured_media()
def featured_media(self):
return [{
"match_confidence": 90,
"media_type": MediaType.RADIO,
"uri": ch.stream,
"playback": PlaybackType.AUDIO,
"image": ch.image,
"bg_image": ch.image,
"skill_icon": self.skill_icon,
"title": ch.title,
"artist": ch.artist,
"author": "TuneIn",
"length": 0
} for ch in TuneIn.featured()]
@ocp_search()
def search_tunein(self, phrase, media_type):
base_score = 0
if media_type == MediaType.RADIO or self.voc_match(phrase, "radio"):
base_score += 30
else:
base_score -= 30
if self.voc_match(phrase, "tunein"):
base_score += 50 # explicit request
phrase = self.remove_voc(phrase, "tunein")
for ch in TuneIn.search(phrase):
score = base_score + ch.match(phrase)
if self.voc_match(ch.title, "radio"):
score += 5
yield {
"match_confidence": min(100, score),
"media_type": MediaType.RADIO,
"uri": ch.stream,
"playback": PlaybackType.AUDIO,
"image": ch.image,
"bg_image": ch.image,
"skill_icon": self.skill_icon,
"title": ch.title,
"artist": ch.artist,
"author": "TuneIn",
"length": 0
}