Example #1
0
	def search_new(self):
# need fix for when context menu returns here brings keyboard input back up
		t = control.lang(32010)
		k = control.keyboard('', t)
		k.doModal()
		q = k.getText() if k.isConfirmed() else None
		if not q: return
		try: from sqlite3 import dbapi2 as database
		except ImportError: from pysqlite2 import dbapi2 as database
		try:
			dbcon = database.connect(control.searchFile)
			dbcur = dbcon.cursor()
			dbcur.execute("INSERT INTO movies VALUES (?,?)", (None, q))
			# dbcur.execute("INSERT INTO movies VALUES (?,?)", (None, py_tools.ensure_text(q))) # ensure_text?, search of BRÜNO not saved to db in 18?
			dbcur.connection.commit()
		except:
			log_utils.error()
		finally:
			dbcur.close() ; dbcon.close()
		url = self.search_link + quote_plus(q)
		if control.getKodiVersion() >= 18:
			self.get(url)
		else:
			url = '%s?action=moviePage&url=%s' % (argv[0], quote_plus(url))
			control.execute('Container.Update(%s)' % url)
Example #2
0
 def search_new(self):
     control.hide()
     t = control.lang(32010)
     k = control.keyboard('', t)
     k.doModal()
     q = k.getText() if k.isConfirmed() else None
     if not q: return
     try:
         from sqlite3 import dbapi2 as database
     except:
         from pysqlite2 import dbapi2 as database
     try:
         dbcon = database.connect(control.searchFile)
         dbcur = dbcon.cursor()
         dbcur.execute("INSERT INTO furk VALUES (?,?)", (None, q))
         dbcur.connection.commit()
     except:
         log_utils.error()
     finally:
         dbcur.close()
         dbcon.close()
     url = quote_plus(q)
     if control.getKodiVersion() >= 18:
         self.furk_meta_search(url)
     else:
         url = '%s?action=furkMetaSearch&url=%s' % (sys.argv[0],
                                                    quote_plus(url))
         control.execute('Container.Update(%s)' % url)
Example #3
0
    def onPlayBackStarted(self):
        if int(control.getKodiVersion()) < 18:
            control.execute('Dialog.Close(all,true)')

            if control.setting(
                    'bookmarks'
            ) == 'true' and not self.offset == '0' and self.isPlayingVideo():
                if control.setting('bookmarks.auto') == 'true':
                    self.seekTime(float(self.offset))
                else:
                    if control.setting(
                            'rersume.source'
                    ) == '1' and trakt.getTraktCredentialsInfo() == True:
                        yes = control.dialog.contextmenu([
                            "Resume (Trakt)",
                            control.lang(32501).encode('utf-8'),
                        ])
                        if yes == 0:
                            self.seekTime(float(self.offset))
                    else:
                        minutes, seconds = divmod(float(self.offset), 60)
                        hours, minutes = divmod(minutes, 60)
                        label = '%02d:%02d:%02d' % (hours, minutes, seconds)
                        label = (control.lang(32502) % label).encode('utf-8')
                        yes = control.dialog.contextmenu([
                            label,
                            control.lang(32501).encode('utf-8'),
                        ])
                        if yes == 0:
                            self.seekTime(float(self.offset))

            subtitles().get(self.name, self.imdb, self.season, self.episode)
            self.idleForPlayback()
        else:
            self.onAVStarted()
Example #4
0
    def onPlayBackStarted(self):
        if int(control.getKodiVersion()) < 18:
            control.execute('Dialog.Close(all,true)')

            if control.setting('bookmarks') == 'true' and not self.offset == '0' and self.isPlayingVideo(): 
                if control.setting('bookmarks.auto') == 'true':
                    self.seekTime(float(self.offset))
                else:
                    self.pause()
                    minutes, seconds = divmod(float(self.offset), 60);
                    hours, minutes = divmod(minutes, 60)
                    label = '%02d:%02d:%02d' % (hours, minutes, seconds)
                    label = (six.ensure_str(control.lang2(12022).format(label)))
                    if control.setting('rersume.source') == '1' and trakt.getTraktCredentialsInfo() == True:
                        yes = control.yesnoDialog(label + '[CR]  (Trakt scrobble)', heading=control.lang2(13404))
                    else:
                        yes = control.yesnoDialog(label, heading=six.ensure_str(control.lang2(13404)))
                    if yes:
                        self.seekTime(float(self.offset))
                    self.pause()

            subtitles().get(self.name, self.imdb, self.season, self.episode)
            self.idleForPlayback()
        else:
            self.onAVStarted()
