After a terrible flu, commiting search service.
[zukebox] / zukebox_server / src / services / search / zukebox_search.py
1 #The zukebox server search service implementation
2
3 from brisa.core.reactors import install_default_reactor
4 reactor = install_default_reactor()
5
6 from os.path import join, dirname, abspath
7
8 from brisa.core.config import manager
9 from brisa.upnp.device import Device, Service, ServiceController
10 from zukebox_server.src.plugins.zfacade import ZFacade
11
12 plugin_section = 'zukebox_server_plugin-audio-library'
13 db_path = manager.get_parameter(plugin_section, 'database_location')
14 webserver = None
15
16 class Search(Service):
17         """Class Search
18            Implements a search service of zukebox-server
19         """
20
21         service_type = "urn:schemas-upnp-org:service:Search:1"
22         service_name = "Search"
23
24         def __init__(self, xml_path):
25             scpd_path = pjoin(xml_path, "zukebox-search-scpd.xml");
26             Service.__init__(self, service_name, service_type, '', scpd_path,
27                 SearchController(service_type))
28
29         def get_list_audio(self):
30             return self.control_controller.get_list_audio()
31
32 class SearchController(ServiceController):
33         """Class Search:
34            Implements a search service of zukebox-server
35         """
36         facade = ZFacade(db_path, webserver)
37
38         def __init__(self, service_type):
39             ServiceController.__init__(self, service_type)
40             self.genre_list = []
41             self.name_music_list = []
42             self.name_artist_list = []
43             self.all_audio_list = []
44
45         def soap_SearchGenreList(self, *args, **kargs):
46             self.genreType = kwargs['GenreType']
47             self.genre_list = self.facade.get_audio_genre(self.genreType)
48             rt = {"Genre_list": self.genre_list}
49             return {"SearchGenreList": rt}
50
51         def soap_SearchMusicList(self, *args, **kargs):
52             self.musicName = kwargs['MusicName']
53             self.name_music_list = self.facade.get_audio_item(self.musicName)
54             rt = {"Music_list": self.name_music_list}
55             return {"SearchMusicList": rt}
56
57         def soap_SearchArtistList(self, *args, **kargs):
58             self.artistName = kwargs['ArtistName']
59             self.name_artist_list = self.facade.get_audio_artist(self.artistName)
60             rt = {"Artist_list": self.name_artist_list}
61             return {"SearchArtistList": rt}
62
63         def soap_SearchAllAudioList(self, *args, **kargs):
64             self.all_audio_list = self.facade.get_audio_all()
65             rt = {"All_Audio_list": self.all_audio_list}
66             return {"SearchAllAudioList": rt}
67