Exemple #1
0
def auth_trakt(Trakt_API, translations):
    i18n = translations.i18n
    start = time.time()
    use_https = kodi.get_setting('use_https') == 'true'
    trakt_timeout = int(kodi.get_setting('trakt_timeout'))
    trakt_api = Trakt_API(use_https=use_https, timeout=trakt_timeout)
    result = trakt_api.get_code()
    code, expires, interval = result['device_code'], result[
        'expires_in'], result['interval']
    time_left = expires - int(time.time() - start)
    line1 = i18n('verification_url') % (result['verification_url'])
    line2 = i18n('prompt_code') % (result['user_code'])
    with kodi.CountdownDialog(i18n('trakt_acct_auth'),
                              line1=line1,
                              line2=line2,
                              countdown=time_left,
                              interval=interval) as cd:
        result = cd.start(__auth_trakt, [trakt_api, code, i18n])

    try:
        kodi.set_setting('trakt_oauth_token', result['access_token'])
        kodi.set_setting('trakt_refresh_token', result['refresh_token'])
        trakt_api = Trakt_API(result['access_token'],
                              use_https=use_https,
                              timeout=trakt_timeout)
        profile = trakt_api.get_user_profile(cached=False)
        kodi.set_setting('trakt_user',
                         '%s (%s)' % (profile['username'], profile['name']))
        kodi.notify(msg=i18n('trakt_auth_complete'), duration=3000)
    except Exception as e:
        logger.log('Trakt Authorization Failed: %s' % (e), xbmc.LOGDEBUG)
Exemple #2
0
def clearHistory():
    if os.path.isfile(historydb):
        choice = xbmcgui.Dialog().yesno(kodi.get_name(), kodi.giveColor('Would you like to clear all history?', 'white'))
        if choice:
            try:
                os.remove(historydb)
            except:
                kodi.notify(msg='Error removing history.')
    xbmc.executebuiltin("Container.Refresh")
Exemple #3
0
def find(url, name=None, iconimage=None, pattern=None):

    kodi.busy()

    try:
        url, site = url.split('|SPLIT|')
    except:
        site = 'Unknown'
        log_utils.log('Error getting site information from :: %s' % (url),
                      xbmc.LOGERROR)

    try:
        if 'streamingporn.xyz' in url:
            c = client.request(url)
            r = dom_parser2.parse_dom(c,
                                      'a',
                                      req=['href', 'class', 'rel', 'target'])
            r = [i for i in r if i.attrs['class'] == 'external']
            r = [client.request(i.attrs['href'], output='geturl') for i in r]
            r = [i for i in r if hmf.HostedMediaFile(i).valid_url()]
            url = multi(r)
        elif 'spreadporn.org' in url:
            c = client.request(url)
            r = dom_parser2.parse_dom(c, 'li', req=['data-show', 'data-link'])
            r = [(i.attrs['data-link']) for i in r]
            url = multi(r)
        elif 'pandamovie.eu' in url:
            c = client.request(url)
            r = dom_parser2.parse_dom(c, 'a', req='id')
            r = [(i.attrs['href']) for i in r]
            url = multi(r)
        elif 'xtheatre.net' in url:
            c = client.request(url)
            pattern = '''<iframe\s*src=['"](?:[^'"]+)['"]\s*data-lazy-src=['"]([^'"]+)'''
            r = re.findall(pattern, c)
            url = multi(r)
        elif 'sexkino.to' in url:
            c = client.request(url)
            u = dom_parser2.parse_dom(c, 'iframe',
                                      {'class': ['metaframe', 'rptss']})
            r = dom_parser2.parse_dom(c, 'tr')
            r = [dom_parser2.parse_dom(i, 'a', req='href') for i in r]
            r = [client.request(i[0].attrs['href']) for i in r if i]
            r = [i.attrs['src'] for i in u] + [
                re.findall("window.location.href='([^']+)", i)[0] for i in r
            ]
            url = multi(r)
    except:
        kodi.idle()
        kodi.notify(msg='Error getting link for (Link Finer) %s' % name)
        kodi.idle()
        quit()

    url += '|SPLIT|%s' % site
    kodi.idle()
    player.resolve_url(url, name, iconimage)
def Favorites(fav, favmode, name, url, img, _folder):
    if fav == "add":
        delFav(url)
        addFav(favmode, name, url, img, _folder)
        kodi.notify('Favorite added', 'Item added to the favorites')
    elif fav == "del":
        delFav(url)
        log_utils.log('Deleting %s from favorites' % (url), xbmc.LOGNOTICE)
        kodi.notify('Favorite deleted', 'Item removed from the list')
        xbmc.executebuiltin('Container.Refresh')
