Added in bin/zukebox-server the logging
[zukebox] / zukebox_server / src / bin / zukebox-server
1 #!/usr/bin/env python
2
3 import os
4 import sys
5 import socket
6 from brisa.core import config
7 from brisa.core import log
8 from brisa.core.system import daemonize
9 from brisa.utils import options
10
11 import zukebox_server
12 from zukebox_server.system import linux
13 from zukebox_server.server.zb_server import ZukeBoxServer
14
15 pjoin = os.path.join
16 pexists = os.path.exists
17
18 home_path = os.path.expanduser("~")
19 zb_base_path = pjoin(home_path, ".zukebox")
20 zb_database_path = pjoin(zb_base_path, "audio_library.db")
21 zb_module_path = zukebox_server.__path__[0]
22 zb_plugins_path = pjoin(zb_module_path, "plugins")
23 zb_services_path = pjoin(zb_module_path, "services")
24 zb_xml_path = pjoin(zb_module_path, "xml_descriptions")
25
26 plugin_section = "zukebox_server_plugin-audio-library"
27
28 def get_zbus_service():
29     import dbus
30     bus = dbus.SessionBus()
31     bus_obj = bus.get_object("br.org.zagaia",
32             "/br/org/zagaia/ZukeBox")
33     bus_iface = dbus.Interface(bus_obj, "br.org.zagaia.ZukeBox")
34     log.info("zukebox-server.executing rescan audio path...")
35     bus_iface.rescan_audio_folder()
36
37 def config_dot_zb():
38     log.info("creating the dot zukebox path")
39     version = pjoin(zb_base_path, "version")
40     version_str = "0.1"
41
42     def init_dot_zb():
43         os.makedirs(zb_base_path, 0700)
44         open(version, "w").write(version_str)
45
46     if not pexists(zb_base_path):
47         init_dot_zb()
48         return
49
50 def setup_zukebox():
51     log.info("setting the zukebox variables in config.manager")
52     # ZBox Server
53     config.manager.set_parameter("zukebox_server", "name", "ZukeBox Server")
54     config.manager.set_parameter("zukebox_server", "owner", "zukebox-server")
55     config.manager.set_parameter("zukebox_server", "module_path", zb_module_path)
56     config.manager.set_parameter("zukebox_server", "plugins", zb_plugins_path)
57     config.manager.set_parameter("zukebox_server", "services", zb_services_path)
58     config.manager.set_parameter("zukebox_server", "xml_path", zb_xml_path)
59
60     # ZBox Plugins
61     config.manager.set_parameter(plugin_section, "owner",
62             "zukebox_server_plugin-audio_library")
63     config.manager.set_parameter(plugin_section, "database_location",
64             zb_database_path)
65     config.manager.set_parameter(plugin_section, "enable", True)
66
67     sp = linux.SystemProperties()
68     audio_folder = sp.DEFAULT_DIR_AUDIO
69
70     config.manager.set_parameter(plugin_section, "audio_folder", audio_folder)
71     config.manager.save()
72
73
74 def init_server():
75     log.info("ZukeBox Server starting....")
76     listen_url, daemon = options.parse_args("ZukeBox Server")
77     print listen_url, deamon
78     if daemon:
79         daemonize()
80     server_name = config.get_parameter("zukebox_server", "name")
81     zb_srv = ZukeBoxServer(server_name, listen_url)
82     zb_srv.start()
83
84 def main():
85     config_dot_zb()
86     setup_zukebox()
87     init_server()
88
89 if __name__ == '__main__':
90     main()