def login(self, silent=False): query = ''' query ($name: String) { User(name: $name) { id } } ''' variables = {"name": self.username} resp = requests.post(self.site, json={ 'query': query, 'variables': variables }) results = json.loads(resp.content) if results.has_key('errors'): if silent != True: tools.showDialog.notification(tools.addonName, 'AniList - Login unsuccessful') else: tools.log('Anilist - Login unsuccessful') return tools.setSetting('ani.userid', str(results['data']['User']['id'])) if silent != True: tools.showDialog.notification(tools.addonName, 'AniList - Logged in successfully') else: tools.log('Anilist - Logged in successfully') return
def login(self, silent=False): try: login = requests.post(self.oauth + '/token', params={ 'grant_type': 'password', 'username': self.email, 'password': self.password }, headers=self.headers) info = json.loads(login.text) tools.setSetting('kitsu.access', str(info['access_token'])) tools.setSetting('kitsu.refresh', str(info['refresh_token'])) tools.setSetting('kitsu.create', str(info['created_at'])) tools.setSetting('kitsu.expiry', str(info['expires_in'])) user = requests.get( 'https://kitsu.io/api/edge/users?filter[name]=%s' % self.username, headers=self.headers) userdata = json.loads(user.content) userdata = userdata['data'][0] tools.setSetting('kitsu.userid', str(userdata['id'])) if silent != True: tools.showDialog.notification( tools.addonName, 'Kitsu - Logged in successfully') else: tools.log('Kitsu - Logged in successfully') except: if silent != True: tools.showDialog.notification(tools.addonName, 'Kitsu - Login unsuccessful') else: tools.log('Kitsu - Login unsuccessful')
def login(self, silent=False): session = requests.session() crsf_res = session.get(self.site).text crsf = (re.compile("<meta name='csrf_token' content='(.+?)'>").findall(crsf_res))[0] payload = { "user_name": self.username, "password": self.password, "cookie": 1, "sublogin": "******", "submit": 1, "csrf_token": crsf } url = self.site + '/login.php?from=%2F' session.get(url) result = session.post(url, data=payload) soup = BeautifulSoup(result.text, 'html.parser') results = soup.find_all('div', attrs={'class': 'badresult'}) if results: if silent != True: tools.showDialog.notification(tools.addonName, 'MAL - Login Unsuccessful') else: tools.log('MAL - Login Unsuccessful') return tools.setSetting('mal.logsess', str(session.cookies['MALHLOGSESSID'])) tools.setSetting('mal.sessionid', str(session.cookies['MALSESSIONID'])) if silent != True: tools.showDialog.notification(tools.addonName, 'MAL - Logged in successfully') else: tools.log('MAL - Logged in successfully') return
def _try_set_token(self): token = tools.getSetting('ws.token') if token == '': token = self._do_login() self._session.set_token(token) tools.setSetting('ws.token', token) self._is_authorized = True
def logout(self): tools.setSetting('kitsu.access', '') tools.setSetting('kitsu.refresh', '') tools.setSetting('kitsu.create', '') tools.setSetting('kitsu.expiry', '') tools.setSetting('kitsu.userid', '') tools.showDialog.notification(tools.addonName, 'Kitsu - Logged out successfully') return
from resources.lib.modules import accounts accounts.Kitsu().login() if action == 'malLogin': from resources.lib.modules import accounts accounts.Mal().login() if action == 'anilistLogin': from resources.lib.modules import accounts accounts.Anilist().login() #Admin Commands if action == 'adminCommands': if tools.getSetting('admin.warning') == 'false': warning = tools.showDialog.yesno( tools.addonName, 'These commands enable features that are not enabled by default FOR A REASON, they will not break the addon but are only recommended for certain audiences', yeslabel='OK', nolabel="OK - Don't Show Again") if warning == False: tools.setSetting('admin.warning', 'true') k = tools.showKeyboard('', 'Admin Commands') k.doModal() command = (k.getText() if k.isConfirmed() else None) if command == None: tools.showDialog.notification(tools.addonName, 'No command entered.') elif command == 'degenerate': tools.setSetting('kitsu.18plus', 'true') tools.showDialog.ok( tools.addonName, 'You can now view 18+ content if signed into Kitsu.')
def play(self, data, args): #Set Up Metadata info = json.loads(tools.unquote(args)) try: ep_num = info['episodeNumber'] genre_string = ', '.join(info['genres']) metadata = { 'title': info['episode_title'], 'tvshowtitle': info['titles']['canon'], 'season': info['seasonNumber'], 'episode': info['episodeNumber'], 'genre': genre_string, 'year': info['airdate'][:4], 'plot': info['episodePlot'] } except: genre_string = ', '.join(info['genres']) metadata = { 'title': info['titles']['canon'], 'genre': genre_string, 'year': info['year'], 'plot': info['plot'] } item = tools.menuItem(path=data['url']) item.setInfo(type='video', infoLabels=metadata) item.setArt(info['art']) item.setProperty('Video', 'true') item.setProperty('isPlayable', 'true') if data['adaptive'] != False and 'auengine' not in data['url']: item.setProperty('inputstreamaddon', 'inputstream.adaptive') item.setProperty('inputstream.adaptive.manifest_type', data['adaptive']) tools.setSetting('anime.lastwatched', str(info['id'])) try: if int(info['episodeNumber']) == int(info['episode_count']): kitsu_status = 'completed' mal_status = 2 anilist_status = 'COMPLETED' else: kitsu_status = 'current' mal_status = 1 anilist_status = 'CURRENT' except: kitsu_status = 'current' mal_status = 1 anilist_status = 'CURRENT' try: if tools.getSetting('kitsu.access') != '' and tools.getSetting( 'kitsu.track') == 'true': accounts.Kitsu().track(info['id'], info['episodeNumber'], kitsu_status) if tools.getSetting('mal.sessionid') != '' and tools.getSetting( 'mal.track') == 'true': accounts.Mal().track(info['id'], info['episodeNumber'], mal_status) if tools.getSetting('ani.userid') != '' and tools.getSetting( 'ani.track') == 'true': accounts.Anilist().track(info['id'], info['episodeNumber'], anilist_status) except: if tools.getSetting('kitsu.access') != '' and tools.getSetting( 'kitsu.track') == 'true': accounts.Kitsu().track(info['id'], '1', 'current') if tools.getSetting('mal.sessionid') != '' and tools.getSetting( 'mal.track') == 'true': accounts.Mal().track(info['id'], '1', 2) if tools.getSetting('ani.userid') != '' and tools.getSetting( 'ani.track') == 'true': accounts.Anilist().track(info['id'], '1', 'COMPLETED') tools.resolvedUrl(syshandle, True, item) if data['subtitles'] != None: subtitle_link = data['subtitles'] sub_file_ex = subtitle_link.split('.') sub_file_ex = sub_file_ex[int(len(sub_file_ex) - 1)] #subtitle_location = os.path.join(tools.subtitle_file, 'temp.%s' % sub_file_ex) subtitle_location = tools.subtitle_file if os.path.exists(subtitle_location): os.remove(subtitle_location) file = requests.get(subtitle_link) sub_data = file.text sub_data = sub_data.encode('utf-8') with open(subtitle_location, 'wb') as code: code.write(sub_data) tools.sleep(3000) tools.player().setSubtitles(subtitle_location)