Exemple #5
0
def multilinkselector(url):
    try:
        if len(url) == 1:
            url = url[0][1]
        else:
            sources = []

            for i in url:
                smu_file = False
                try:
                    if i[2]: smu_file = True
                except:
                    pass
                if (not smu_file):
                    c = client.request(i[1], output='headers')
                    sources += [(i[0], kodi.convertSize(int(c['Content-Length'])), i[1])]
                else:
                    try:
                        pattern = r'''(?:)(?:http|https)(?:\:\/\/|\:\/\/www.)([^\.]+)'''
                        domain = re.match(pattern, i[1])
                        domain = domain.group(1).title()
                    except:
                        domain = 'Resolve URL Link'
                    sources += [(i[0], domain, i[1])]

            quals = []
            srcs = []

            for i in sources:
                qual = '%s - [ %s ]' % (i[0], i[1])
                quals.append(kodi.giveColor(qual, 'white', True))
                srcs.append(i[2])

            selected = kodi.dialog.select('Select a quality.', quals)
            if selected < 0:
                kodi.notify(msg='No option selected.')
                return 'quit'
            else:
                url = srcs[selected]
        kodi.busy()
        try:
            if hmf.HostedMediaFile(url).valid_url():
                url = hmf.HostedMediaFile(url).resolve()
        except:
            pass
        kodi.idle()
        return url
    except:
        try:
            if hmf.HostedMediaFile(url[0][1]).valid_url():
                url = hmf.HostedMediaFile(url[0][1]).resolve()
            return url
        except:
            pass
def getDest():
    if (not os.path.exists(download_folder)):
        try:
            os.makedirs(download_folder)
        except:
            kodi.notify('Error creating download folder.')
            quit()
    if (not download_folder):
        kodi.notify('Error getting destination location.')
        quit()
    return download_folder
def clearFavorites():
    if os.path.isfile(favoritesdb):
        choice = xbmcgui.Dialog().yesno(
            kodi.get_name(),
            kodi.giveColor('Would you like to clear all of your favorites?',
                           'white'))
        if choice:
            try:
                os.remove(favoritesdb)
            except:
                kodi.notify(msg='Error clearing favorites.')
    xbmc.executebuiltin("Container.Refresh")
def disableSearch():

    if kodi.get_setting('search_setting') == 'true':
        try:
            os.remove(searchfile)
        except:
            pass
        kodi.set_setting('search_setting', 'false')
    else:
        kodi.set_setting('search_setting', 'true')
    kodi.notify(msg='Search history disabled.')
    quit()
Exemple #9
0
def __auth_trakt(trakt_api, code, i18n):
    try:
        result = trakt_api.get_device_token(code)
        return result
    except URLError as e:
        # authorization is pending; too fast
        if e.code in [400, 429]:
            return
        elif e.code == 418:
            kodi.notify(msg=i18n('user_reject_auth'), duration=3000)
            return True
        elif e.code == 410:
            return
        else:
            raise
Exemple #10
0
def choose_list(Trakt_API, translations, username=None):
    i18n = translations.i18n
    trakt_api = Trakt_API(kodi.get_setting('trakt_oauth_token'),
                          kodi.get_setting('use_https') == 'true',
                          timeout=int(kodi.get_setting('trakt_timeout')))
    lists = trakt_api.get_lists(username)
    if username is None:
        lists.insert(0, {'name': 'watchlist', 'ids': {'slug': WATCHLIST_SLUG}})
    if lists:
        dialog = xbmcgui.Dialog()
        index = dialog.select(i18n('pick_a_list'),
                              [list_data['name'] for list_data in lists])
        if index > -1:
            return lists[index]['ids']['slug'], lists[index]['name']
    else:
        kodi.notify(msg=i18n('no_lists_for_user') % (username), duration=5000)
def download(url, name, icon, dest, dp=None):
    xbmc.executebuiltin("Dialog.Close(busydialog)")
    if '|' in url:
        url = url.split('|')[0]
    if not dp:
        dp = kodi.dp
        dp.create(kodi.get_name(), "Downloading: %s" % name, ' ', ' ')
    dp.update(0)
    start_time = time.time()
    log_utils.log('Attempting to download :: %s' % url, xbmc.LOGNOTICE)
    urlretrieve(url, dest,
                lambda nb, bs, fs: _pbhook(dest, nb, bs, fs, dp, start_time))
    addDownload(name, url, icon)
    kodi.notify(msg='Download Complete', sound=True)
    log_utils.log('Download complete.', xbmc.LOGNOTICE)
    finish_up(dest)
