-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinterface.py
More file actions
113 lines (95 loc) · 3.29 KB
/
Copy pathinterface.py
File metadata and controls
113 lines (95 loc) · 3.29 KB
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
106
107
108
109
110
111
from utils import *
import xbmcgui
class Element:
def __init__(self, title="", args={}):
self.is_folder = False
self.title = title
self.mode = "url"
self.art = None
self.args = {k: v[0] for k, v in args.items()}
def set_mode(self, mode):
self.mode = mode
def is_folder(self):
return self.is_folder
def construct(self):
li = xbmcgui.ListItem(self.title)
li.setIsFolder(self.is_folder)
li.setArt(self.art)
self.args['mode'] = self.mode
new_url = build_url(self.args)
return (new_url, li, True)
def add(self, kodi_list):
kodi_tuple = self.construct()
kodi_list.append(kodi_tuple)
class Search(Element):
def __init__(self, args):
super().__init__(localize(30100), args)
self.is_folder = True
self.mode = "search"
class Podcasts(Element):
def __init__(self, args):
super().__init__(localize(30104), args)
self.is_folder = True
self.mode = "podcasts"
class Page(Element):
def __init__(self, num, plus, args):
super().__init__(localize(30101) if plus == -1 else localize(30102), args)
self.is_folder = True
self.args['page'] = num + plus
class Pages(Element):
def __init__(self, item, args):
self.is_folder = True
num, last = item.pages
self.pages = []
if num > 1:
self.pages.append(Page(num, -1, args))
if num < last:
self.pages.append(Page(num, +1, args))
def add(self, kodi_list):
for page in self.pages:
page.add(kodi_list)
class Folder(Element):
def __init__(self, item, args):
super().__init__(item.title, args)
self.is_folder = True
self.art = {'thumb': item.image, 'icon': item.icon}
self.args = {
'title': item.title,
'url': item.path,
'mode': "url",
}
class Indexed(Element):
def __init__(self, item, url, index, args):
super().__init__("⭐ " + item.title if item.title is not None else "", args)
self.is_folder = True
self.art = {'thumb': item.image, 'icon': item.icon}
self.mode = "index"
self.args = {
'title': item.title,
'url': url,
'index': index,
}
class Playable(Element):
def __init__(self, item, args):
super().__init__(item.title, args)
self.art = {'thumb': item.image, 'icon': item.icon}
self.is_folder = False
self.genre = item.genre if item.model == Model['BRAND'] else "podcast"
self.artists = item.artists
self.duration = item.duration if item.duration is not None else 0
self.release = item.release
self.args['url'] = item.path
self.path = item.path
self.mode = "brand" if item.model == Model["BRAND"] else "stream"
def construct(self):
(url, li, _) = super().construct()
li.setProperty("IsPlayable", "true")
tag = li.getMusicInfoTag(offscreen=True)
tag.setMediaType("audio")
tag.setTitle(self.title)
tag.setURL(self.path)
tag.setGenres([self.genre])
tag.setArtist(self.artists)
tag.setDuration(self.duration)
tag.setReleaseDate(self.release)
return url, li, False