Beispiel #1
0
 def auth(self):
     data = {'client_id': CLIENT_ID, 'response_type': 'device_code'}
     token = requests.post('https://www.premiumize.me/token',
                           data=data,
                           timeout=15).json()
     expiry = float(token['expires_in'])
     token_ttl = token['expires_in']
     poll_again = True
     success = False
     progressDialog = control.progressDialog
     progressDialog.create(
         control.lang(40054), control.progress_line %
         (control.lang(32513) % token['verification_uri'],
          control.lang(32514) % token['user_code'], ''))
     progressDialog.update(0)
     while poll_again and not token_ttl <= 0 and not progressDialog.iscanceled(
     ):
         poll_again, success = self.poll_token(token['device_code'])
         progress_percent = 100 - int((float(
             (expiry - token_ttl) / expiry) * 100))
         progressDialog.update(progress_percent)
         control.sleep(token['interval'] * 1000)
         token_ttl -= int(token['interval'])
     progressDialog.close()
     if success:
         control.notification(title=40057, message=40081, icon=pm_icon)
Beispiel #2
0
 def poll_token(self, device_code):
     data = {
         'client_id': CLIENT_ID,
         'code': device_code,
         'grant_type': 'device_code'
     }
     token = requests.post('https://www.premiumize.me/token',
                           data=data,
                           timeout=15).json()
     if 'error' in token:
         if token['error'] == "access_denied":
             control.okDialog(title='default', message=control.lang(40020))
             return False, False
         return True, False
     self.token = token['access_token']
     self.headers = {
         'User-Agent': 'My Accounts for Kodi',
         'Authorization': 'Bearer %s' % self.token
     }
     control.sleep(500)
     account_info = self.account_info()
     control.setSetting('premiumize.token', token['access_token'])
     control.setSetting('premiumize.username',
                        str(account_info['customer_id']))
     return False, True
Beispiel #3
0
 def get_token(self):
     try:
         url = oauth_base_url + 'token'
         postData = {
             'client_id': self.client_ID,
             'client_secret': self.secret,
             'code': self.device_code,
             'grant_type': 'http://oauth.net/grant_type/device/1.0'
         }
         response = requests.post(url, data=postData).json()
         self.token = response['access_token']
         control.sleep(1500)
         account_info = self.account_info()
         username = account_info['username']
         control.setSetting('realdebrid.username', username)
         control.setSetting('realdebrid.client_id', self.client_ID)
         control.setSetting(
             'realdebrid.secret',
             self.secret,
         )
         control.setSetting('realdebrid.token', self.token)
         control.setSetting('realdebrid.refresh', response['refresh_token'])
         return True
     except Exception as e:
         log_utils.log('Real Debrid Authorization Failed: %s' % e, __name__,
                       log_utils.LOGDEBUG)
         return False
Beispiel #4
0
	def get_device_token(self, device_codes):
		try:
			data = {"code": device_codes["device_code"],
					"client_id": self.client_id,
					"client_secret": self.client_secret}
			start = time.time()
			expires_in = device_codes['expires_in']
			verification_url = control.lang(32513) % str(device_codes['verification_url'])
			user_code = control.lang(32514) % str(device_codes['user_code'])
			control.progressDialog.create(control.lang(32073), control.progress_line % (verification_url, user_code, ''))
			try:
				time_passed = 0
				while not control.progressDialog.iscanceled() and time_passed < expires_in:
					try:
						response = self.call("oauth/device/token", data=data, with_auth=False, suppress_error_notification=True)
					except requests.HTTPError as e:
						log_utils.log('Request Error: %s' % str(e), __name__, log_utils.LOGDEBUG)
						if e.response.status_code != 400: raise e
						progress = int(100 * time_passed / expires_in)
						control.progressDialog.update(progress)
						control.sleep(max(device_codes['interval'], 1)*1000)
					else:
						if not response: continue
						else: return response
					time_passed = time.time() - start
			finally:
				control.progressDialog.close()
			return None
		except:
			log_utils.error()
Beispiel #5
0
 def run(self):
     xbmc.log(
         '[ script.module.myaccounts ]  Addon checking available updates',
         LOGNOTICE)
     try:
         import re
         import requests
         repo_xml = requests.get(
             'https://raw.githubusercontent.com/a4k-openproject/repository.myaccounts/master/zips/addons.xml'
         )
         if repo_xml.status_code != 200:
             return xbmc.log(
                 '[ script.module.myaccounts ]  Could not connect to remote repo XML: status code = %s'
                 % repo_xml.status_code, LOGNOTICE)
         repo_version = re.findall(
             r'<addon id=\"script.module.myaccounts\".*version=\"(\d*.\d*.\d*.\d*)\"',
             repo_xml.text)[0]
         local_version = control.addonVersion()
         if control.check_version_numbers(local_version, repo_version):
             while control.condVisibility('Library.IsScanningVideo'):
                 control.sleep(10000)
             xbmc.log(
                 '[ script.module.myaccounts ]  A newer version is available. Installed Version: v%s, Repo Version: v%s'
                 % (local_version, repo_version), LOGNOTICE)
             control.notification(
                 title='default',
                 message=
                 'A new verison of My Accounts is available from the repository. Please consider updating to v%s'
                 % repo_version,
                 icon='default',
                 time=5000,
                 sound=False)
     except:
         import traceback
         traceback.print_exc()