def removeDownload(url, name):
    try:
        os.remove(url)
        try:
            name = name.replace('.mp4', '')
            name = kodi.stripColor(name)
            conn = sqlite3.connect(downloaddb)
            c = conn.cursor()
            c.execute("DELETE FROM downloads WHERE name = '%s'" % name)
            conn.commit()
            conn.close()
        except:
            pass
        kodi.notify(msg='Removed successfully.')
    except:
        kodi.notify(msg='Error removing file.')
    xbmc.executebuiltin("Container.Refresh")
def delTerm(url):
    refresh = False
    try:
        if 'search_term=' in url:
            url = url.split('search_term=')[1]
            refresh = True
        if '|' in url:
            url = url.split('|')[0]
            refresh = True
        conn = sqlite3.connect(searchdb)
        c = conn.cursor()
        c.execute("DELETE FROM terms WHERE term = '%s'" % url)
        conn.commit()
        conn.close()
    except:
        pass

    if refresh:
        xbmc.executebuiltin("Container.Refresh")
        kodi.notify('%s removed from list.' % url.title(), duration=5000, sound=True)
def _pbhook(dest, numblocks, blocksize, filesize, dp, start_time):
    try:
        if filesize <= 0:
            kodi.notify(msg='Invalid downloadable file', sound=True)
            log_utils.log('Error downloading video.', xbmc.LOGERROR)
            quit()
        percent = min(numblocks * blocksize * 100 / filesize, 100)
        currently_downloaded = float(numblocks) * blocksize / (1024 * 1024)
        kbps_speed = numblocks * blocksize / (time.time() - start_time)
        if kbps_speed > 0:
            eta = (filesize - numblocks * blocksize) / kbps_speed
        else:
            eta = 0
        kbps_speed = kbps_speed / 1024
        mbps_speed = kbps_speed / 1024
        total = float(filesize) / (1024 * 1024)
        mbs = '[COLOR dodgerblue]%.02f MB[/COLOR] of [B]%.02f MB[/B]' % (
            currently_downloaded, total)
        e = '[COLOR white][B]Speed: [/B][/COLOR][COLOR dodgerblue]%.02f Mb/s ' % mbps_speed + '[/COLOR]'
        e += '[COLOR white][B]ETA: [/B][/COLOR][COLOR dodgerblue]%02d:%02d' % divmod(
            eta, 60) + '[/COLOR]'
        dp.update(percent, '', mbs, e)
    except:
        dp.close()
        kodi.notify(msg='Error Downloading. Exiting...')
        quit()
    if dp.iscanceled():
        dp.close()
        kodi.notify(msg='Download Cancelled')
        quit()
Exemple #15
0
def multi(r):

    r = [(re.findall('(?://)(?:www.)?([^.]+).', i)[0].title(), i) for i in r
         if hmf.HostedMediaFile(i).valid_url()]

    names = []
    srcs = []

    if len(r) > 1:
        for i in sorted(r, reverse=True):
            names.append(kodi.giveColor(i[0], 'white', True))
            srcs.append(i[1])
        selected = kodi.dialog.select('Select a link.', names)
        if selected < 0:
            kodi.notify(msg='No option selected.')
            kodi.idle()
            quit()
        else:
            url = srcs[selected]
            return url
    else:
        return r[0][1]
