# -*- coding: utf-8 -*-
# Copyright (c) 2013 Paul Price, Artem Glebov

import os
import sys
import xbmc, xbmcaddon, xbmcgui
import transmissionrpc

__settings__ = xbmcaddon.Addon(id='script.transmission')

BASE_RESOURCE_PATH = xbmc.translatePath( os.path.join( __settings__.getAddonInfo('path'), 'resources', 'lib' ) )
sys.path.append (BASE_RESOURCE_PATH)

import common

class SubstitutePlayer(xbmc.Player):
    def __init__(self):
        xbmc.Player.__init__(self)
        self.prev_settings = {}
        self.refreshSettings()

    def onPlayBackStarted(self):
        self.refreshSettings()
        if self.active and xbmc.Player().isPlayingVideo():
            self.stopAllTorrents()

    def onPlayBackStopped(self):
        self.refreshSettings()
        if self.active:
            self.startAllTorrents()

    def startAllTorrents(self):
        if self.transmission:
            torrents = self.transmission.list()
            for tid, torrent in torrents.iteritems():
                self.transmission.start(tid)

    def stopAllTorrents(self):
        if self.transmission:
            torrents = self.transmission.list()
            for tid, torrent in torrents.iteritems():
                self.transmission.stop(tid)

    def refreshSettings(self):
        settings = common.get_settings()
        if settings != self.prev_settings:
            self.active = (settings['stop_all_on_playback'] == 'true')
            try:
                self.transmission = common.get_rpc_client()
            except:
                self.transmission = None
            self.prev_settings = settings

player = SubstitutePlayer()

while (not xbmc.abortRequested):
    xbmc.sleep(5000);