Updating the service search to python-brisa 0.10 version.
[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 SearchOutBoundExcept(Exception):
17     def __init__(self, *args, **kargs):
18         Exception.__init__(self, *args, **kargs)
19
20
21 class Search(Service):
22         """Class Search
23            Implements a search service of zukebox-server
24         """
25
26         service_type = "urn:schemas-upnp-org:service:Search:1"
27         service_name = "Search"
28         facade = ZFacade(db_path, webserver)
29
30         def __init__(self, xml_path):
31             scpd_path = pjoin(xml_path, "zukebox-search-scpd.xml");
32             Service.__init__(self, service_name, service_type, '', scpd_path)
33             log.info("Search service scpd_path = %s" % scpd_path)
34
35             self.genre_list = []
36             self.name_music_list = []
37             self.name_artist_list = []
38             self.all_audio_list = []
39
40         def soap_SearchGenreList(self, *args, **kargs):
41             self.genreType = kwargs['GenreType']
42             self.genre_list = self.facade.get_audio_genre(self.genreType)
43             rt = {"Genre_list": self.genre_list}
44             return {"SearchGenreList": rt}
45
46         def soap_SearchMusicList(self, *args, **kargs):
47             self.musicName = kwargs['MusicName']
48             self.name_music_list = self.facade.get_audio_item(self.musicName)
49             rt = {"Music_list": self.name_music_list}
50             return {"SearchMusicList": rt}
51
52         def soap_SearchArtistList(self, *args, **kargs):
53             self.artistName = kwargs['ArtistName']
54             self.name_artist_list = self.facade.get_audio_artist(self.artistName)
55             rt = {"Artist_list": self.name_artist_list}
56             return {"SearchArtistList": rt}
57
58         def soap_SearchAllAudioList(self, *args, **kargs):
59             self.all_audio_list = self.facade.get_audio_all()
60             rt = {"All_Audio_list": self.all_audio_list}
61             return {"SearchAllAudioList": rt}
62