Beispiel #6
0
	def get_token(self):
		try:
			url = oauth_base_url + 'token'
			postData = {'client_id': self.client_ID, 'client_secret': self.secret, 'code': self.device_code, 'grant_type': 'http://oauth.net/grant_type/device/1.0'}
			response = requests.post(url, data=postData)
			# log_utils.log('Authorizing Real Debrid Result: | %s |' % response, level=log_utils.LOGDEBUG)

			if '[204]' in str(response): return False, str(response)
			if 'Temporarily Down For Maintenance' in response.text:
				control.notification(message='Real-Debrid Temporarily Down For Maintenance', icon=rd_icon)
				log_utils.log('Real-Debrid Temporarily Down For Maintenance', level=log_utils.LOGWARNING)
				return False, response.text
			else: response = response.json()

			if 'error' in str(response):
				log_utils.log('response=%s' % str(response), __name__)
				message = response.get('error')
				control.notification(message=message, icon=rd_icon)
				log_utils.log('Real-Debrid Error:  %s' % message, level=log_utils.LOGWARNING)
				return False, response

			self.token = response['access_token']
			control.sleep(500)
			account_info = self.account_info()
			username = account_info['username']
			control.setSetting('realdebrid.username', username)
			control.setSetting('realdebrid.client_id', self.client_ID)
			control.setSetting('realdebrid.secret', self.secret,)
			control.setSetting('realdebrid.token', self.token)
			control.setSetting('realdebrid.refresh', response['refresh_token'])
			return True, None
		except:
			log_utils.error('Real Debrid Authorization Failed : ')
			return False, None
Beispiel #7
0
 def auth_loop(self):
     control.sleep(self.auth_step * 1000)
     url = 'client_id=%s&code=%s' % (self.client_ID, self.device_code)
     url = oauth_base_url + credentials_url % url
     response = json.loads(requests.get(url).text)
     if 'error' in response:
         return  #
     else:
         try:
             control.progressDialog.close()
             self.client_ID = response['client_id']
             self.secret = response['client_secret']
         except:
             log_utils.error()
             control.okDialog(title='default', message=control.lang(40019))
         return
	def auth_loop(self):
		control.sleep(5000)
		response = requests.get(self.check_url, timeout=self.timeout).json()
		response = response['data']
		if 'error' in response:
			self.token = 'failed'
			return control.notification(title='default', message=40021, icon='default')
		if response['activated']:
			try:
				control.progressDialog.close()
				self.token = str(response['apikey'])
				control.setSetting('alldebrid.token', self.token)
			except:
				self.token = 'failed'
				return control.notification(title='default', message=40021, icon='default')
		return
	def auth(self):
		self.token = ''
		url = base_url + 'pin/get?agent=%s' % user_agent
		response = requests.get(url, timeout=self.timeout).json()
		response = response['data']
		control.progressDialog.create(control.lang(40056))
		control.progressDialog.update(-1, control.progress_line % (control.lang(32513) % 'https://alldebrid.com/pin/', control.lang(32514) % response['pin'], ''))
		self.check_url = response.get('check_url')
		control.sleep(2000)
		while not self.token:
			if control.progressDialog.iscanceled():
				control.progressDialog.close()
				break
			self.auth_loop()
		if self.token in (None, '', 'failed'):
			return
		control.sleep(2000)
		account_info = self.account_info()
		control.setSetting('alldebrid.username', str(account_info['user']['username']))
		control.notification(title=40059, message=40081, icon=ad_icon)
 def auth(self):
     try:
         code = self.get_device_code()
         token = self.get_device_token(code)
         if token:
             expires_at = time.time() + 60 * 60 * 24 * 30
             control.setSetting('trakt.expires', str(expires_at))
             control.setSetting('trakt.token', token["access_token"])
             control.setSetting('trakt.refresh', token["refresh_token"])
             control.sleep(1000)
             try:
                 user = self.call("users/me", with_auth=True)
                 control.setSetting('trakt.username', str(user['username']))
             except:
                 pass
             control.notification(message=40074, icon=trakt_icon)
             return True
         control.notification(message=40075, icon=trakt_icon)
         return False
     except:
         log_utils.error()
Beispiel #11
0
def openMASettings(query=None):
	control.openSettings(query)
	while not control.condVisibility('Window.IsVisible(addonsettings)'):
		control.sleep(250)
	control.release_active_monitor()