Example #5
0
def set_reuselanguageinvoker():
	if control.getKodiVersion() < 18: return control.notification(message=32116)
	try:
		addon_xml = control.joinPath(control.addonPath('plugin.video.venom'), 'addon.xml')
		tree = ET.parse(addon_xml)
		root = tree.getroot()
		for item in root.iter('reuselanguageinvoker'):
			current_value = str(item.text)
		if current_value:
			new_value = 'true' if current_value == 'false' else 'false'
			if not control.yesnoDialog(control.lang(33018) % (current_value, new_value), '', ''):
				return control.openSettings(query='12.6')
			if new_value == 'true':
				if not control.yesnoDialog(control.lang(33019), '', ''): return
			item.text = new_value
			hash_start = gen_file_hash(addon_xml)
			tree.write(addon_xml)
			hash_end = gen_file_hash(addon_xml)
			if hash_start != hash_end:
				control.setSetting('reuse.languageinvoker', new_value)
				control.okDialog(message='%s\n%s' % (control.lang(33017) % new_value, control.lang(33020)))
			else:
				return control.okDialog(message=33021)
			current_profile = control.infoLabel('system.profilename')
			control.execute('LoadProfile(%s)' % current_profile)
	except:
		log_utils.error()
Example #6
0
 def onPlayBackStarted(self):
     if int(control.getKodiVersion()) < 18:
         control.execute('Dialog.Close(all,true)')
         if not self.offset == '0': self.seekTime(float(self.offset))
         subtitles().get(self.name, self.imdb, self.season, self.episode)
         self.idleForPlayback()
     else:
         self.onAVStarted()
Example #7
0
    def get_tv(self, tmdb, status):
        try:
            if not tmdb or tmdb == '0':
                return control.infoDialog('No ID found')

            sysaddon = sys.argv[0]
            cache_dur = 720 if status in ['Ended', 'Canceled'] else 96

            url = self.tmdb_tv_credits % tmdb
            r = cache.get(client.request, cache_dur, url)
            r = utils.json_loads_as_str(r)

            c = r['cast'][:50]
            ids = [str(i['id']) for i in c]
            names = [i['name'] for i in c]

            items = []

            for person in c:
                role = person['roles'][0]['character']
                name = '%s [I](as %s)[/I]' % (person['name'],
                                              role) if role else person['name']

                if control.getKodiVersion() >= 17:
                    icon = self.tm_img_link % person['profile_path'] if person[
                        'profile_path'] else self.fallback_img
                    item = control.item(label=name)
                    item.setArt({'icon': icon, 'thumb': icon, 'poster': icon})
                    items.append(item)
                else:
                    items.append(name)

            select = control.selectDialog(items,
                                          heading='Actors:',
                                          useDetails=True)
            if select == -1: return
            c_id = ids[select]
            c_name = names[select]
            choose = control.selectDialog(
                ['TV Shows appeared in', 'Movies appeared in', 'Biography'],
                heading=c_name)
            if choose == -1: return
            elif choose == 0:
                control.execute(
                    'Container.Update(%s?action=tvshows&url=%s)' %
                    (sysaddon,
                     urllib_parse.quote_plus(self.tmdb_tvpeople_link % c_id)))
            elif choose == 1:
                control.execute('Container.Update(%s?action=movies&url=%s)' %
                                (sysaddon,
                                 urllib_parse.quote_plus(
                                     self.tmdb_moviepeople_link % c_id)))
            elif choose == 2:
                self.bio_txt(c_id)
        except:
            log_utils.log('get_tv credits', 1)
            return
