Esempio n. 1
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:
				if self.server_notifications: 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 response:
				message = response.get('error')
				if self.server_notifications: 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.addon('script.module.myaccounts').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
Esempio n. 2
0
 def refresh_token(self):
     try:
         self.client_ID = control.addon(
             'script.module.resolveurl').getSetting(
                 'RealDebridResolver_client_id')
         self.secret = control.addon('script.module.resolveurl').getSetting(
             'RealDebridResolver_client_secret')
         self.device_code = control.addon(
             'script.module.resolveurl').getSetting(
                 'RealDebridResolver_refresh')
         log_utils.log(
             'Refreshing Expired Real Debrid Token: |%s|%s|' %
             (self.client_ID, self.device_code), __name__,
             log_utils.LOGDEBUG)
         if not self.get_token():
             # empty all auth settings to force a re-auth on next use
             self.reset_authorization()
             log_utils.log('Unable to Refresh Real Debrid Token', __name__,
                           log_utils.LOGDEBUG)
         else:
             log_utils.log('Real Debrid Token Successfully Refreshed',
                           __name__, log_utils.LOGDEBUG)
             return True
     except:
         return False
 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()
         # log_utils.log('Authorizing Real Debrid Result: |%s|' % response, __name__, log_utils.LOGDEBUG)
         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.addon('script.module.myaccounts').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
Esempio n. 4
0
def addView(content):
    try:
        skin = control.skin
        record = (skin, content, str(control.getCurrentViewId()))
        control.makeFile(control.dataPath)
        dbcon = database.connect(control.viewsFile)
        dbcur = dbcon.cursor()
        dbcur.execute("CREATE TABLE IF NOT EXISTS views ("
                      "skin TEXT, "
                      "view_type TEXT, "
                      "view_id TEXT, "
                      "UNIQUE(skin, view_type)"
                      ");")
        dbcur.execute(
            "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" %
            (record[0], record[1]))
        dbcur.execute("INSERT INTO views Values (?, ?, ?)", record)
        dbcon.commit()

        viewName = control.infoLabel('Container.Viewmode')
        skinName = control.addon(skin).getAddonInfo('name')
        skinIcon = control.addon(skin).getAddonInfo('icon')

        control.infoDialog(viewName,
                           heading=skinName,
                           sound=True,
                           icon=skinIcon)
    except:
        return
Esempio n. 5
0
def addView(content):
    try:
        skin = control.skin
        record = (skin, content, str(control.getCurrentViewId()))
        control.makeFile(control.dataPath)
        dbcon = database.connect(control.viewsFile)
        dbcur = dbcon.cursor()
        dbcur.execute("CREATE TABLE IF NOT EXISTS views ("
                      "skin TEXT, "
                      "view_type TEXT, "
                      "view_id TEXT, "
                      "UNIQUE(skin, view_type)"
                      ");")
        dbcur.execute(
            "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" %
            (record[0], record[1]))
        dbcur.execute("INSERT INTO views Values (?, ?, ?)", record)
        dbcur.connection.commit()
        dbcon.close()
        viewName = control.infoLabel('Container.Viewmode')
        skinName = control.addon(skin).getAddonInfo('name')
        skinIcon = control.addon(skin).getAddonInfo('icon')
        control.notification(
            title=skinName,
            message=viewName,
            icon=skinIcon,
            sound=(control.setting('notification.sound') == 'true'))
    except:
        log_utils.error()
        return
Esempio n. 6
0
def UpdateDomain():
	try:
		response = requests.get("https://raw.githubusercontent.com/Apollo2000/Repo/master/domain.txt", verify=False)
		data = json.loads(response.text)
		control.addon().setSetting('apollo.domain', data['result'])
	except: 
		control.addon().setSetting('apollo.domain', "apollogroup.tv")
		pass
Esempio n. 7
0
    def get(self, name):
        if name == None:
            response = get(control.apollo_static_link +
                           "list/livetv/menu.json",
                           verify=False)
            data = json.loads(response.text)
            for cat in data['result']:
                try:
                    self.list.append({
                        'id': str(cat['id']),
                        'name': str(cat['name']),
                        'url': str(cat['id'])
                    })
                except:
                    print "####### ERROR Getting List from Server: %s" % cat
                    pass
        elif name > 0:
            if name == "69":
                if not control.addon().getSetting(
                        'apollo.adult') <> "true" or not control.addon(
                        ).getSetting('apollo.adultshow') <> "true":
                    return self.list

            response = get(control.apollo_static_link +
                           "list/livetv/%s.json" % name,
                           verify=False)
            data = json.loads(response.text)

            for channel in data['result']:
                try:
                    self.list.append({
                        'id':
                        str(channel['id']),
                        'name':
                        str(channel['name'].encode('utf-8')),
                        'title':
                        '',
                        'hd':
                        str(channel['hd']),
                        'url':
                        'plugin://' + control.addon().getAddonInfo('id') +
                        '/?action=apollo&imdb=9999&season=%s&title=%s' %
                        (channel['id'], channel['id']),
                        'poster':
                        str(channel['logo'])
                    })
                except:
                    print "####### ERROR Getting List from Server: %s %s" % (
                        str(channel['id']), channel)
                    pass

            try:
                self.list = sorted(self.list, key=lambda k: k['name'])
            except:
                pass

        self.channelDirectory(self.list, name)
        return self.list