Exemple #16
0
def menu():
    try:
        url = urljoin(base_domain, 'categories?o=al')
        c = client.request(url)
        r = dom_parser2.parse_dom(c, 'li', {'class': 'cat_pic'})
        r = [(dom_parser2.parse_dom(i, 'a', req=['href', 'alt']), \
              dom_parser2.parse_dom(i, 'var'), \
              dom_parser2.parse_dom(i, 'img', req='src')) \
             for i in r if i]
        r = [(urljoin(base_domain, i[0][0].attrs['href']),
              i[0][0].attrs['alt'], i[1][0].content, i[2][0].attrs['src'])
             for i in r if i]
        if (not r):
            log_utils.log(
                'Scraping Error in %s:: Content of request: %s' %
                (base_name.title(), str(c)), xbmc.LOGERROR)
            kodi.notify(msg='Scraping Error: Info Added To Log File',
                        duration=6000,
                        sound=True)
            quit()
    except Exception as e:
        log_utils.log(
            'Fatal Error in %s:: Error: %s' % (base_name.title(), str(e)),
            xbmc.LOGERROR)
        kodi.notify(msg='Fatal Error', duration=4000, sound=True)
        quit()

    dirlst = []

    for i in r:
        try:
            name = kodi.sortX(i[1].encode('utf-8'))
            name = name.title() + ' - [ %s ]' % i[2].split(' ')[0]
            fanarts = xbmc.translatePath(
                os.path.join('special://home/addons/script.adultflix.artwork',
                             'resources/art/%s/fanart.jpg' % filename))
            dirlst.append({
                'name': name,
                'url': i[0],
                'mode': content_mode,
                'icon': i[3],
                'fanart': fanarts,
                'folder': True
            })
        except Exception as e:
            log_utils.log(
                'Error adding menu item %s in %s:: Error: %s' %
                (i[1].title(), base_name.title(), str(e)), xbmc.LOGERROR)

    if dirlst:
        buildDirectory(dirlst)
    else:
        kodi.notify(msg='No Menu Items Found')
        quit()
def depVersions():
    try:
        xbmc_version = xbmc.getInfoLabel("System.BuildVersion").split(' ')[0]
    except:
        xbmc_version = 'Unknown'
    try:
        xbmc_builddate = xbmc.getInfoLabel('System.BuildDate')
    except:
        xbmc_builddate = 'Unknown'
    try:
        xbmc_language = xbmc.getInfoLabel('System.Language')
    except:
        xbmc_language = 'Unknown'
    try:
        python_version = sys.version.split(' ')[0]
    except:
        python_version = 'Unknown'

    try:
        xml1 = client.request(
            'https://raw.githubusercontent.com/tvaddonsco/tva-adult-repo/master/addons.xml'
        )
        xml2 = client.request(
            'https://raw.githubusercontent.com/tvaddonsco/tva-adult-repo/master/addons.xml'
        )
        lst = [('plugin.video.adultflix'), ('script.adultflix.scrapers'),
               ('script.adultflix.artwork'), ('script.module.librarypack'),
               ('script.module.resolveurl'), ('script.module.resolveurl.xxx')]

        c = []
        c += [(kodi.giveColor('Kodi Version: ', 'white', True) +
               kodi.giveColor(xbmc_version, 'pink'), kodi.addonicon,
               kodi.addonfanart, xbmc_version)]
        c += [(kodi.giveColor('Python Version: ', 'white', True) +
               kodi.giveColor(python_version, 'pink'), kodi.addonicon,
               kodi.addonfanart, python_version)]
        c += [(kodi.giveColor('Kodi Build Date: ', 'white', True) +
               kodi.giveColor(xbmc_builddate, 'pink'), kodi.addonicon,
               kodi.addonfanart, xbmc_builddate)]
        c += [(kodi.giveColor('Kodi Language: ', 'white', True) +
               kodi.giveColor(xbmc_language, 'pink'), kodi.addonicon,
               kodi.addonfanart, xbmc_language)]

        for i in lst:
            addon_name = xbmcaddon.Addon('%s' % i).getAddonInfo('name')
            addon_id = xbmcaddon.Addon('%s' % i).getAddonInfo('id')
            addon_version = xbmcaddon.Addon('%s' % i).getAddonInfo('version')
            addon_description = xbmcaddon.Addon('%s' %
                                                i).getAddonInfo('description')
            pattern = r'''id=['"]%s['"][\w\s='"-]+version=['"]([^'"]+)['"]''' % addon_id
            try:
                cur_ver = re.findall(pattern, xml1)[0]
            except:
                try:
                    cur_ver = re.findall(pattern, xml2)[0]
                except:
                    cur_ver = 'Unknown'

            in_v = int(addon_version.replace('.', ''))
            try:
                cur_v = int(cur_ver.replace('.', ''))
                if in_v < cur_v:
                    ver_color = 'orangered'
                else:
                    ver_color = 'lime'
            except:
                ver_color = 'lime'
            icon = xbmc.translatePath(
                os.path.join('special://home/addons', addon_id + '/icon.png'))
            c += [(kodi.giveColor(addon_name, 'white', True) +
                   kodi.giveColor('| Installed: ', 'white') +
                   kodi.giveColor(addon_version, ver_color, True) + ' - ' +
                   kodi.giveColor('Available: ', 'white', True) +
                   kodi.giveColor(cur_ver, 'pink', True), icon,
                   kodi.addonfanart, addon_description)]

        dirlst = []

        for e in c:
            dirlst.append({
                'name': kodi.giveColor(e[0], 'white'),
                'url': 'None',
                'mode': 999,
                'icon': e[1],
                'fanart': e[2],
                'description': e[3],
                'folder': False
            })

        buildDir(dirlst)
    except:
        kodi.notify(msg='Error opening directory.', sound=True)
        quit()
