#!/usr/bin/env python import os import sys import socket from brisa.core import config from brisa.core import log from brisa.core.system import daemonize from brisa.utils import options import zukebox_server from zukebox_server.system import linux from zukebox_server.server.zukebox_server import ZukeBoxServer pjoin = os.path.join pexists = os.path.exists home_path = os.path.expanduser("~") zb_base_path = pjoin(home_path, ".zukebox") zb_database_path = pjoin(zb_base_path, "audio_library.db") zb_module_path = zukebox_server.__path__[0] zb_plugins_path = pjoin(zb_module_path, "plugins") plugin_section = "zukebox_server_plugin-audio-library" def get_zbus_service(): import dbus bus = dbus.SessionBus() bus_obj = bus.get_object("br.org.zagaia", "/br/org/zagaia/ZukeBox") bus_iface = dbus.Interface(bus_obj, "br.org.zagaia.ZukeBox") log.info("zukebox-server.executing rescan audio path...") bus_iface.rescan_audio_folder() def config_dot_zb(): log.info("creating the dot zukebox path") version = pjoin(zb_base_path, "version") version_str = "0.1" def init_dot_zb(): os.makedirs(zb_base_path, 0700) open(version, "w").write(version_str) if not pexists(zb_base_path): init_dot_zb() return def setup_zukebox(): log.info("setting the zukebox variables in config.manager") # ZBox Server config.manager.set_parameter("zukebox_server", "name", "ZukeBox Server") config.manager.set_parameter("zukebox_server", "owner", "zukebox-server") config.manager.set_parameter("zukebox_server", "home", zb_module_path) config.manager.set_parameter("zukebox_server", "plugins", zb_plugins_path) # ZBox Plugins config.manager.set_parameter(plugin_section, "owner", "zukebox_server_plugin-audio_library") config.manager.set_parameter(plugin_section, "database_location", zb_database_path) config.manager.set_parameter(plugin_section, "enable", True) sp = linux.SystemProperties() audio_folder = sp.DEFAULT_DIR_AUDIO config.manager.set_parameter(plugin_section, "audio_folder", audio_folder) config.manager.save() def init_server(): log.info("ZukeBox Server starting....") listen_url, daemon = options.parse_args("ZukeBox Server") if daemon: daemonize() server_name = config.get_parameter("zukebox_server", "name") zb_server = ZukeBoxServer(server_name, listen_url) zb_server.start() def main(): config_dot_zb() setup_zukebox() init_server() get_zbus_service() if __name__ == '__main__': main()