Esempio n. 8
0
def getTraktAddonEpisodeInfo():
    try: scrobble = control.addon('script.trakt').getSetting('scrobble_episode')
    except: scrobble = ''
    try: ExcludeHTTP = control.addon('script.trakt').getSetting('ExcludeHTTP')
    except: ExcludeHTTP = ''
    try: authorization = control.addon('script.trakt').getSetting('authorization')
    except: authorization = ''
    if scrobble == 'true' and ExcludeHTTP == 'false' and not authorization == '': return True
    else: return False
Esempio n. 9
0
def getTraktAddonEpisodeInfo():
    try: scrobble = control.addon('script.trakt').getSetting('scrobble_episode')
    except: scrobble = ''
    try: ExcludeHTTP = control.addon('script.trakt').getSetting('ExcludeHTTP')
    except: ExcludeHTTP = ''
    try: authorization = control.addon('script.trakt').getSetting('authorization')
    except: authorization = ''
    if scrobble == 'true' and ExcludeHTTP == 'false' and not authorization == '': return True
    else: return False
Esempio n. 10
0
 def cleanCache(self):
     i = xbmcgui.Dialog().yesno(control.addon().getAddonInfo('name'),
                                "Are you sure you want to delete",
                                "all your addon setting ?")
     if not i == 0:
         try:
             rmtree(control.dataPath)
             xbmcgui.Dialog().ok(control.addon().getAddonInfo('name'),
                                 "Addon setting deleted")
         except:
             pass
Esempio n. 11
0
def clearViews():
    try:
        skin = control.skin
        control.idle()
        yes = control.yesnoDialog(control.lang(32056).encode('utf-8'), '', '')

        if not yes:
            return

        control.makeFile(control.dataPath)
        dbcon = database.connect(control.viewsFile)
        dbcur = dbcon.cursor()

        for t in ['views']:
            try:
                dbcur.execute("DROP TABLE IF EXISTS %s" % t)
                dbcur.execute("VACUUM")
                dbcur.execute("CREATE TABLE IF NOT EXISTS views ("
                              "skin TEXT, "
                              "view_type TEXT, "
                              "view_id TEXT, "
                              "UNIQUE(skin, view_type)"
                              ");")
                dbcur.connection.commit()
                dbcon.close()
            except:
                pass

        try:
            kodiDB = xbmc.translatePath('special://home/userdata/Database')
            kodiViewsDB = os.path.join(kodiDB, 'ViewModes6.db')
            dbcon = database.connect(kodiViewsDB)
            dbcur = dbcon.cursor()
            dbcur.execute(
                "DELETE FROM view WHERE path LIKE 'plugin://plugin.video.venom/%'"
            )
            dbcur.connection.commit()
            dbcon.close()
        except:
            pass

        skinName = control.addon(skin).getAddonInfo('name')
        skinIcon = control.addon(skin).getAddonInfo('icon')
        control.notification(title=skinName,
                             message='View Types Successfully Cleared!',
                             icon=skinIcon,
                             sound=notificationSound)
    except:
        import traceback
        traceback.print_exc()
        pass
Esempio n. 12
0
def addView(content):
    try:
        skin = control.skin
        skinPath = control.skinPath
        xml = os.path.join(skinPath, 'addon.xml')
        file = control.openFile(xml)
        read = file.read().replace('\n', '')
        file.close()
        try:
            src = re.compile('defaultresolution="(.+?)"').findall(read)[0]
        except:
            src = re.compile('<res.+?folder="(.+?)"').findall(read)[0]
        src = os.path.join(skinPath, src)
        src = os.path.join(src, 'MyVideoNav.xml')
        file = control.openFile(src)
        read = file.read().replace('\n', '')
        file.close()
        views = re.compile('<views>(.+?)</views>').findall(read)[0]
        views = [int(x) for x in views.split(',')]
        import xbmc
        xbmc.log("views :" + repr(views), xbmc.LOGNOTICE)
        for view in views:
            label = control.infoLabel('Control.GetLabel(%s)' % (view))
            xbmc.log("label :" + repr(label), xbmc.LOGNOTICE)
            if not (label == '' or label == None): break
        record = (skin, content, str(view))
        control.makeFile(control.dataPath)
        dbcon = database.connect(control.viewsFile)
        dbcur = dbcon.cursor()
        dbcur.execute("CREATE TABLE IF NOT EXISTS views ("
                      "skin TEXT, "
                      "view_type TEXT, "
                      "view_id TEXT, "
                      "UNIQUE(skin, view_type)"
                      ");")
        dbcur.execute(
            "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" %
            (record[0], record[1]))
        dbcur.execute("INSERT INTO views Values (?, ?, ?)", record)
        dbcon.commit()

        viewName = control.infoLabel('Container.Viewmode')
        skinName = control.addon(skin).getAddonInfo('name')
        skinIcon = control.addon(skin).getAddonInfo('icon')

        control.infoDialog(viewName,
                           heading=skinName,
                           sound=True,
                           icon=skinIcon)
    except:
        return
