#!/usr/bin/env python3

# Copyright (C) 2013-2014 LiuLang <gsushzhsosgsu@gmail.com>

# Use of this source code is governed by GPLv3 license that can be found
# in the LICENSE file.

import os
import sys
import time

import dbus
from gi.repository import Gtk

BUS_NAME = 'org.mpris.MediaPlayer2.kwplayer'
LOG_INTERVAL = 30 * 86400  # 30 days
MPRIS_PATH = '/org/mpris/MediaPlayer2'
ROOT_IFACE = 'org.mpris.MediaPlayer2'

def check_loaded():
    '''Check kwplayer is running.
    
    If kwplayer is running, raise kwplayer window and returns True,
    otherwise returns False.'''
    sb = dbus.SessionBus()
    try:
        kw_proxy = sb.get_object(BUS_NAME, MPRIS_PATH)
        prop = dbus.Interface(kw_proxy, ROOT_IFACE)
        prop.Raise()
        return True
    except dbus.exceptions.DBusException:
        return False

def load_app():
    from kuwo.App import App
    # handle errors
    logfile = os.path.expanduser('~/.config/kuwo/kwplayer-stderr.log')
    dirname = os.path.dirname(logfile)
    if not os.path.exists(dirname):
        try:
            os.makedirs(dirname)
        except Exception:
            sys.exit(1)
    if (os.path.exists(logfile) and
            time.time() - os.stat(logfile).st_ctime > LOG_INTERVAL):
        os.remove(logfile)
    sys.stderr = open(logfile, 'a')

    app = App()
    sys.exit(app.run(sys.argv))

def main():
    if not check_loaded():
        load_app()

if __name__ == '__main__':
    main()