Example #8
0
 def run(self):
     if control.getKodiVersion() < 18: return
     xbmc.log(
         '[ plugin.video.venom ]  ReuseLanguageInvokerCheck Service Starting...',
         2)
     try:
         import xml.etree.ElementTree as ET
         addon_xml = control.joinPath(
             control.addonPath('plugin.video.venom'), 'addon.xml')
         tree = ET.parse(addon_xml)
         root = tree.getroot()
         current_addon_setting = control.addon(
             'plugin.video.venom').getSetting('reuse.languageinvoker')
         try:
             current_xml_setting = [
                 str(i.text) for i in root.iter('reuselanguageinvoker')
             ][0]
         except:
             return xbmc.log(
                 '[ plugin.video.venom ]  ReuseLanguageInvokerCheck failed to get settings.xml value',
                 2)
         if current_addon_setting == '':
             current_addon_setting = 'true'
             control.setSetting('reuse.languageinvoker',
                                current_addon_setting)
         if current_xml_setting == current_addon_setting:
             return xbmc.log(
                 '[ plugin.video.venom ]  ReuseLanguageInvokerCheck Service Finished',
                 2)
         control.okDialog(message='%s\n%s' %
                          (control.lang(33023), control.lang(33020)))
         for item in root.iter('reuselanguageinvoker'):
             item.text = current_addon_setting
             hash_start = control.gen_file_hash(addon_xml)
             tree.write(addon_xml)
             hash_end = control.gen_file_hash(addon_xml)
             xbmc.log(
                 '[ plugin.video.venom ]  ReuseLanguageInvokerCheck Service Finished',
                 2)
             if hash_start != hash_end:
                 current_profile = control.infoLabel('system.profilename')
                 control.execute('LoadProfile(%s)' % current_profile)
             else:
                 control.okDialog(title='default', message=33022)
         return
     except:
         log_utils.error()
         pass
Example #9
0
def get_video_database_path():
    database_path = control.absPath(
        control.joinPath(
            control.dataPath,
            '..',
            '..',
            'Database',
        ))
    kodi_version = control.getKodiVersion()
    if kodi_version == 17:
        database_path = control.joinPath(database_path, 'MyVideos107.db')
    elif kodi_version == 18:
        database_path = control.joinPath(database_path, 'MyVideos116.db')
    elif kodi_version == 19:
        database_path = control.joinPath(database_path, 'MyVideos119.db')
    return database_path
Example #10
0
def get_video_database_path():
    database_path = control.absPath(
        control.joinPath(
            control.dataPath,
            '..',
            '..',
            'Database',
        ))  # doesn't work with mysql
    # path_db = 'special://profile/Database/%s' % db_name
    kodi_version = control.getKodiVersion()
    if kodi_version == 17:
        database_path = control.joinPath(database_path, 'MyVideos107.db')
    elif kodi_version == 18:
        database_path = control.joinPath(database_path, 'MyVideos116.db')
    elif kodi_version == 19:
        database_path = control.joinPath(database_path, 'MyVideos119.db')
    return database_path
Example #11
0
    def search(self, url):
        try:
            apiLang = control.apiLanguage().get('youtube', 'en')

            if apiLang != 'en':
                url += '&relevanceLanguage=%s' % apiLang

            r = cache.get(client.request, 24, url)
            result = utils.json_loads_as_str(r)

            json_items = result['items']
            ids = [i['id']['videoId'] for i in json_items]
            if not ids: return

            if self.mode == '1':
                vids = []

                for i in json_items:
                    name = client.replaceHTMLCodes(i['snippet']['title'])
                    if control.getKodiVersion() >= 17:
                        icon = i['snippet']['thumbnails']['default']['url']
                        li = control.item(label=name)
                        li.setArt({
                            'icon': icon,
                            'thumb': icon,
                            'poster': icon
                        })
                        vids.append(li)
                    else:
                        vids.append(name)

                select = control.selectDialog(vids,
                                              control.lang(32121) % 'YouTube',
                                              useDetails=True)
                if select == -1: return 'canceled'
                vid_id = ids[select]
                url = self.yt_plugin_url % vid_id
                return url

            for vid_id in ids:
                url = resolve(vid_id)
                if url:
                    return url
            return
        except:
            return