Esempio n. 13
0
    def setAdvanceBuffer(self):
        AdvFile = xbmc.translatePath(
            os.path.join('special://profile', 'advancedsettings.xml'))
        if os.path.exists(AdvFile):
            i = xbmcgui.Dialog().yesno(
                control.addon().getAddonInfo('name'),
                "Setting advance buffer setting",
                "will remove current advancedsettings.xml. Continue?")
        else:
            i = 1
        if not i == 0:
            try:
                KodiVer = int(xbmc.getInfoLabel("System.BuildVersion")[:2])
                xml = []
                xml.append("<advancedsettings>\n")
                if KodiVer > 16:
                    xml.append('\t<cache>\n')
                    xml.append('\t\t<buffermode>1</buffermode>\n')
                    xml.append('\t\t<memorysize>139460608</memorysize>\n')
                    xml.append('\t\t<readfactor>20</readfactor>\n')
                    xml.append('\t</cache>\n')
                    xml.append('\t<network>\n')
                    xml.append(
                        '\t\t<curlclienttimeout>10</curlclienttimeout>\n')
                    xml.append(
                        '\t\t<curllowspeedtime>30</curllowspeedtime> \n')
                    xml.append('\t\t<curlretries>2</curlretries>\n')
                    xml.append('\t</network>\n')
                else:
                    xml.append('\t<network>\n')
                    xml.append('\t\t<buffermode>1</buffermode>\n')
                    xml.append(
                        '\t\t<cachemembuffersize>139460608</cachemembuffersize>\n'
                    )
                    xml.append('\t\t<readbufferfactor>20</readbufferfactor>\n')
                    xml.append(
                        '\t\t<curlclienttimeout>10</curlclienttimeout>\n')
                    xml.append('\t\t<curllowspeedtime>30</curllowspeedtime>\n')
                    xml.append('\t\t<curlretries>2</curlretries>\n')
                    xml.append('\t</network>\n')
                xml.append("</advancedsettings>")
                outF = open(AdvFile, 'wb')
                outF.write("".join(xml))
                outF.close()

                xbmcgui.Dialog().ok(control.addon().getAddonInfo('name'),
                                    "Buffer advance setting approve",
                                    "Reset kodi to take change take effect")
            except:
                pass
Esempio n. 14
0
    def playlogin(self):
        if len(control.addon().getSetting('apollo.token')) > 10:
            response = get(control.apollo_link + 'token/?token=' +
                           control.addon().getSetting('apollo.token'),
                           verify=False)
            data = json.loads(response.text)
            if not "error" in data:
                return  #REFRESH

        mac = GetMacAddress()
        login_link = control.apollo_link + 'login/?'
        if mac:
            login_link += '&mac=' + mac
        response = get(login_link + '&email=' +
                       control.addon().getSetting('apollo.email') +
                       '&password='******'apollo.password'),
                       verify=False)
        data = json.loads(response.text)
        if not "error" in data and "token" in data:
            control.addon().setSetting('apollo.token', data["token"])
            return

        free_link = control.apollo_link + 'free/?'
        if mac:
            free_link += '&mac=' + mac
        response = get(free_link, verify=False)
        data = json.loads(response.text)
        data = json.loads(response.text)
        control.addon().setSetting('apollo.token', data["token"])
Esempio n. 15
0
    def GetMedia(self, imdb, season, episode):
        try:
            self.playlogin()
            play_link = control.apollo_link + 'play/?'
            mac = GetMacAddress()

            if mac:
                play_link = play_link + '&mac=' + mac
            if imdb == "9999":
                if control.addon().getSetting(
                        'apollo.liveformat') == "MPEG-TS":
                    format = "ts"
                else:
                    format = "hls"
                play_link = play_link + '&channel=%s&format=%s&token=%s' % (
                    season, format, control.addon().getSetting('apollo.token'))
            else:
                play_link = play_link + '&token=%s&imdb=%s&season=%s&episode=%s' % (
                    control.addon().getSetting('apollo.token'), imdb, season,
                    episode)
            response = get(play_link, verify=False)
            data = json.loads(response.text)
        except:
            if control.addon().getAddonInfo('id') == "program.apollo":
                control.infoDialog(
                    "Our Servers are down for maintenance, for more info visit FB @ApolloGroupTV",
                    icon='WARNING',
                    time=20000)
            return 0
            pass

        if 'error' in data:
            control.infoDialog(data['error'], icon='WARNING', time=20000)
            print "**** Apollo ERROR: {0}".format(data['error'])
            if not 'link' in data:
                return 0
        if 'msg' in data:
            xbmcgui.Dialog().ok(control.addon().getAddonInfo('name'),
                                data["msg"])
            xbmc.sleep(5000)
        if 'link' in data:
            url = data["link"] + '|' + urllib.urlencode(
                {
                    'Keep-Alive': 'True',
                    'Connection': 'keep-alive'
                })
            return url
        return 0
