def clear_trakt(): title = 'OpenMeta: Clear Trakt account settings' msg = 'Reauthorizing Trakt will be required to access My Trakt.[CR][CR]Are you sure?' if plugin.yesno(title, msg): plugin.set_setting('trakt_access_token', '') plugin.set_setting('trakt_refresh_token', '') plugin.set_setting('trakt_expires_at', '')
def update_library_from_settings(): now = time.time() if plugin.yesno('OpenMeta', 'Would you like to update the library now?'): try: plugin.setProperty('openmeta_updating_library', int(now)) plugin.notify('OpenMeta', 'Updating library', plugin.get_addon_icon(), 500) lib_tvshows.update_library() finally: plugin.clearProperty('openmeta_updating_library')
def paginated_query(page): lists = [] params['page'] = page results = send_query() if with_auth and results.status_code == 401 and plugin.yesno(title, msg1) and trakt_authenticate(): response = paginated_query(1) return response results.raise_for_status() results.encoding = 'utf-8' lists.extend(results.json()) return lists, results.headers['X-Pagination-Page-Count']
def setup_library(library_folder): if library_folder[-1] != '/': library_folder += '/' if not xbmcvfs.exists(library_folder): xbmcvfs.mkdir(library_folder) msg = 'Would you like to automatically set OpenMeta as a movies video source?' if plugin.yesno('Library setup', msg): source_thumbnail = plugin.get_media_icon('movies') source_name = 'OpenMeta Movies' source_content = "('%s','movies','metadata.themoviedb.org','',2147483647,1,'<settings version=\"2\"><setting id=\"certprefix\" default=\"true\">Rated </setting><setting id=\"fanart\">true</setting><setting id=\"imdbanyway\">true</setting><setting id=\"keeporiginaltitle\" default=\"true\">false</setting><setting id=\"language\" default=\"true\">en</setting><setting id=\"RatingS\" default=\"true\">TMDb</setting><setting id=\"tmdbcertcountry\" default=\"true\">us</setting><setting id=\"trailer\">true</setting></settings>',0,0,NULL,NULL)" % library_folder tools.add_source(source_name, library_folder, source_content, source_thumbnail) return xbmc.translatePath(library_folder)
def players_setup(): plugin.setProperty('openmeta_players_setup', 'true') url = plugin.get_setting('players_update_url', unicode) if url == '': if plugin.yesno('OpenMeta players setup', 'Would you like to set a URL for players now?'): plugin.open_settings() else: plugin.notify('OpenMeta players setup', 'Failed', plugin.get_addon_icon(), 3000) elif updater.update_players(url): plugin.notify('OpenMeta players setup', 'Done', plugin.get_addon_icon(), 3000) else: plugin.notify('OpenMeta players setup', 'Failed', plugin.get_addon_icon(), 3000) plugin.clearProperty('openmeta_players_setup') return True
def call_trakt(path, params={}, data=None, is_delete=False, with_auth=True, pagination=False, page=1): params = dict([(k, text.to_utf8(v)) for k, v in params.items() if v]) headers = { 'Content-Type': 'application/json', 'trakt-api-key': CLIENT_ID, 'trakt-api-version': '2' } def send_query(): if with_auth: try: expires_at = plugin.get_setting('trakt_expires_at', int) if time.time() > expires_at: trakt_refresh_token() except: pass token = plugin.get_setting('trakt_access_token', unicode) if token: headers['Authorization'] = 'Bearer ' + token if data is not None: assert not params return requests.post('https://api.trakt.tv/' + path, json=data, headers=headers) elif is_delete: return requests.delete('https://api.trakt.tv/' + path, headers=headers) else: return requests.get('https://api.trakt.tv/' + path, params, headers=headers) def paginated_query(page): lists = [] params['page'] = page results = send_query() if with_auth and results.status_code == 401 and plugin.yesno(title, msg1) and trakt_authenticate(): response = paginated_query(1) return response results.raise_for_status() results.encoding = 'utf-8' lists.extend(results.json()) return lists, results.headers['X-Pagination-Page-Count'] if pagination == False: response = send_query() if with_auth and response.status_code == 401 and plugin.yesno(title, msg1) and trakt_authenticate(): response = send_query() response.raise_for_status() response.encoding = 'utf-8' return response.json() else: response, numpages = paginated_query(page) return response, numpages
def setup_library(library_folder): if library_folder[-1] != '/': library_folder += '/' if not xbmcvfs.exists(library_folder): xbmcvfs.mkdir(library_folder) msg = 'Would you like to automatically set Chappaai as a tv shows source?' if plugin.yesno('Library setup', msg): try: source_thumbnail = plugin.get_media_icon('tv') source_name = 'Chappaai TV shows' source_content = "('%s','tvshows','metadata.tvdb.com','',0,0,'<settings version=\"2\"><setting id=\"absolutenumber\" default=\"true\">false</setting><setting id=\"alsoimdb\">true</setting><setting id=\"dvdorder\" default=\"true\">false</setting><setting id=\"fallback\">true</setting><setting id=\"fallbacklanguage\">es</setting><setting id=\"fanart\">true</setting><setting id=\"language\" default=\"true\">en</setting><setting id=\"RatingS\" default=\"true\">TheTVDB</setting><setting id=\"usefallbacklanguage1\">true</setting></settings>',0,0,NULL,NULL)" % library_folder tools.add_source(source_name, library_folder, source_content, source_thumbnail) except: pass return xbmc.translatePath(library_folder)
def flat_extract(z, extract_to, members=None): if members is None: members = z.namelist() if not os.path.exists(extract_to): os.makedirs(extract_to) else: if xbmc.getInfoLabel( 'Window(home).Property(running)') == 'totalchappaai': empty_folder(extract_to) else: if plugin.yesno('Chappaai: Update players', 'Do you want to remove existing players first?'): empty_folder(extract_to) for member in members: with contextlib.closing(z.open(member)) as source: target_path = os.path.join(extract_to, os.path.basename(member)) with open(target_path, 'wb') as target: shutil.copyfileobj(source, target)