Example #12
0
 def run(self):
     if control.getKodiVersion() < 18:
         return
     try:
         import xml.etree.ElementTree as ET
         addon_dir = control.transPath(
             control.addon('plugin.video.venom').getAddonInfo('path'))
         addon_xml = control.joinPath(addon_dir, 'addon.xml')
         tree = ET.parse(addon_xml)
         root = tree.getroot()
         current_addon_setting = control.addon(
             'plugin.video.venom').getSetting('reuse.languageinvoker')
         if current_addon_setting == '':
             return
         try:
             current_xml_setting = [
                 str(i.text) for i in root.iter('reuselanguageinvoker')
             ][0]
         except:
             return
         if current_xml_setting == current_addon_setting:
             return
         if not control.yesnoDialog(
                 '[B]Reuse Language Invoker[/B] SETTING/XML mismatch.\nRestore correct status(RECOMMENDED)?',
                 '', ''):
             return
         for item in root.iter('reuselanguageinvoker'):
             item.text = current_addon_setting
             hash_start = control.gen_file_hash(addon_xml)
             tree.write(addon_xml)
             hash_end = control.gen_file_hash(addon_xml)
             if hash_start != hash_end:
                 control.okDialog(
                     'Kodi must close and be restarted for the change to take effect.'
                 )
             else:
                 control.okDialog('Venom', 'Error setting correct value.')
         return
     except:
         log_utils.error()
         pass
Example #13
0
    def get_items(self, imdb, name):
        try:
            link = self.imdb_link + imdb
            r = cache.get(client.request, 24, link)
            items = utils.json_loads_as_str(r)

            listItems = items['playlists'][imdb]['listItems']
            videoMetadata = items['videoMetadata']
            vids_list = []
            for item in listItems:
                try:
                    desc = item.get('description') or ''
                    videoId = item['videoId']
                    metadata = videoMetadata[videoId]
                    title = metadata['title']
                    icon = metadata['smallSlate']['url2x']
                    related_to = metadata.get('primaryConst') or imdb
                    if (not related_to
                            == imdb) and (not name.lower() in ' '.join(
                                (title, desc)).lower()):
                        continue
                    videoUrl = [i['videoUrl'] for i in metadata['encodings'] if i['definition'] == '720p'] + \
                               [i['videoUrl'] for i in metadata['encodings'] if i['definition'] == '1080p'] + \
                               [i['videoUrl'] for i in metadata['encodings'] if i['definition'] in ['480p', '360p', 'SD']]
                    if not videoUrl: continue
                    vids_list.append({
                        'title': title,
                        'icon': icon,
                        'description': desc,
                        'video': videoUrl[0]
                    })
                except:
                    pass

            if not vids_list: return
            vids_list = [
                v for v in vids_list if 'trailer' in v['title'].lower()
            ] + [v for v in vids_list if 'trailer' not in v['title'].lower()]

            if self.mode == '1':
                vids = []
                for v in vids_list:
                    if control.getKodiVersion() >= 17:
                        li = control.item(label=v['title'])
                        li.setArt({
                            'icon': v['icon'],
                            'thumb': v['icon'],
                            'poster': v['icon']
                        })
                        vids.append(li)
                    else:
                        vids.append(v['title'])

                select = control.selectDialog(vids,
                                              control.lang(32121) % 'IMDb',
                                              useDetails=True)
                if select == -1: return 'canceled'
                return vids_list[select]

            return vids_list[0]
        except:
            log_utils.log('IMDb_trailer get_items fail', 1)
            return