Esempio n. 16
0
def addView(content):
    try:
        skin = control.skin()
        skinPath = control.kodiSkinPath
        xml = os.path.join(skinPath, 'addon.xml')
        file = control.openFile(xml)
        read = file.read().replace('\n', '')
        file.close()
        try:
            src = re.compile('defaultresolution="(.+?)"').findall(read)[0]
        except:
            src = re.compile('<res.+?folder="(.+?)"').findall(read)[0]
        src = os.path.join(skinPath, src)
        src = os.path.join(src, 'MyVideoNav.xml')
        file = control.openFile(src)
        read = file.read().replace('\n', '')
        file.close()
        views = re.compile('<views>(.+?)</views>').findall(read)[0]
        views = [int(x) for x in views.split(',')]
        for view in views:
            label = control.infoLabel('Control.GetLabel(%s)' % (view))
            if not (label == '' or label == None): break
        record = (skin, content, str(view))
        control.makeFile(control.dataPath)
        dbcon = database.connect(control.viewsFile)
        dbcur = dbcon.cursor()
        dbcur.execute("CREATE TABLE IF NOT EXISTS views ("
                      "skin TEXT, "
                      "view_type TEXT, "
                      "view_id TEXT, "
                      "UNIQUE(skin, view_type)"
                      ");")
        dbcur.execute(
            "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" %
            (record[0], record[1]))
        dbcur.execute("INSERT INTO views Values (?, ?, ?)", record)
        dbcon.commit()

        viewName = control.infoLabel('Container.Viewmode')
        skinName = control.addon(skin).getAddonInfo('name')
        skinIcon = control.addon(skin).getAddonInfo('icon')

        interface.Dialog.notification(
            title=33586,
            message=interface.Translation.string(33587) + ': ' + str(viewName),
            icon=interface.Dialog.IconSuccess)
    except:
        return
Esempio n. 17
0
    def search(self, query=None):
        if control.infoLabel('Container.PluginName') == '':
            return control.dialog.ok('Exodus',
                                     control.lang(30518).encode('utf-8'), '',
                                     '')

        if not control.infoLabel('ListItem.Title') == '':
            self.query = control.window.getProperty('%s.channel.search' %
                                                    control.addonInfo('id'))

        elif query == None:
            t = control.lang(30201).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            self.query = k.getText() if k.isConfirmed() else None

        else:
            self.query = query

        if (self.query == None or self.query == ''): return

        control.window.setProperty(
            '%s.channel.search' % control.addonInfo('id'), self.query)

        response = get(
            control.apollo_static_link +
            'search.php?type=livetv&search=%s' % urllib.quote_plus(self.query),
            verify=False)
        data = json.loads(response.text)

        for channel in data['result']:
            try:
                self.list.append({
                    'id':
                    str(channel['id']),
                    'name':
                    str(channel['name'].encode('utf-8')),
                    'title':
                    '',
                    'hd':
                    str(channel['hd']),
                    'url':
                    'plugin://' + control.addon().getAddonInfo('id') +
                    '/?action=apollo&imdb=9999&season=%s&title=%s' %
                    (channel['id'], channel['id']),
                    'poster':
                    str(channel['logo'])
                })
            except:
                print "####### ERROR Getting List from Server: %s %s" % (str(
                    channel['id']), channel)
                pass

        try:
            self.list = sorted(self.list, key=lambda k: k['name'])
        except:
            pass

        self.channelDirectory(self.list, 99)
        return self.list
Esempio n. 18
0
def _find_cache_version():
    import os
    versionFile = os.path.join(control.dataPath, 'cache.v')

    try:
        if not os.path.exists(versionFile):
            f = open(versionFile, 'w')
            f.close()
    except Exception:
        import xbmc
        print 'Venom Addon Data Path Does not Exist. Creating Folder....'
        ad_folder = xbmc.translatePath(
            'special://home/userdata/addon_data/plugin.video.venom')
        os.makedirs(ad_folder)

    try:
        with open(versionFile, 'rb') as fh:
            oldVersion = fh.read()
    except:
        oldVersion = '0'

    try:
        curVersion = control.addon('plugin.video.venom').getAddonInfo(
            'version')

        if oldVersion != curVersion:
            with open(versionFile, 'wb') as fh:
                fh.write(curVersion)
            return True
        else:
            return False
    except:
        return False
