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 Search(Service):
18 Implements a search service of zukebox-server
21 service_type = "urn:schemas-upnp-org:service:Search:1"
22 service_name = "Search"
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))
29 def get_list_audio(self):
30 return self.control_controller.get_list_audio()
32 class SearchController(ServiceController):
34 Implements a search service of zukebox-server
36 facade = ZFacade(db_path, webserver)
38 def __init__(self, service_type):
39 ServiceController.__init__(self, service_type)
41 self.name_music_list = []
42 self.name_artist_list = []
43 self.all_audio_list = []
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}
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}
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}
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}