def mainSearch(url):
    if '|SPLIT|' in url: url, site = url.split('|SPLIT|')
    term = url
    if term == "null":  term = kodi.get_keyboard('Search %s' % kodi.get_name())

    if term:
        search_on_off = kodi.get_setting("search_setting")
        if search_on_off == "true":
            delTerm(term)
            addTerm(term)

        display_term = term
        term = quote_plus(term)
        term = term.lower()

        if site == 'all':
            sources = __all__
            search_sources = []
            for i in sources:
                try:
                    if eval(i + ".search_tag") == 1: search_sources.append(i)
                except:
                    pass

            if search_sources:
                i = 0
                source_num = 0
                failed_list = ''
                line1 = kodi.giveColor('Searching: ', 'white') + kodi.giveColor('%s', 'dodgerblue')
                line2 = kodi.giveColor('Found: %s videos', 'white')
                line3 = kodi.giveColor('Source: %s of ' + str(len(search_sources)), 'white')

                kodi.dp.create(kodi.get_name(), '', line2, '')
                xbmc.executebuiltin('Dialog.Close(busydialog)')
                for u in sorted(search_sources):
                    if kodi.dp.iscanceled(): break
                    try:
                        i += 1
                        progress = 100 * int(i) / len(search_sources)
                        kodi.dp.update(progress, line1 % u.title(), line2 % str(source_num), line3 % str(i))
                        search_url = eval(u + ".search_base") % term
                        try:
                            source_n = eval(u + ".content('%s',True)" % search_url)
                        except:
                            source_n = 0
                        try:
                            source_n = int(source_n)
                        except:
                            source_n = 0
                        if not source_n:
                            if failed_list == '':
                                failed_list += str(u).title()
                            else:
                                failed_list += ', %s' % str(u).title()
                        else:
                            source_num += int(source_n)
                    except:
                        pass
                kodi.dp.close()
                if failed_list != '':
                    kodi.notify(msg='%s failed to return results.' % failed_list, duration=4000, sound=True)
                    log_utils.log('Scrapers failing to return search results are :: : %s' % failed_list,
                                  xbmc.LOGERROR)
                else:
                    kodi.notify(msg='%s results found.' % str(source_num), duration=4000, sound=True)
                xbmcplugin.setContent(kodi.syshandle, 'movies')
                xbmcplugin.endOfDirectory(kodi.syshandle, cacheToDisc=True)
                local_utils.setView('search')
        else:
            search_url = eval(site + ".search_base") % term
            eval(site + ".content('%s')" % search_url)
    else:
        kodi.notify(msg='Blank searches are not allowed.')
        quit()
Exemple #19
0
def content(url, searched=False):
    import xbmcgui
    dialog = xbmcgui.Dialog()
    try:
        c = client.request(url)
        r = re.findall('<ul id="videoCategory"(.*?)</ul>', c,
                       flags=re.DOTALL)[0]
        b = re.findall(
            '<div class="img fade fadeUp videoPreviewBg">(.*?)</div>',
            r,
            flags=re.DOTALL)
        if (not r) and (not searched):
            log_utils.log(
                'Scraping Error in %s:: Content of request: %s' %
                (base_name.title(), str(c)), xbmc.LOGERROR)
            kodi.notify(msg='Scraping Error: Info Added To Log File',
                        duration=6000,
                        sound=True)
    except Exception as e:
        if (not searched):
            log_utils.log(
                'Fatal Error in %s:: Error: %s' % (base_name.title(), str(e)),
                xbmc.LOGERROR)
            kodi.notify(msg='Fatal Error', duration=4000, sound=True)
            quit()
        else:
            pass

    dirlst = []

    for i in b:
        try:
            name = re.findall('title="(.*?)"', i, flags=re.DOTALL)[0]
            if searched:
                description = 'Result provided by %s' % base_name.title()
            else:
                description = name
            content_url = re.findall('<a href="(.*?)"', i, flags=re.DOTALL)[0]
            if not base_domain in content_url:
                content_url = base_domain + content_url
            icon = re.findall('data-thumb_url\s+=\s+"(.*?)"',
                              i,
                              flags=re.DOTALL)[0]
            fanarts = xbmc.translatePath(
                os.path.join('special://home/addons/script.adultflix.artwork',
                             'resources/art/%s/fanart.jpg' % filename))
            dirlst.append({
                'name': name,
                'url': content_url,
                'mode': player_mode,
                'icon': icon,
                'fanart': fanarts,
                'description': description,
                'folder': False
            })
        except Exception as e:
            log_utils.log(
                'Error adding menu item %s in %s:: Error: %s' %
                (i[1].title(), base_name.title(), str(e)), xbmc.LOGERROR)

    if dirlst:
        buildDirectory(dirlst, stopend=True, isVideo=True, isDownloadable=True)
    else:
        if (not searched):
            kodi.notify(msg='No Content Found')
            quit()

    if searched: return str(len(r))

    if not searched:

        try:
            search_pattern = '''\<link\s*rel\=['"]next['"]\s*href\=['"]([^'"]+)'''
            parse = base_domain
            helper.scraper().get_next_page(content_mode, url, search_pattern,
                                           filename)
        except Exception as e:
            log_utils.log(
                'Error getting next page for %s :: Error: %s' %
                (base_name.title(), str(e)), xbmc.LOGERROR)