Esempio n. 19
0
def _find_cache_version():
    versionFile = control.joinPath(control.dataPath, 'cache.v')
    try:
        if not control.existsPath(versionFile):
            f = open(versionFile, 'w')
            f.close()
    except:
        log_utils.log(
            'Venom Addon Data Path Does not Exist. Creating Folder....',
            __name__, log_utils.LOGDEBUG)
        ad_folder = control.transPath(
            'special://profile/addon_data/plugin.video.venom')
        control.makeDirs(ad_folder)
    try:
        with open(versionFile, 'rb') as fh:
            oldVersion = fh.read()
    except:
        oldVersion = '0'
    try:
        curVersion = control.addon('plugin.video.venom').getAddonInfo(
            'version')
        if oldVersion != curVersion:
            with open(versionFile, 'wb') as fh:
                fh.write(curVersion)
            return True
        else:
            return False
    except:
        log_utils.error()
        return False
Esempio n. 20
0
	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.addon('script.module.resolveurl').setSetting('AllDebridResolver_token', self.token)
			except:
				self.token = 'failed'
				return control.notification(title='default', message=40021, icon='default')
		return
Esempio n. 21
0
def update_cache_version():
    versionFile = control.joinPath(control.dataPath, 'cache.v')
    try:
        if not control.existsPath(versionFile):
            f = open(versionFile, 'w')
            f.close()
    except:
        from resources.lib.modules import log_utils
        log_utils.log('dg Addon Data Path Does not Exist. Creating Folder....',
                      __name__, log_utils.LOGDEBUG)
        ad_folder = control.transPath(
            'special://profile/addon_data/plugin.video.dg')
        control.makeDirs(ad_folder)
    try:
        with open(versionFile, 'r') as fh:
            oldVersion = fh.read()
    except:
        oldVersion = '0'
    try:
        curVersion = control.addon('plugin.video.dg').getAddonInfo('version')
        if oldVersion != curVersion:
            with open(versionFile, 'w') as fh:
                fh.write(curVersion)
            return oldVersion, True
        else:
            return oldVersion, False
    except:
        from resources.lib.modules import log_utils
        log_utils.error()
        return oldVersion, False
Esempio n. 22
0
 def __init__(self):
     self.hosters = None
     self.hosts = None
     self.cache_check_results = {}
     self.token = control.addon('script.module.resolveurl').getSetting(
         'RealDebridResolver_token')
     self.headers = {'Authorization': 'Bearer %s' % self.token}
     self.client_ID = control.addon('script.module.resolveurl').getSetting(
         'RealDebridResolver_client_id')
     if self.client_ID == '':
         self.client_ID = 'X245A4XAIBGVM'
     self.secret = control.addon('script.module.resolveurl').getSetting(
         'RealDebridResolver_client_secret')
     self.device_code = ''
     self.auth_timeout = 0
     self.auth_step = 0
Esempio n. 23
0
 def get_media_url(self, host, media_id, cached_only=False):
     torrent = False
     cached = self.check_cache_item(media_id)
     media_id_lc = media_id.lower()
     if cached:
         log_utils.log(
             'Premiumize.me: %s is readily available to stream' % media_id,
             __name__, log_utils.LOGDEBUG)
         if media_id_lc.endswith('.torrent') or media_id_lc.startswith(
                 'magnet:'):
             torrent = True
     elif media_id_lc.endswith('.torrent') or media_id_lc.startswith(
             'magnet:'):
         if control.addon('script.module.resolveurl').getSetting(
                 'PremiumizeMeResolver_cached_only') or cached_only:
             raise Exception(
                 'Premiumize.me: Cached torrents only allowed to be initiated'
             )
         torrent = True
         log_utils.log(
             'Premiumize.me: initiating transfer to cloud for %s' %
             media_id, __name__, log_utils.LOGDEBUG)
         self.create_transfer(media_id)
     link = self.__direct_dl(media_id, torrent=torrent)
     if link:
         log_utils.log('Premiumize.me: Resolved to %s' % link, __name__,
                       log_utils.LOGDEBUG)
         return link + self.append_headers(self.headers)
     raise ResolverError('Link Not Found')
Esempio n. 24
0
def _find_cache_version():
    versionFile = os.path.join(control.dataPath, 'cache.v')
    try:
        if six.PY2:
            with open(versionFile, 'rb') as fh:
                oldVersion = fh.read()
        elif six.PY3:
            with open(versionFile, 'r') as fh:
                oldVersion = fh.read()
    except:
        oldVersion = '0'
    try:
        curVersion = control.addon('plugin.video.theoath').getAddonInfo(
            'version')
        if oldVersion != curVersion:
            if six.PY2:
                with open(versionFile, 'wb') as fh:
                    fh.write(curVersion)
            elif six.PY3:
                with open(versionFile, 'w') as fh:
                    fh.write(curVersion)
            return True
        else:
            return False
    except:
        return False
