Initial commit, adding files
[zukebox] / src / bin / zukebox-server
1 #!/usr/bin/env python
2
3 import os
4 import socket
5 from brisa.core import config
6 from brisa.core import log
7 from brisa.core.system import daemonize
8 from brisa.utils import options
9
10 import zukebox_server
11 from zukebox_server.system import linux
12 from zukebox_server.server.zukebox_server import ZukeBoxServer
13
14 pjoin = os.path.join
15 pexists = os.path.exists
16
17 home_path = os.path.expanduser("~")
18 zb_base_path = pjoin(home_path, ".zukebox")
19 zb_database_path = pjoin(zb_base_path, "audio_library.db")
20 zb_module_path = zukebox_server.__path__[0]
21 zb_plugins_path = pjoin(zb_module_path, "plugins")
22
23 plugin_section = "zukebox_server_plugin-audio-library"
24
25 def config_dot_zb():
26     version = pjoin(zb_base_path, "version")
27     version_str = "0.1"
28
29     def init_dot_zb():
30         os.makedirs(zb_base_path, 0700)
31         open(version, "w").write(version_str)
32
33     if not pexists(zb_base_path):
34         init_dot_zb()
35         return
36
37 def setup_zukebox():
38     # ZBox Server
39     config.manager.set_parameter("zukebox_server", "name", "ZukeBox Server")
40     config.manager.set_parameter("zukebox_server", "owner", "zukebox-server")
41     config.manager.set_parameter("zukebox_server", "home", zb_module_path)
42     config.manager.set_parameter("zukebox_server", "plugins", zb_plugins_path)
43
44     # ZBox Plugins
45     config.manager.set_parameter(plugin_section, "owner",
46             "zukebox_server_plugin-audio_library")
47     config.manager.set_parameter(plugin_section, "database_location",
48             zb_database_path)
49     config.manager.set_parameter(plugin_section, "enable", True)
50
51     sp = linux.SystemProperties()
52     audio_folder = sp.DEFAULT_DIR_AUDIO
53
54     config.manager.set_parameter(plugin_section, "audio_folder", audio_folder)
55     config.manager.save()
56
57
58 def init_server():
59     log.info("ZukeBox Server starting....")
60     listen_url, daemon = options.parse_args("ZukeBox Server")
61     if daemon:
62         daemonize()
63     server_name = config.get_parameter("zukebox_server", "name")
64     zb_server = ZukeBoxServer(server_name, listen_url)
65     zb_server.start()
66
67 def main():
68     config_dot_zb()
69     setup_zukebox()
70     init_server()
71
72 if __name__ == '__main__':
73     main()