2 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
8 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
10 from brisa.core import log
11 from brisa.upnp.device import Service, ServiceController
13 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
16 class PlayListOutBoundExcept(Exception):
18 return "Play List Out of Bounds!"
23 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
24 class PlayList(Service):
28 Implements a playlist for ZukeBox server.
31 service_type = "urn:schemas-upnp-org:service:PlayList:1"
32 service_name = "PlayList"
33 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
35 def __init__(self, positions=10, xml_path):
36 scpd_path = pjoin(xml_path, "zukebox-playlist-scpd.xml")
37 Service.__init__(self, service_name, service_type, '', scpd_path,
38 PlayListControl(positions, service_type))
40 def get_playlist(self):
41 return self.control_controller.get_playlist()
43 class PlayListControl(ServiceController):
45 def __init__(self, positions, serv_type):
46 ServiceController.__init__(self, serv_type)
47 self.positions = positions
50 self.prev = self.current
54 self.current_uri = None
55 self.current_uri_metadata = None
59 def __init__(self, xml_path, positions=10):
60 scpd_path = pjoin(xml_path, "zukebox-playlist-scpd.xml")
61 Service.__init__(self, self.service_name, self.service_type, "", scpd_path, PlayListControl(positions, self.service_type))
63 def get_playlist(self):
64 return self.control_controller.get_playlist()
66 class PlayListControl(ServiceController):
68 def __init__(self, positions, serv_type):
69 ServiceController.__init__(self, serv_type)
72 self.prev = self.current
76 self.current_uri = None
77 self.current_uri_metadata = None
79 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
80 def soap_IsLocked(self, *args, **kwargs):
82 if not len(self.list) == self.positions:
84 rt = {"Locked": locked}
85 return {"IsLockedResponse": rt}
86 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
88 def soap_IsAvailble(self, *args, **kwargs):
90 if not len(self.list) == 0:
92 rt = {"Availble": availble}
93 return {"IsAvailbleResponse": rt}
96 def soap_IsAvailble(self, *args, **kwargs):
98 if not len(self.list) == 0:
100 rt = {"Availble": availble}
101 return {"IsAvailbleResponse": rt}
103 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
105 def soap_Append(self, *args, **kwargs):
106 """Put a object in the playlist
108 if not self.is_locked():
109 self.current_uri = kwargs["CurrentURI"]
110 self.current_uri_metadata = kwargs["CurrentURIMetaData"]
111 self.from_name = kwargs["FromName"]
112 self.to_name = kwargs["ToName"]
113 self.list.append(self.current_uri)
115 return {"Append": {}}
117 raise PlayListOutBoundExcept()
119 def soap_Drop(self, *args, **kwargs):
120 """Pop the object at position passed by index
122 if self.is_availble():
123 index = kwargs["Index"]
127 raise PlayListOutBoundExcept()
129 def soap_GetSizeOfPlayList(self, *args, **kwargs):
130 """Return the size of playlist"""
131 lenght = len(self.list)
132 rt = {"PlayListSize": lenght}
133 return {"GetSizeOfPlayListResponse": rt}
135 def soap_GetCurrent(self, *args, **kwargs):
136 if self.is_availble():
137 rt = {"CurrentPosition": self.list[self.current]}
138 return {"GetCurrentResponse": rt}
140 def clean_playlist(self):
141 if self.is_availble():
144 def get_playlist(self):