Example #14
0
    def channelDirectory(self, items):
        if items == None or len(items) == 0: return #control.idle() ; sys.exit()

        sysaddon = sys.argv[0]

        syshandle = int(sys.argv[1])

        addonPoster, addonBanner = control.addonPoster(), control.addonBanner()

        addonFanart = control.addonFanart()

        traktCredentials = trakt.getTraktCredentialsInfo()

        kodiVersion = control.getKodiVersion()

        isPlayable = True if not 'plugin' in control.infoLabel('Container.PluginName') else False

        indicators = playcount.getMovieIndicators(refresh=True) if action == 'movies' else playcount.getMovieIndicators()

        if self.trailer_source == '0': trailerAction = 'tmdb_trailer'
        elif self.trailer_source == '1': trailerAction = 'yt_trailer'
        else: trailerAction = 'imdb_trailer'


        playbackMenu = control.lang(32063) if control.setting('hosts.mode') == '2' else control.lang(32064)

        watchedMenu = control.lang(32068) if trakt.getTraktIndicatorsInfo() == True else control.lang(32066)

        unwatchedMenu = control.lang(32069) if trakt.getTraktIndicatorsInfo() == True else control.lang(32067)

        queueMenu = control.lang(32065)

        traktManagerMenu = control.lang(32070)

        nextMenu = control.lang(32053)

        addToLibrary = control.lang(32551)

        clearProviders = control.lang(32081)

        findSimilar = control.lang(32100)

        infoMenu = control.lang(32101)

        for i in items:
            try:
                imdb, tmdb, title, year = i['imdb'], i['tmdb'], i['originaltitle'], i['year']
                label = i['label'] if 'label' in i and not i['label'] == '0' else title
                label = '%s (%s)' % (label, year)
                if 'channel' in i: label = '[B]%s[/B] : %s' % (i['channel'].upper(), label)

                status = i['status'] if 'status' in i else '0'

                sysname = urllib_parse.quote_plus('%s (%s)' % (title, year))
                systitle = urllib_parse.quote_plus(title)

                meta = dict((k,v) for k, v in six.iteritems(i) if not v == '0')
                meta.update({'imdbnumber': imdb, 'code': tmdb})
                meta.update({'mediatype': 'movie'})
                meta.update({'trailer': '%s?action=%s&name=%s&tmdb=%s&imdb=%s' % (sysaddon, trailerAction, systitle, tmdb, imdb)})
                if not 'duration' in i: meta.update({'duration': '120'})
                elif i['duration'] == '0': meta.update({'duration': '120'})
                try: meta.update({'duration': str(int(meta['duration']) * 60)})
                except: pass
                try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)})
                except: pass
                if 'castwiththumb' in i and not i['castwiththumb'] == '0': meta.pop('cast', '0')

                poster = i['poster'] if 'poster' in i and not i['poster'] == '0' else addonPoster
                meta.update({'poster': poster})

                sysmeta = urllib_parse.quote_plus(json.dumps(meta))

                url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, systitle, year, imdb, sysmeta, self.systime)
                sysurl = urllib_parse.quote_plus(url)

                #path = '%s?action=play&title=%s&year=%s&imdb=%s' % (sysaddon, systitle, year, imdb)

                cm = []

                cm.append((findSimilar, 'Container.Update(%s?action=movies&url=%s)' % (sysaddon, urllib_parse.quote_plus(self.related_link % tmdb))))

                cm.append(('[I]Cast[/I]', 'RunPlugin(%s?action=moviecredits&tmdb=%s&status=%s)' % (sysaddon, tmdb, status)))

                cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon))

                try:
                    overlay = int(playcount.getMovieOverlay(indicators, imdb))
                    if overlay == 7:
                        cm.append((unwatchedMenu, 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb)))
                        meta.update({'playcount': 1, 'overlay': 7})
                    else:
                        cm.append((watchedMenu, 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb)))
                        meta.update({'playcount': 0, 'overlay': 6})
                except:
                    pass

                if traktCredentials == True:
                    cm.append((traktManagerMenu, 'RunPlugin(%s?action=traktManager&name=%s&imdb=%s&content=movie)' % (sysaddon, sysname, imdb)))

                cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta)))

                if kodiVersion < 17:
                    cm.append((infoMenu, 'Action(Info)'))

                cm.append((addToLibrary, 'RunPlugin(%s?action=movieToLibrary&name=%s&title=%s&year=%s&imdb=%s&tmdb=%s)' % (sysaddon, sysname, systitle, year, imdb, tmdb)))

                cm.append(('[I]Scrape Filterless[/I]', 'RunPlugin(%s?action=playUnfiltered&title=%s&year=%s&imdb=%s&meta=%s&t=%s)' % (sysaddon, systitle, year, imdb, sysmeta, self.systime)))

                cm.append((clearProviders, 'RunPlugin(%s?action=clearCacheProviders)' % sysaddon))

                try: item = control.item(label=label, offscreen=True)
                except: item = control.item(label=label)

                art = {}
                art.update({'icon': poster, 'thumb': poster, 'poster': poster})

                fanart = i['fanart'] if 'fanart' in i and not i['fanart'] == '0' else addonFanart

                if self.settingFanart == 'true':
                    art.update({'fanart': fanart})
                else:
                    art.update({'fanart': addonFanart})

                if 'banner' in i and not i['banner'] == '0':
                    art.update({'banner': i['banner']})
                else:
                    art.update({'banner': addonBanner})

                if 'clearlogo' in i and not i['clearlogo'] == '0':
                    art.update({'clearlogo': i['clearlogo']})

                if 'clearart' in i and not i['clearart'] == '0':
                    art.update({'clearart': i['clearart']})

                if 'landscape' in i and not i['landscape'] == '0':
                    landscape = i['landscape']
                else:
                    landscape = fanart
                art.update({'landscape': landscape})

                if 'discart' in i and not i['discart'] == '0':
                    art.update({'discart': i['discart']})

                item.setArt(art)
                item.addContextMenuItems(cm)
                if isPlayable:
                    item.setProperty('IsPlayable', 'true')

                castwiththumb = i.get('castwiththumb')
                if castwiththumb and not castwiththumb == '0':
                    if kodiVersion >= 18:
                        item.setCast(castwiththumb)
                    else:
                        cast = [(p['name'], p['role']) for p in castwiththumb]
                        meta.update({'cast': cast})

                offset = bookmarks.get('movie', imdb, '', '', True)
                if float(offset) > 120:
                    percentPlayed = int(float(offset) / float(meta['duration']) * 100)
                    item.setProperty('resumetime', str(offset))
                    item.setProperty('percentplayed', str(percentPlayed))

                item.setProperty('imdb_id', imdb)
                item.setProperty('tmdb_id', tmdb)
                try: item.setUniqueIDs({'imdb': imdb, 'tmdb': tmdb})
                except: pass

                item.setInfo(type='Video', infoLabels = control.metadataClean(meta))

                video_streaminfo = {'codec': 'h264'}
                item.addStreamInfo('video', video_streaminfo)

                control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False)
            except:
                log_utils.log('channels_dir', 1)
                pass

        control.content(syshandle, 'files')
        control.directory(syshandle, cacheToDisc=True)