Exemple #20
0
def play(url, name, iconimage=None, ref=None, site=None):
    try:
        kodi.busy()

        if not site:
            if 'site=' in url:
                url, site = url.split('site=')
            else:
                site = 'Unknown'
        if not name: name = 'Unknown'
        if not iconimage: iconimage = kodi.addonicon
        name = re.sub(r'(\[.+?\])', '', name)
        name = name.lstrip()
        if '] - ' in name: name = name.split('] - ')[-1]

        chatur = False

        if ref:
            if 'chaturbate.com' in ref:
                chatur = True
        else:
            ref = ''
        if 'chaturbate.com' in url:
            chatur = True
            ref = url
            url = adultresolver.resolve(url)
        if (isinstance(url, list)):
            try:
                url = multilinkselector(url)
            except:
                pass

        history_on_off = kodi.get_setting("history_setting")
        if history_on_off == "true":
            web_checks = ['http:', 'https:', 'rtmp:']
            locak_checks = ['.mp4']
            try:
                if any(f for f in web_checks if f in url):
                    site = site.title()
                elif any(f for f in locak_checks if f in url):
                    site = 'Local File'
                else:
                    site = 'Unknown'
            except:
                site = site.title()

            # if chatur:
            history.delEntry(ref)
            history.addHistory(name, ref, site.title(), iconimage)
            # else:
            #    history.delEntry(url)
            #    history.addHistory(name, url, site.title(), iconimage)

        kodi.idle()

        if 'chaturbate.com' in ref:
            if kodi.get_setting("mobile_mode") == 'true':
                url = url.replace('_fast_aac', '_aac')
            else:
                bandwidth = kodi.get_setting("chaturbate_band")
                if bandwidth == '0':
                    url = url.replace('_fast_aac', '_aac')
                elif bandwidth == '2':
                    choice = kodi.dialog.select("[COLOR white][B]" + name + "[/B][/COLOR]", ['[COLOR white]Play High Bandwidth Stream[/COLOR]', '[COLOR white]Play Low Bandwidth Stream[/COLOR]'])
                    if choice == 1:
                        url = url.replace('_fast_aac', '_aac')
                    elif choice == 0:
                        pass
                    else:
                        quit()

            liz = xbmcgui.ListItem(name, iconImage=iconimage, thumbnailImage=iconimage)
            xbmc.executebuiltin("Dialog.Close(busydialog)")
            xbmc.Player().play(url, liz, False)

            if kodi.get_setting("chaturbate_subject") == "true":
                sleeper = kodi.get_setting("chaturbate_subject_refresh")
                i = 0

                while not xbmc.Player().isPlayingVideo():
                    time.sleep(1)
                    i += 1
                    if i == 30: quit()
                while xbmc.Player().isPlayingVideo():
                    try:
                        r = client.request(ref)
                        subject = re.compile('default_subject:\s\"([^,]+)",').findall(r)[0]
                        subject = unquote_plus(subject)
                        kodi.notify(msg=subject, duration=8500, sound=True, icon_path=iconimage)
                    except:
                        pass
                    time.sleep(int(sleeper))
        else:
            liz = xbmcgui.ListItem(name, iconImage=iconimage, thumbnailImage=iconimage)
            xbmc.Player().play(url, liz, False)
    except:
        kodi.idle()
        kodi.notify(msg='Error playing %s' % name)
