Merged
[zukebox] / zukebox_server / src / services / playlist / zukebox_playlist.py
1
2 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
3 import os
4 =======
5 import dbus.service
6 import os
7 pjoin = os.path.join
8 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
9
10 from brisa.core import log
11 from brisa.upnp.device import Service, ServiceController
12
13 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
14 pjoin = os.path.join
15
16 class PlayListOutBoundExcept(Exception):
17     def __rep__(self):
18         return "Play List Out of Bounds!"
19
20
21
22 =======
23 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
24 class PlayList(Service):
25     """Class PlayList
26     Introduction
27     ============
28     Implements a playlist for ZukeBox server.
29     """
30
31     service_type = "urn:schemas-upnp-org:service:PlayList:1"
32     service_name = "PlayList"
33 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
34
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))
39
40     def get_playlist(self):
41         return self.control_controller.get_playlist()
42
43 class PlayListControl(ServiceController):
44
45     def __init__(self, positions, serv_type):
46         ServiceController.__init__(self, serv_type)
47         self.positions = positions
48         self.list = []
49         self.current = 0
50         self.prev = self.current
51         self.next = None
52         self.from_name = None
53         self.to_name = None
54         self.current_uri = None
55         self.current_uri_metadata = None
56
57 =======
58
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))
62
63     def get_playlist(self):
64         return self.control_controller.get_playlist()
65
66 class PlayListControl(ServiceController):
67
68     def __init__(self, positions, serv_type):
69         ServiceController.__init__(self, serv_type)
70         self.list = []
71         self.current = 0
72         self.prev = self.current
73         self.next = None
74         self.from_name = None
75         self.to_name = None
76         self.current_uri = None
77         self.current_uri_metadata = None
78
79 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
80     def soap_IsLocked(self, *args, **kwargs):
81         locked = True
82         if not len(self.list) == self.positions:
83             locked = False
84         rt = {"Locked": locked}
85         return {"IsLockedResponse": rt}
86 <<<<<<< services:zukebox_server/src/services/playlist/zukebox_playlist.py
87
88     def soap_IsAvailble(self, *args, **kwargs):
89         availble = False
90         if not len(self.list) == 0:
91             availble = True
92         rt = {"Availble": availble}
93         return {"IsAvailbleResponse": rt}
94 =======
95
96     def soap_IsAvailble(self, *args, **kwargs):
97         availble = False
98         if not len(self.list) == 0:
99             availble = True
100         rt = {"Availble": availble}
101         return {"IsAvailbleResponse": rt}
102
103 >>>>>>> HEAD~0:zukebox_server/src/services/playlist/zukebox_playlist.py
104
105     def soap_Append(self, *args, **kwargs):
106         """Put a object in the playlist
107         """
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)
114
115             return {"Append": {}}
116         else:
117             raise PlayListOutBoundExcept()
118
119     def soap_Drop(self, *args, **kwargs):
120         """Pop the object at position passed by index
121         """
122         if self.is_availble():
123             index = kwargs["Index"]
124             self.list.pop(index)
125             return {"Drop": {}}
126         else:
127             raise PlayListOutBoundExcept()
128
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}
134
135     def soap_GetCurrent(self, *args, **kwargs):
136         if self.is_availble():
137             rt = {"CurrentPosition": self.list[self.current]}
138             return {"GetCurrentResponse": rt}
139
140     def clean_playlist(self):
141         if self.is_availble():
142             self.list = []
143
144     def get_playlist(self):
145         return self.list