Esempio n. 25
0
 def reset_authorization(self):
     control.addon('script.module.resolveurl').setSetting(
         'RealDebridResolver_client_id', '')
     control.addon('script.module.resolveurl').setSetting(
         'RealDebridResolver_client_secret', '')
     control.addon('script.module.resolveurl').setSetting(
         'RealDebridResolver_token', '')
     control.addon('script.module.resolveurl').setSetting(
         'RealDebridResolver_refresh', '')
Esempio n. 26
0
	def alldebrid_service(self):
		ad_token = control.addon('script.module.resolveurl').getSetting('AllDebridResolver_token')
		if ad_token:
			self.addDirectoryItem('All-Debrid: Cloud Storage', 'ad_CloudStorage', 'alldebrid.png', 'DefaultAddonService.png')
			self.addDirectoryItem('All-Debrid: Transfers', 'ad_Transfers', 'alldebrid.png', 'DefaultAddonService.png')
			self.addDirectoryItem('All-Debrid: Account Info', 'ad_AccountInfo', 'alldebrid.png', 'DefaultAddonService.png', isFolder=False)
		self.addDirectoryItem('All-Debrid: (Re)Authorize', 'ad_Authorize', 'alldebrid.png', 'DefaultAddonService.png', isFolder=False)
		self.endDirectory()
Esempio n. 27
0
	def realdebrid_service(self):
		rd_token = control.addon('script.module.resolveurl').getSetting('RealDebridResolver_token')
		if rd_token:
			self.addDirectoryItem('Real-Debrid: Torrent Transfers', 'rd_UserTorrentsToListItem', 'realdebrid.png', 'DefaultAddonService.png')
			self.addDirectoryItem('Real-Debrid: My Downloads', 'rd_MyDownloads&query=1', 'realdebrid.png', 'DefaultAddonService.png')
			self.addDirectoryItem('Real-Debrid: Account Info', 'rd_AccountInfo', 'realdebrid.png', 'DefaultAddonService.png',isFolder=False )
		self.addDirectoryItem('Real-Debrid: (Re)Authorize', 'rd_Authorize', 'realdebrid.png', 'DefaultAddonService.png',isFolder=False )
		self.endDirectory()
 def news(self):
     AddonVersion = control.addon('plugin.video.grumpybear').getAddonInfo(
         'version')
     r = open(self.LOCALNEWS)
     compfile = r.read()
     self.showText(
         '[B][COLOR springgreen]Infos und Updates[/COLOR][/B]' + ' ' +
         '---' + ' ' + '(Version: ' + AddonVersion + ')', compfile)
Esempio n. 29
0
	def premiumize_service(self):
		pm_token = control.addon('script.module.resolveurl').getSetting('PremiumizeMeResolver_token')
		if pm_token:
			self.addDirectoryItem('Premiumize: My Files', 'pm_MyFiles', 'premiumize.png', 'DefaultAddonService.png')
			self.addDirectoryItem('Premiumize: Transfers', 'pm_Transfers', 'premiumize.png', 'DefaultAddonService.png')
			self.addDirectoryItem('Premiumize: Account Info', 'pm_AccountInfo', 'premiumize.png', 'DefaultAddonService.png', isFolder=False)
		self.addDirectoryItem('Premiumize: (Re)Authorize', 'pm_Authorize&opensettings=false', 'premiumize.png', 'DefaultAddonService.png', isFolder=False)
		self.endDirectory()
Esempio n. 30
0
def SetFirstPVR():
	i = xbmcgui.Dialog().yesno(control.addon().getAddonInfo('name'),"Use TV Guide ?")
	if i == 0:
		control.addon().setSetting('apollo.pvr', "false")
	else:
		control.addon().setSetting('apollo.pvr', "true")
	control.addon().setSetting('apollo.first', "true")
def pluginVideoLastship():
    name = 'plugin.video.lastship'
    path = control.addon(name).getAddonInfo('Path')
    commitXML = _getXmlString(REMOTE_PLUGIN_COMMITS)
    if commitXML:
        commitUpdate(commitXML, LOCAL_PLUGIN_VERSION, REMOTE_PLUGIN_DOWNLOADS, path, "Updating " + name, LOCAL_FILE_NAME_PLUGIN)
        xbmcgui.Dialog().ok('LastShip', name+ "-Update Erfolgreich.")
    else:
        xbmcgui.Dialog().ok('LastShip', 'Fehler beim ' + name+ "-Update.")
