def auth(self): user_code = '' url = 'https://api.trakt.tv/oauth/device/code' postData = {'client_id': self.ClientID} response = requests.post(url, data=postData) 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).encode('utf-8')) return currentTime = 0 tools.copy2clip(user_code) tools.progressDialog.create( tools.addonName + ': ' + tools.lang(32031).encode('utf-8'), tools.lang(32024).encode('utf-8') + tools.colorString('https://trakt.tv/activate \n') + tools.lang(32025).encode('utf-8') + tools.colorString(user_code) + "\n" + tools.lang(32071).encode('utf-8')) 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.headers[ 'Authorization'] = 'Bearer %s' % response['access_token'] username = self.get_username() tools.setSetting('trakt.username', username) tools.progressDialog.close() tools.showDialog.ok(tools.addonName, 'Sucessfully authenticated with Trakt') break if '400' in str(response): pass else: tools.showDialog.ok(tools.addonName, tools.lang(32032).encode('utf-8')) tools.progressDialog.close() tools.showDialog.ok(tools.addonName, tools.lang(32033).encode('utf-8'))
def auth(self): self.ClientSecret = '' self.ClientID = 'X245A4XAIBGVM' url = ("client_id=%s&new_credentials=yes" % self.ClientID) url = self.OauthUrl + self.DeviceCodeUrl % url response = json.loads(requests.get(url).text) tools.copy2clip(response['user_code']) tools.progressDialog.create(tools.lang(32023)) tools.progressDialog.update(-1, tools.lang(32024).format(tools.colorString( 'https://real-debrid.com/device')), tools.lang(32025).format(tools.colorString( response['user_code'])), 'This code has been copied to your clipboard') self.OauthTimeout = int(response['expires_in']) self.OauthTimeStep = int(response['interval']) self.DeviceCode = response['device_code'] while self.ClientSecret == '': self.auth_loop() self.token_request() user_information = self.get_url('user') if user_information['type'] != 'premium': tools.showDialog.ok(tools.addonName, tools.lang(40156))
def auth(self): pin_url = '{}/pin/get?agent={}'.format(self.base_url, self.agent_identifier) resp = requests.get(pin_url).json() expiry = pin_ttl = int(resp['expired_in']) auth_complete = False tools.copy2clip(resp['pin']) tools.progressDialog.create('{} - {}'.format(tools.addonName, 'AllDebrid Auth')) tools.progressDialog.update(100, tools.lang(32024).format(tools.colorString(resp['base_url'])), tools.lang(32025).format(tools.colorString( resp['pin'])), 'This code has been copied to your clipboard') # Seems the All Debrid servers need some time do something with the pin before polling # Polling to early will cause an invalid pin error time.sleep(5) while not auth_complete and not expiry <= 0 and not tools.progressDialog.iscanceled(): auth_complete, expiry = self.poll_auth(resp['check_url']) progress_percent = 100 - int((float(pin_ttl - expiry) / pin_ttl) * 100) tools.progressDialog.update(progress_percent) time.sleep(1) try:tools.progressDialog.close() except:pass self.store_user_info() if auth_complete: tools.showDialog.ok(tools.addonName, 'AllDebrid {}'.format(tools.lang(32026))) else: return
def auth(self): data = {'client_id': self.client_id, 'response_type': 'device_code'} token = requests.post('https://www.premiumize.me/token', data=data).json() expiry = token['expires_in'] token_ttl = token['expires_in'] poll_again = True success = False tools.copy2clip(token['user_code']) tools.progressDialog.create(tools.addonName, line1=tools.lang(32024).format( tools.colorString( token['verification_uri'])), line2=tools.lang(32025).format( tools.colorString(token['user_code']))) tools.progressDialog.update(0) while poll_again and not token_ttl <= 0 and not tools.progressDialog.iscanceled( ): poll_again, success = self.poll_token(token['device_code']) progress_percent = 100 - int((float( (expiry - token_ttl) / expiry) * 100)) tools.progressDialog.update(progress_percent) time.sleep(token['interval']) token_ttl -= int(token['interval']) tools.progressDialog.close() if success: tools.showDialog.ok(tools.addonName, tools.lang(32026))
def auth(self): """ Performs OAuth with Trakt :return: None """ self.username = None response = self.post("oauth/device/code", data={"client_id": self.client_id}) if not response.ok: xbmcgui.Dialog().ok(g.ADDON_NAME, g.get_language_string(30162)) return try: response = response.json() user_code = response["user_code"] device = response["device_code"] interval = int(response["interval"]) expiry = int(response["expires_in"]) token_ttl = int(response["expires_in"]) except (KeyError, ValueError): xbmcgui.Dialog().ok(g.ADDON_NAME, g.get_language_string(30023)) raise tools.copy2clip(user_code) failed = False try: progress_dialog = xbmcgui.DialogProgress() progress_dialog.create( g.ADDON_NAME + ": " + g.get_language_string(30022), tools.create_multiline_message( line1=g.get_language_string(30018).format( g.color_string("https://trakt.tv/activate")), line2=g.get_language_string(30019).format( g.color_string(user_code)), line3=g.get_language_string(30047), ), ) progress_dialog.update(100) while (not failed and self.username is None and not token_ttl <= 0 and not progress_dialog.iscanceled()): xbmc.sleep(1000) if token_ttl % interval == 0: failed = self._auth_poll(device) progress_percent = int(float((token_ttl * 100) / expiry)) progress_dialog.update(progress_percent) token_ttl -= 1 progress_dialog.close() finally: del progress_dialog if not failed: xbmcgui.Dialog().ok(g.ADDON_NAME, g.get_language_string(30273)) self._sync_trakt_user_data_if_required()
def auth(self): url = "client_id={}&new_credentials=yes".format(self.client_id) url = self.oauth_url + self.device_code_url.format(url) response = self.session.get(url).json() tools.copy2clip(response["user_code"]) success = False try: progress_dialog = xbmcgui.DialogProgress() progress_dialog.create( g.ADDON_NAME + ": " + g.get_language_string(30017), tools.create_multiline_message( line1=g.get_language_string(30018).format( g.color_string("https://real-debrid.com/device") ), line2=g.get_language_string(30019).format( g.color_string(response["user_code"]) ), line3=g.get_language_string(30047), ), ) self.oauth_timeout = int(response["expires_in"]) token_ttl = int(response["expires_in"]) self.oauth_time_step = int(response["interval"]) self.device_code = response["device_code"] progress_dialog.update(100) while ( not success and not token_ttl <= 0 and not progress_dialog.iscanceled() ): xbmc.sleep(1000) if token_ttl % self.oauth_time_step == 0: success = self._auth_loop() progress_percent = int(float((token_ttl * 100) / self.oauth_timeout)) progress_dialog.update(progress_percent) token_ttl -= 1 progress_dialog.close() finally: del progress_dialog if success: self.token_request() user_information = self.get_url("user") if user_information["type"] != "premium": xbmcgui.Dialog().ok(g.ADDON_NAME, g.get_language_string(30194))
def auth(self): """ Initiates and performs OAuth process :return: None :rtype: None """ data = {"client_id": self.client_id, "response_type": "device_code"} token = self.session.post("https://www.premiumize.me/token", data=data).json() expiry = int(token["expires_in"]) token_ttl = int(token["expires_in"]) interval = int(token["interval"]) poll_again = True success = False tools.copy2clip(token["user_code"]) try: progress_dialog = xbmcgui.DialogProgress() progress_dialog.create( g.ADDON_NAME + ": " + g.get_language_string(30349), tools.create_multiline_message( line1=g.get_language_string(30018).format( g.color_string(token["verification_uri"]) ), line2=g.get_language_string(30019).format( g.color_string(token["user_code"]) ), line3=g.get_language_string(30047), ), ) progress_dialog.update(100) while poll_again and not token_ttl <= 0 and not progress_dialog.iscanceled(): xbmc.sleep(1000) if token_ttl % interval == 0: poll_again, success = self._poll_token(token["device_code"]) progress_percent = int(float((token_ttl * 100) / expiry)) progress_dialog.update(progress_percent) token_ttl -= 1 progress_dialog.close() finally: del progress_dialog if success: xbmcgui.Dialog().ok(g.ADDON_NAME, g.get_language_string(30020))
def auth(self): resp = self.get_json("pin/get", reauth=True) expiry = pin_ttl = int(resp["expires_in"]) auth_complete = False tools.copy2clip(resp["pin"]) try: progress_dialog = xbmcgui.DialogProgress() progress_dialog.create( g.ADDON_NAME + ": " + g.get_language_string(30334), tools.create_multiline_message( line1=g.get_language_string(30018).format( g.color_string(resp["base_url"]) ), line2=g.get_language_string(30019).format(g.color_string(resp["pin"])), line3=g.get_language_string(30047), ), ) # Seems the All Debrid servers need some time do something with the pin before polling # Polling to early will cause an invalid pin error xbmc.sleep(5 * 1000) progress_dialog.update(100) while ( not auth_complete and not expiry <= 0 and not progress_dialog.iscanceled() ): auth_complete, expiry = self.poll_auth(check=resp["check"], pin=resp["pin"]) progress_percent = 100 - int((float(pin_ttl - expiry) / pin_ttl) * 100) progress_dialog.update(progress_percent) xbmc.sleep(1 * 1000) progress_dialog.close() self.store_user_info() finally: del progress_dialog if auth_complete: xbmcgui.Dialog().ok( g.ADDON_NAME, "AllDebrid {}".format(g.get_language_string(30020)) ) else: return
def auth(self): self.ClientSecret = '' self.ClientID = 'X245A4XAIBGVM' url = ("client_id=%s&new_credentials=yes" % self.ClientID) url = self.OauthUrl + self.DeviceCodeUrl % url response = json.loads(requests.get(url).text) tools.copy2clip(response['user_code']) tools.progressDialog.create(tools.lang(32023).encode('utf-8')) tools.progressDialog.update( -1, tools.lang(32024).encode('utf-8') + ' %s' % tools.colorString('https://real-debrid.com/device'), tools.lang(32025).encode('utf-8') + ' %s' % tools.colorString(response['user_code']), 'This code has been copied to your clipboard') self.OauthTimeout = int(response['expires_in']) self.OauthTimeStep = int(response['interval']) self.DeviceCode = response['device_code'] while self.ClientSecret == '': self.auth_loop() self.token_request()
def auth(self): resp = self.get_json('pin/get') expiry = pin_ttl = int(resp['expires_in']) auth_complete = False tools.copy2clip(resp['pin']) tools.progressDialog.create( tools.addonName + ': AllDebrid Auth', line1=tools.getLangString(32024).format( tools.colorString(resp['base_url'])), line2=tools.getLangString(32025).format( tools.colorString(resp['pin'])), line3='This code has been copied to your clipboard') # Seems the All Debrid servers need some time do something with the pin before polling # Polling to early will cause an invalid pin error tools.kodi.sleep(5 * 1000) tools.progressDialog.update(100) while not auth_complete and not expiry <= 0 and not tools.progressDialog.iscanceled( ): auth_complete, expiry = self.poll_auth(check=resp['check'], pin=resp['pin']) progress_percent = 100 - int( (float(pin_ttl - expiry) / pin_ttl) * 100) tools.progressDialog.update(progress_percent) tools.kodi.sleep(1 * 1000) try: tools.progressDialog.close() except: pass self.store_user_info() if auth_complete: tools.showDialog.ok( tools.addonName, 'AllDebrid {}'.format(tools.getLangString(32026))) else: return
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