Example #15
0
import pstats
import time
from datetime import datetime
import xbmc

import six

from resources.lib.modules import control

LOGDEBUG = xbmc.LOGDEBUG
LOGERROR = xbmc.LOGERROR
LOGFATAL = xbmc.LOGFATAL
LOGINFO = xbmc.LOGINFO
LOGNONE = xbmc.LOGNONE
LOGNOTICE = xbmc.LOGNOTICE if int(
    control.getKodiVersion()) < 19 else xbmc.LOGINFO
LOGWARNING = xbmc.LOGWARNING

name = control.addonInfo('name')
DEBUGPREFIX = '[COLOR yellow][ Kpolyamass DEBUG ][/COLOR]'
LOGPATH = control.transPath('special://logpath/')

addonName = "Kpolyamass"


def log(msg, level=LOGNOTICE):
    debug_enabled = control.setting('addon_debug')
    debug_log = control.setting('debug.location')

    print(DEBUGPREFIX + ' Debug Enabled?: ' + str(debug_enabled))
    print(DEBUGPREFIX + ' Debug Log?: ' + str(debug_log))
Example #16
0
            'RunPlugin(%s?action=service_library)' % plugin
        )  # service_library contains control.monitor().waitForAbort() while loop every 6hrs


class SyncTraktService:
    def run(self):
        control.log(
            '[ plugin.video.dg ]  Trakt Sync Service Starting (sync check every 15min)...',
            LOGINFO)
        control.execute(
            'RunPlugin(%s?action=service_syncTrakt)' % plugin
        )  # trakt.trakt_service_sync() contains control.monitor().waitForAbort() while loop every 15min