Esempio n. 32
0
def addView(content):
    try:
        skin = control.skin
        record = (skin, content, str(control.getCurrentViewId()))
        control.makeFile(control.dataPath)
        dbcon = database.connect(control.viewsFile)
        dbcur = dbcon.cursor()
        dbcur.execute("CREATE TABLE IF NOT EXISTS views (""skin TEXT, ""view_type TEXT, ""view_id TEXT, ""UNIQUE(skin, view_type)"");")
        dbcur.execute("DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1]))
        dbcur.execute("INSERT INTO views Values (?, ?, ?)", record)
        dbcon.commit()

        viewName = control.infoLabel('Container.Viewmode')
        skinName = control.addon(skin).getAddonInfo('name')
        skinIcon = control.addon(skin).getAddonInfo('icon')

        control.infoDialog(viewName, heading=skinName, sound=True, icon=skinIcon)
    except:
        return
Esempio n. 33
0
def _find_cache_version():

    import os
    versionFile = os.path.join(control.dataPath, 'cache.v')
    try: 
        with open(versionFile, 'rb') as fh: oldVersion = fh.read()
    except: oldVersion = '0'
    try:
        curVersion = control.addon('script.module.exodus').getAddonInfo('version')
        if oldVersion != curVersion: 
            with open(versionFile, 'wb') as fh: fh.write(curVersion)
            return True
        else: return False
    except: return False
Esempio n. 34
0
def addView(content):
	try:
		skin = control.skin
		skinPath = control.kodiSkinPath
		xml = os.path.join(skinPath,'addon.xml')
		file = control.openFile(xml)
		read = file.read().replace('\n','')
		file.close()
		try: src = re.compile('defaultresolution="(.+?)"').findall(read)[0]
		except: src = re.compile('<res.+?folder="(.+?)"').findall(read)[0]
		src = os.path.join(skinPath, src)
		src = os.path.join(src, 'MyVideoNav.xml')
		file = control.openFile(src)
		read = file.read().replace('\n','')
		file.close()
		views = re.compile('<views>(.+?)</views>').findall(read)[0]
		views = [int(x) for x in views.split(',')]
		for view in views:
			label = control.infoLabel('Control.GetLabel(%s)' % (view))
			if not (label == '' or label == None): break
		record = (skin, content, str(view))
		control.makeFile(control.dataPath)
		dbcon = database.connect(control.viewsFile)
		dbcur = dbcon.cursor()
		dbcur.execute("CREATE TABLE IF NOT EXISTS views (""skin TEXT, ""view_type TEXT, ""view_id TEXT, ""UNIQUE(skin, view_type)"");")
		dbcur.execute("DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1]))
		dbcur.execute("INSERT INTO views Values (?, ?, ?)", record)
		dbcon.commit()

		viewName = control.infoLabel('Container.Viewmode')
		skinName = control.addon(skin).getAddonInfo('name')
		skinIcon = control.addon(skin).getAddonInfo('icon')

		interface.Dialog.notification(title = 33586, message = interface.Translation.string(33587) + ': ' + str(viewName), icon = interface.Dialog.IconSuccess)
	except:
		return
Esempio n. 35
0
def _find_cache_version():

    import os

    versionFile = os.path.join(control.dataPath, 'cache.v')
    try:
        if not os.path.exists(versionFile): f = open(versionFile, 'w'); f.close()
    except Exception as e:
        import xbmc
        print 'Placenta Addon Data Path Does not Exist. Creating Folder....'
        ad_folder = xbmc.translatePath('special://home/userdata/addon_data/plugin.video.placenta')
        os.makedirs(ad_folder)

    try: 
        with open(versionFile, 'rb') as fh: oldVersion = fh.read()
    except: oldVersion = '0'
    try:
        curVersion = control.addon('script.module.placenta').getAddonInfo('version')
        if oldVersion != curVersion: 
            with open(versionFile, 'wb') as fh: fh.write(curVersion)
            return True
        else: return False
    except: return False
Esempio n. 36
0
 # @tantrumdev wrote this file.  As long as you retain this notice you
 # can do whatever you want with this stuff. If we meet some day, and you think
 # this stuff is worth it, you can buy me a beer in return. - Muad'Dib
 # ----------------------------------------------------------------------------
#######################################################################

# Addon Name: Placenta
# Addon id: plugin.video.placenta
# Addon Provider: MuadDib

from resources.lib.modules import log_utils
from resources.lib.modules import control

control.execute('RunPlugin(plugin://%s)' % control.get_plugin_url({'action': 'service'}))

try:
    ModuleVersion = control.addon('script.module.placenta').getAddonInfo('version')
    AddonVersion = control.addon('plugin.video.placenta').getAddonInfo('version')
    RepoVersion = control.addon('repository.blamo').getAddonInfo('version')

    log_utils.log('######################### PLACENTA ############################', log_utils.LOGNOTICE)
    log_utils.log('####### CURRENT PLACENTA VERSIONS REPORT ######################', log_utils.LOGNOTICE)
    log_utils.log('### PLACENTA PLUGIN VERSION: %s ###' % str(AddonVersion), log_utils.LOGNOTICE)
    log_utils.log('### PLACENTA SCRIPT VERSION: %s ###' % str(ModuleVersion), log_utils.LOGNOTICE)
    log_utils.log('### TEAM REBIRTH REPOSITORY VERSION: %s ###' % str(RepoVersion), log_utils.LOGNOTICE)
    log_utils.log('###############################################################', log_utils.LOGNOTICE)
except:
    log_utils.log('######################### PLACENTA ############################', log_utils.LOGNOTICE)
    log_utils.log('####### CURRENT PLACENTA VERSIONS REPORT ######################', log_utils.LOGNOTICE)
    log_utils.log('### ERROR GETTING PLACENTA VERSIONS - NO HELP WILL BE GIVEN AS YOU ARE EATING OUR AFTERBIRTH BITCHES. ###', log_utils.LOGNOTICE)
    log_utils.log('###############################################################', log_utils.LOGNOTICE)
Esempio n. 37
0
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""
from resources.lib.modules import log_utils
from resources.lib.modules import control
import threading

control.execute('RunPlugin(plugin://%s)' % control.get_plugin_url({'action': 'service'}))

def syncTraktLibrary():
    control.execute(
        'RunPlugin(plugin://%s)' % 'plugin.video.magicality/?action=tvshowsToLibrarySilent&url=traktcollection')
    control.execute(
        'RunPlugin(plugin://%s)' % 'plugin.video.magicality/?action=moviesToLibrarySilent&url=traktcollection')

try:
    ModuleVersion = control.addon('script.module.magicality').getAddonInfo('version')
    AddonVersion = control.addon('plugin.video.magicality').getAddonInfo('version')
    #RepoVersion = control.addon('repository.colossus').getAddonInfo('version')

    log_utils.log('######################### resistance ############################', log_utils.LOGNOTICE)
    log_utils.log('####### CURRENT resistance VERSIONS REPORT ######################', log_utils.LOGNOTICE)
    log_utils.log('### resistance PLUGIN VERSION: %s ###' % str(AddonVersion), log_utils.LOGNOTICE)
    log_utils.log('### resistance SCRIPT VERSION: %s ###' % str(ModuleVersion), log_utils.LOGNOTICE)
    #log_utils.log('### resistance REPOSITORY VERSION: %s ###' % str(RepoVersion), log_utils.LOGNOTICE)
    log_utils.log('###############################################################', log_utils.LOGNOTICE)
except:
    log_utils.log('######################### resistance ############################', log_utils.LOGNOTICE)
    log_utils.log('####### CURRENT resistance VERSIONS REPORT ######################', log_utils.LOGNOTICE)
    log_utils.log('### ERROR GETTING resistance VERSIONS - NO HELP WILL BE GIVEN AS THIS IS NOT AN OFFICIAL resistance INSTALL. ###', log_utils.LOGNOTICE)
    log_utils.log('###############################################################', log_utils.LOGNOTICE)
Esempio n. 38
0
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""
from resources.lib.modules import log_utils
from resources.lib.modules import control
import threading

control.execute('RunPlugin(plugin://%s)' % control.get_plugin_url({'action': 'service'}))

def syncTraktLibrary():
    control.execute(
        'RunPlugin(plugin://%s)' % 'plugin.video.exodus/?action=tvshowsToLibrarySilent&url=traktcollection')
    control.execute(
        'RunPlugin(plugin://%s)' % 'plugin.video.exodus/?action=moviesToLibrarySilent&url=traktcollection')

try:
    ModuleVersion = control.addon('script.module.exodus').getAddonInfo('version')
    AddonVersion = control.addon('plugin.video.exodus').getAddonInfo('version')

    log_utils.log('######################### EXODUS ############################', log_utils.LOGNOTICE)
    log_utils.log('####### CURRENT EXODUS VERSIONS REPORT ######################', log_utils.LOGNOTICE)
    log_utils.log('### EXODUS PLUGIN VERSION: %s ###' % str(AddonVersion), log_utils.LOGNOTICE)
    log_utils.log('### EXODUS SCRIPT VERSION: %s ###' % str(ModuleVersion), log_utils.LOGNOTICE)
    #log_utils.log('### EXODUS REPOSITORY VERSION: %s ###' % str(RepoVersion), log_utils.LOGNOTICE)
    log_utils.log('###############################################################', log_utils.LOGNOTICE)
except:
    log_utils.log('######################### EXODUS ############################', log_utils.LOGNOTICE)
    log_utils.log('####### CURRENT EXODUS VERSIONS REPORT ######################', log_utils.LOGNOTICE)
    log_utils.log('### ERROR GETTING EXODUS VERSIONS - NO HELP WILL BE GIVEN AS THIS IS NOT AN OFFICIAL EXODUS INSTALL. ###', log_utils.LOGNOTICE)
    log_utils.log('###############################################################', log_utils.LOGNOTICE)

if control.setting('autoTraktOnStart') == 'true':