from couchpotato.core.logger import CPLog
from couchpotato.core.notifications.base import Notification

log = CPLog(__name__)

class Trakt(Notification):

    urls = {
        'base': 'http://api.trakt.tv/%s',
        'library': 'movie/library/%s',
        'unwatchlist': 'movie/unwatchlist/%s',
    }

    listen_to = ['movie.downloaded']

    def notify(self, message = '', data = None, listener = None):
        if not data: data = {}

        post_data = {
            'username': self.conf('automation_username'),
            'password' : self.conf('automation_password'),
            'movies': [{
                'imdb_id': data['library']['identifier'],
                'title': data['library']['titles'][0]['title'],
                'year': data['library']['year']
            }] if data else []
        }

        result = self.call((self.urls['library'] % self.conf('automation_api_key')), post_data)
        if self.conf('remove_watchlist_enabled'):
            result = result and self.call((self.urls['unwatchlist'] % self.conf('automation_api_key')), post_data)

        return result

    def call(self, method_url, post_data):

        try:
            response = self.getJsonData(self.urls['base'] % method_url, params = post_data, cache_timeout = 1)
            if response:
                if response.get('status') == "success":
                    log.info('Successfully called Trakt')
                    return True
        except:
            pass

        log.error('Failed to call trakt, check your login.')
        return False