try:
    kodiVersion = control.getKodiVersion(full=True)
    addonVersion = control.addon('plugin.video.dg').getAddonInfo('version')
    repoVersion = control.addon('repository.dg').getAddonInfo('version')
    fsVersion = control.addon('script.module.fenomscrapers').getAddonInfo(
        'version')
    maVersion = control.addon('script.module.myaccounts').getAddonInfo(
        'version')
    log_utils.log('########   CURRENT dg VERSIONS REPORT   ########',
                  level=log_utils.LOGINFO)
    log_utils.log('##   Kodi Version: %s' % str(kodiVersion),
                  level=log_utils.LOGINFO)
    log_utils.log('##   python Version: %s' % str(control.pythonVersion),
                  level=log_utils.LOGINFO)
    log_utils.log('##   plugin.video.dg Version: %s' % str(addonVersion),
                  level=log_utils.LOGINFO)
    log_utils.log('##   repository.dg Version: %s' % str(repoVersion),
Example #17
0
"""
	Venom Add-on
"""

from datetime import datetime
import inspect
import unicodedata
import xbmc
from resources.lib.modules import control
from resources.lib.modules import py_tools

# # only prints when venom logging set to "Debug" (LOGINFO ads to list if Leia(18))
LOGDEBUG = xbmc.LOGDEBUG  #0
# ###--from here down methods print when Venom logging set to "Normal".
LOGINFO = xbmc.LOGINFO  #1 (doesn't print unless Venom logging set to "Debug" in Leia(18))
LOGNOTICE = xbmc.LOGNOTICE if control.getKodiVersion(
) < 19 else xbmc.LOGINFO  #(2 in 18, deprecated in 19 use LOGINFO(1))
LOGWARNING = xbmc.LOGWARNING  #(3 in 18, 2 in 19)
LOGERROR = xbmc.LOGERROR  #(4 in 18, 3 in 19)
LOGSEVERE = xbmc.LOGSEVERE if control.getKodiVersion(
) < 19 else xbmc.LOGFATAL  #(5 in 18, deprecated in 19 use LOGFATAL(4))
LOGFATAL = xbmc.LOGFATAL  #(6 in 18, 4 in 19)
LOGNONE = xbmc.LOGNONE  #(7 in 18, 5 in 19)-not used but listed for int value
if py_tools.isPY2:
    debug_list = [
        'DEBUG', 'INFO', 'NOTICE', 'WARNING', 'ERROR', 'SEVERE', 'FATAL'
    ]
    from io import open  #py2 open() does not support encoding param
else:
    debug_list = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL']
DEBUGPREFIX = '[COLOR red][ Venom: %s ][/COLOR]'
LOGPATH = control.transPath('special://logpath/')
Example #18
0
import os
import traceback
from datetime import datetime
from kodi_six import xbmc

import six

from io import open

from resources.lib.modules import control


LOGDEBUG = xbmc.LOGDEBUG
LOGINFO = xbmc.LOGINFO
LOGNOTICE = xbmc.LOGNOTICE if control.getKodiVersion() < 19 else xbmc.LOGINFO
LOGWARNING = xbmc.LOGWARNING
LOGERROR = xbmc.LOGERROR
LOGFATAL = xbmc.LOGFATAL
LOGNONE = xbmc.LOGNONE

name = control.addonInfo('name')
version = control.addonInfo('version')
DEBUGPREFIX = '[ Prophet DEBUG ]'
LOGPATH = control.transPath('special://logpath/')
log_file = os.path.join(LOGPATH, 'prophet.log')
debug_enabled = control.setting('addon.debug')
#debug_log = control.setting('debug.location')


def log(msg, trace=0):
Example #19
0
def clean_settings():
    def _make_content(dict_object):
        if kodi_version >= 18:
            content = '<settings version="2">'
            for item in dict_object:
                if item['id'] in active_settings:
                    if 'default' in item and 'value' in item:
                        content += '\n    <setting id="%s" default="%s">%s</setting>' % (
                            item['id'], item['default'], item['value'])
                    elif 'default' in item:
                        content += '\n    <setting id="%s" default="%s"></setting>' % (
                            item['id'], item['default'])
                    elif 'value' in item:
                        content += '\n    <setting id="%s">%s</setting>' % (
                            item['id'], item['value'])
                    else:
                        content += '\n    <setting id="%s"></setting>'
                else:
                    removed_settings.append(item)
        else:
            content = '<settings>'
            for item in dict_object:
                if item['id'] in active_settings:
                    if 'value' in item:
                        content += '\n    <setting id="%s" value="%s" />' % (
                            item['id'], item['value'])
                    else:
                        content += '\n    <setting id="%s" value="" />' % item[
                            'id']
                else:
                    removed_settings.append(item)
        content += '\n</settings>'
        return content

    kodi_version = control.getKodiVersion()
    for addon_id in ('plugin.video.venom', 'script.module.fenomscrapers'):
        try:
            removed_settings = []
            active_settings = []
            current_user_settings = []
            addon = control.addon(id=addon_id)
            addon_name = addon.getAddonInfo('name')
            addon_dir = control.transPath(addon.getAddonInfo('path'))
            profile_dir = control.transPath(addon.getAddonInfo('profile'))
            active_settings_xml = control.joinPath(addon_dir, 'resources',
                                                   'settings.xml')
            root = ET.parse(active_settings_xml).getroot()
            for item in root.findall('./category/setting'):
                setting_id = item.get('id')
                if setting_id:
                    active_settings.append(setting_id)
            settings_xml = control.joinPath(profile_dir, 'settings.xml')
            root = ET.parse(settings_xml).getroot()
            for item in root:
                dict_item = {}
                setting_id = item.get('id')
                setting_default = item.get('default')
                if kodi_version >= 18:
                    setting_value = item.text
                else:
                    setting_value = item.get('value')
                dict_item['id'] = setting_id
                if setting_value:
                    dict_item['value'] = setting_value
                if setting_default:
                    dict_item['default'] = setting_default
                current_user_settings.append(dict_item)
            new_content = _make_content(current_user_settings)
            nfo_file = control.openFile(settings_xml, 'w')
            nfo_file.write(new_content)
            nfo_file.close()
            control.sleep(200)
            control.notification(title=addon_name,
                                 message=control.lang(32084).format(
                                     str(len(removed_settings))))
        except:
            log_utils.error()
            control.notification(title=addon_name, message=32115)
Example #20
0
'''

import json
import re
import requests

from resources.lib.modules import control
from resources.lib.modules import log_utils
from resources.lib.modules import workers
try:
    from resolveurl.plugins.realdebrid import RealDebridResolver
except:
    pass

CLIENT_ID = 'X245A4XAIBGVM'
USER_AGENT = 'ResolveURL for Kodi/%s' % control.getKodiVersion()

rest_base_url = 'https://api.real-debrid.com/rest/1.0/'
oauth_base_url = 'https://api.real-debrid.com/oauth/v2'
unrestrict_link_path = 'unrestrict/link'
device_endpoint_path = 'device/code'
token_endpoint_path = 'token'
authorize_endpoint_path = 'auth'
credentials_endpoint_path = 'device/credentials'
hosts_regexes_path = 'hosts/regex'
hosts_domains_path = 'hosts/domains'
add_magnet_path = 'torrents/addMagnet'
torrents_info_path = 'torrents/info'
select_files_path = 'torrents/selectFiles'
torrents_delete_path = 'torrents/delete'
check_cache_path = 'torrents/instantAvailability'
Example #21
0
from hashlib import md5
from json import dumps as jsdumps, loads as jsloads
from sys import argv, exit as sysexit
try:
    from sqlite3 import dbapi2 as database
except ImportError:
    from pysqlite2 import dbapi2 as database
import xbmc
from resources.lib.database import metacache
from resources.lib.modules import control
from resources.lib.modules import cleantitle
from resources.lib.modules import log_utils
from resources.lib.modules import playcount
from resources.lib.modules import py_tools
from resources.lib.modules import trakt
LOGNOTICE = 2 if control.getKodiVersion(
) < 19 else 1  # (2 in 18, deprecated in 19 use LOGINFO(1)) = 2 if control.getKodiVersion() < 19 else 1 # (2 in 18, deprecated in 19 use LOGINFO(1))


class Player(xbmc.Player):
    def __init__(self):
        xbmc.Player.__init__(self)
        self.play_next_triggered = False
        self.media_type = None
        self.offset = '0'
        self.media_length = 0
        self.current_time = 0
        self.meta = {}
        self.playback_started = False
        self.scrobbled = False
        self.playback_resumed = False
        self.av_started = False
Example #22
0
from io import open

from resources.lib.modules import control

LOGDEBUG = xbmc.LOGDEBUG
# LOGINFO = xbmc.LOGINFO
# LOGNOTICE = xbmc.LOGNOTICE if control.getKodiVersion() < 19 else xbmc.LOGINFO
# LOGWARNING = xbmc.LOGWARNING
# LOGERROR = xbmc.LOGERROR
# LOGFATAL = xbmc.LOGFATAL
# LOGNONE = xbmc.LOGNONE

name = control.addonInfo('name')
version = control.addonInfo('version')
kodi_version = control.getKodiVersion(as_str=True)
sys_platform = control._platform()
DEBUGPREFIX = '[ TheOath {0} | {1} | {2} | DEBUG ]'.format(
    version, kodi_version, sys_platform)
INFOPREFIX = '[ TheOath | INFO ]'
LOGPATH = control.transPath('special://logpath/')
log_file = os.path.join(LOGPATH, 'theoath.log')
debug_enabled = control.setting('addon.debug')
#debug_log = control.setting('debug.location')


def log(msg, trace=0):

    #print(DEBUGPREFIX + ' Debug Enabled?: ' + six.ensure_str(debug_enabled))
    #print(DEBUGPREFIX + ' Debug Log?: ' + six.ensure_str(debug_log))