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', '')
Example #2
0
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')
Example #3
0
	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']
Example #4
0
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)
Example #5
0
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
Example #6
0
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
Example #7
0
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)
Example #8
0
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)