1 #The zukebox server search service implementation
3 from brisa.core.reactors import install_default_reactor
4 reactor = install_default_reactor()
6 from os.path import join, dirname, abspath
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
12 plugin_section = 'zukebox_server_plugin-audio-library'
13 db_path = manager.get_parameter(plugin_section, 'database_location')
16 class SearchOutBoundExcept(Exception):
17 def __init__(self, *args, **kargs):
18 Exception.__init__(self, *args, **kargs)
21 class Search(Service):
23 Implements a search service of zukebox-server
26 service_type = "urn:schemas-upnp-org:service:Search:1"
27 service_name = "Search"
28 facade = ZFacade(db_path, webserver)
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)
36 self.name_music_list = []
37 self.name_artist_list = []
38 self.all_audio_list = []
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}
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}
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}
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}