def find_link(url, name, iconimage, downloadableLink=False):
    xbmc.executebuiltin("ActivateWindow(busydialog)")

    if '|SPLIT|' in url: url = url.split('|SPLIT|')[0]
    if 'site=' in url: url = url.split('site=')[0]
    if '|' in url: url = url.split('|User-Agent')[0]

    c = client.request(url, output='headers')

    checks = ['video', 'mpegurl']
    exts = ['.mp4', '.flv', '.m3u8']

    try:
        if any(f for f in checks if f in c['Content-Type']):
            downloadableLink = True
    except:
        if any(f for f in exts if f in url):
            downloadableLink = True
        else:
            xbmc.executebuiltin("Dialog.Close(busydialog)")
            kodi.notify(msg='Error downloading video.')
            quit()

    name = kodi.stripColor(name)
    if '] -' in name: name = name.split('] -')[1]
    if downloadableLink:
        dest = getDest()
        dest = os.path.join(dest, '%s.mp4' % quote_plus(name))
        download(url, name, iconimage, dest)
    else:
        u = None
        log_utils.log('Sending %s to XXX Resolver' % (url), xbmc.LOGNOTICE)
        if hmf.HostedMediaFile(url).valid_url():
            log_utils.log(
                '%s is a valid SMR resolvable URL. Attempting to resolve.' %
                (url), xbmc.LOGNOTICE)
            try:
                u = hmf.HostedMediaFile(url).resolve()
            except Exception as e:
                log_utils.log(
                    'Error getting valid link from SMR :: %s :: %s' %
                    (url, str(e)), xbmc.LOGERROR)
                kodi.idle()
                kodi.notify(msg='Something went wrong!  | %s' % str(e),
                            duration=8000,
                            sound=True)
                quit()
            log_utils.log('Link returned by XXX Resolver :: %s' % (u),
                          xbmc.LOGNOTICE)
        else:
            log_utils.log(
                '%s is not a valid SMR resolvable link. Attempting to resolve by AdultFlix backup resolver.'
                % (url), xbmc.LOGNOTICE)
            try:
                u = adultresolver.resolve(url)
            except Exception as e:
                log_utils.log(
                    'Error getting valid link from SMR :: %s :: %s' %
                    (url, str(e)), xbmc.LOGERROR)
                kodi.idle()
                kodi.notify(msg='Something went wrong!  | %s' % str(e),
                            duration=8000,
                            sound=True)
                quit()
            log_utils.log('%s returned by AdultFlix backup resolver.' % (u),
                          xbmc.LOGNOTICE)
        if not isinstance(u, str):
            try:
                u = multilinkselector(u)
            except:
                pass
        if u == 'quit':
            xbmc.executebuiltin("Dialog.Close(busydialog)")
            quit()
        if u:
            dest = getDest()
            dest = os.path.join(dest, '%s.tmp_mp4' % quote_plus(name))
            download(u, name, iconimage, dest)
        else:
            xbmc.executebuiltin("Dialog.Close(busydialog)")
            kodi.notify('No Downloadable Link Found.')
            quit()
