Example #1
0
 def revokeAuth(self):
     url = "oauth/revoke"
     postData = {"token": tools.getSetting('trakt.auth')}
     self.post_request(url, postData, limit=False)
     tools.setSetting('trakt.auth', '')
     tools.setSetting('trakt.refresh', '')
     tools.setSetting('trakt.username', '')
     from resources.lib.modules.trakt_sync import activities
     database = activities.TraktSyncDatabase()
     database.clear_user_information()
     tools.showDialog.ok(tools.addonName, tools.lang(32030))
Example #2
0
    def re_build_database(self, silent=False):
        if not silent:
            confirm = tools.showDialog.yesno(tools.addonName,
                                             tools.lang(40139))
            if confirm == 0:
                return

        tools.traktSyncDB_lock.acquire()
        cursor = self._get_cursor()
        cursor.execute('DROP TABLE IF EXISTS shows')
        cursor.execute('DROP TABLE IF EXISTS seasons')
        cursor.execute('DROP TABLE IF EXISTS episodes')
        cursor.execute('DROP TABLE IF EXISTS movies')
        cursor.execute('DROP TABLE IF EXISTS activities')
        cursor.execute('DROP TABLE IF EXISTS hidden')
        cursor.execute('DROP TABLE IF EXISTS lists')
        cursor.execute('DROP TABLE IF EXISTS bookmark')
        cursor.connection.commit()
        cursor.close()
        tools.try_release_lock(tools.traktSyncDB_lock)

        self._build_show_table()
        self._build_episode_table()
        self._build_movies_table()
        self._build_hidden_items()
        self._build_sync_activities()
        self._build_season_table()
        self._build_lists_table()
        self._build_bookmark_table()

        self._set_base_activites()
        self._refresh_activites()

        from resources.lib.modules.trakt_sync import activities
        sync_errors = activities.TraktSyncDatabase().sync_activities(silent)

        if sync_errors:
            tools.showDialog.notification(tools.addonName + ': Trakt',
                                          tools.lang(40353),
                                          time=5000)
        elif sync_errors is None:
            self._refresh_activites()
            return
        else:
            tools.showDialog.notification(tools.addonName + ': Trakt',
                                          tools.lang(40262),
                                          time=5000)
Example #3
0
    def auth(self):

        url = 'https://api.trakt.tv/oauth/device/code'
        postData = {'client_id': self.ClientID}
        response = requests.post(url, data=postData)
        if not response.ok:
            tools.showDialog.ok(tools.addonName, tools.lang(40113))
            return
        response = json.loads(response.text)
        try:
            user_code = response['user_code']
            device = response['device_code']
            interval = int(response['interval'])
            expiry = int(response['expires_in'])
        except:
            tools.showDialog.ok(tools.addonName, tools.lang(32032))
            return
        currentTime = 0
        tools.copy2clip(user_code)
        tools.progressDialog.create(
            tools.addonName + ': ' + tools.lang(32031),
            tools.lang(32024) +
            tools.colorString('https://trakt.tv/activate \n') +
            tools.lang(32025) + tools.colorString(user_code) + "\n" +
            tools.lang(32071))
        tools.progressDialog.update(100)
        while currentTime < (expiry - interval):
            if tools.progressDialog.iscanceled():
                tools.progressDialog.close()
                return
            progressPercent = int(100 - ((float(currentTime) / expiry) * 100))
            tools.progressDialog.update(progressPercent)
            sleep(interval)
            postData = {
                'code': device,
                'client_id': self.ClientID,
                'client_secret': self.ClientSecret
            }
            url = 'https://api.trakt.tv/oauth/device/token'
            response = requests.post(url, data=postData)

            if '200' in str(response):
                response = json.loads(response.text)
                tools.setSetting('trakt.auth', response['access_token'])
                tools.setSetting('trakt.refresh', response['refresh_token'])
                self.AccessToken = response['access_token']
                self.headers = {
                    'trakt-api-version': '2',
                    'trakt-api-key': self.ClientID,
                    'content-type': 'application/json'
                }

                if not self.AccessToken is '':
                    self.headers[
                        'Authorization'] = 'Bearer %s' % self.AccessToken
                username = self.get_username()
                tools.setSetting('trakt.username', username)
                tools.progressDialog.close()
                tools.showDialog.ok(tools.addonName,
                                    'Sucessfully authenticated with Trakt')

                # Synchronise Trakt Database with new user
                from resources.lib.modules.trakt_sync import activities
                database = activities.TraktSyncDatabase()
                if database.activites['trakt_username'] != username:
                    database.clear_user_information()
                    database.flush_activities(False)
                    database._build_sync_activities()
                    database.set_trakt_user(username)
                    tools.execute(
                        'RunPlugin("plugin://plugin.video.%s/?action=syncTraktActivities")'
                        % tools.addonName.lower())
                break
            if '400' in str(response):
                pass
            else:
                tools.progressDialog.close()
                tools.showDialog.ok(tools.addonName, tools.lang(32032))
                break