Exemple #22
0
def resolve_url(url, name=None, iconimage=None, pattern=None):

    kodi.busy()

    try:
        url, site = url.split('|SPLIT|')
    except:
        site = 'Unknown'
        log_utils.log('Error getting site information from :: %s' % (url), xbmc.LOGERROR)

    if not name:
        name = 'Unknown'
    if not iconimage:
        iconimage = kodi.addonicon
    name = re.sub(r'(\[.+?\])', '', name)
    name = name.lstrip()
    if '] - ' in name:
        name = name.split('] - ')[-1]
    if 'site=' in url:
        url, site = url.split('site=')

    if '|CHAT|' in url:
        url, site, name = url.split('|CHAT|')
    if '- [' in name:
        name = name.split('- [')[0]

    u = None
    log_utils.log('Sending %s to XXX Resolver' % (url), xbmc.LOGNOTICE)
    if hmf.HostedMediaFile(url).valid_url():
        log_utils.log('%s is a valid SMR resolvable URL. Attempting to resolve.' % (url), xbmc.LOGNOTICE)
        try:
            u = hmf.HostedMediaFile(url).resolve()
        except Exception as e:
            log_utils.log('Error getting valid link from SMR :: %s :: %s' % (url, str(e)), xbmc.LOGERROR)
            kodi.idle()
            kodi.notify(msg='Something went wrong!  | %s' % str(e), duration=8000, sound=True)
            quit()
        log_utils.log('Link returned by XXX Resolver :: %s' % (u), xbmc.LOGNOTICE)
    else:
        log_utils.log('%s is not a valid SMR resolvable link. Attempting to resolve by AdultFlix backup resolver.' % (url), xbmc.LOGNOTICE)
        try:
            u = adultresolver.resolve(url)
            if u:
                if hmf.HostedMediaFile(u).valid_url():
                    u = hmf.HostedMediaFile(u).resolve()
        except Exception as e:
            log_utils.log('Error getting valid link from SMR :: %s :: %s' % (url, str(e)), xbmc.LOGERROR)
            kodi.idle()
            kodi.notify(msg='Something went wrong!  | %s' % str(e), duration=8000, sound=True)
            quit()
        log_utils.log('%s returned by AdultFlix backup resolver.' % (u), xbmc.LOGNOTICE)
    if u == 'offline':
        kodi.idle()
        kodi.notify(msg='This performer is offline.', duration=5000, sound=True)
        quit()
    if u:
        kodi.idle()
        play(u, name, iconimage, url, site)
    else:
        kodi.idle()
        log_utils.log('Failed to get any playable link for :: %s' % (url), xbmc.LOGERROR)
        kodi.notify(msg='Failed to get any playable link.', duration=7500, sound=True)
        quit()
def setViewCM(viewtype):
    window = xbmcgui.Window(xbmcgui.getCurrentWindowId())
    viewid = str(window.getFocusId())
    xbmcaddon.Addon().setSetting("%s_view" % (viewtype), viewid)
    kodi.notify(kodi.get_name(),
                "%s view has been set to (%s)." % (viewtype.title(), viewid))
Exemple #24
0
def download_media(url, path, file_name, translations, progress=None):
    try:
        if progress is None:
            progress = int(kodi.get_setting('down_progress'))

        i18n = translations.i18n
        active = not progress == PROGRESS.OFF
        background = progress == PROGRESS.BACKGROUND

        with kodi.ProgressDialog(kodi.get_name(),
                                 i18n('downloading') % (file_name),
                                 background=background,
                                 active=active) as pd:
            try:
                headers = dict([
                    item.split('=') for item in (url.split('|')[1]).split('&')
                ])
                for key in headers:
                    headers[key] = unquote(headers[key])
            except:
                headers = {}
            if 'User-Agent' not in headers: headers['User-Agent'] = BROWSER_UA
            request = Request(url.split('|')[0], headers=headers)
            response = urlopen(request)
            if 'Content-Length' in response.info():
                content_length = int(response.info()['Content-Length'])
            else:
                content_length = 0

            file_name += '.' + get_extension(url, response)
            full_path = os.path.join(path, file_name)
            logger.log('Downloading: %s -> %s' % (url, full_path),
                       xbmc.LOGDEBUG)

            path = kodi.translate_path(xbmc.makeLegalFilename(path))
            try:
                try:
                    xbmcvfs.mkdirs(path)
                except:
                    os.makedirs(path)
            except Exception as e:
                logger.log('Path Create Failed: %s (%s)' % (e, path),
                           xbmc.LOGDEBUG)

            if not path.endswith(os.sep): path += os.sep
            if not xbmcvfs.exists(path):
                raise Exception(i18n('failed_create_dir'))

            file_desc = xbmcvfs.File(full_path, 'w')
            total_len = 0
            cancel = False
            while True:
                data = response.read(CHUNK_SIZE)
                if not data:
                    break

                if pd.is_canceled():
                    cancel = True
                    break

                total_len += len(data)
                if not file_desc.write(data):
                    raise Exception(i18n('failed_write_file'))

                percent_progress = total_len * 100 / content_length if content_length > 0 else 0
                logger.log(
                    'Position : %s / %s = %s%%' %
                    (total_len, content_length, percent_progress),
                    xbmc.LOGDEBUG)
                pd.update(percent_progress)

            file_desc.close()

        if not cancel:
            kodi.notify(msg=i18n('download_complete') % (file_name),
                        duration=5000)
            logger.log('Download Complete: %s -> %s' % (url, full_path),
                       xbmc.LOGDEBUG)

    except Exception as e:
        logger.log(
            'Error (%s) during download: %s -> %s' % (str(e), url, file_name),
            xbmc.LOGERROR)
        kodi.notify(msg=i18n('download_error') % (str(e), file_name),
                    duration=5000)