Exemplo n.º 1
0
def episodios(item):
    support.info()
    itemlist = []
    if type(item.data) in [list, dict] and len(item.data) > 1 and ('name' in item.data[0] and 'stagione' not in item.data[0]['name'].lower()):
        for key in item.data:
            itemlist.append(item.clone(title = support.typo(key['name'], 'bold'), url = getUrl(key['path_id']), contentType = 'tvshow', action = 'episodios'))

    elif type(item.data) in [list, dict]:
        for key in item.data:
            load_episodes(key, item)
        with futures.ThreadPoolExecutor() as executor:
            itlist = [executor.submit(load_episodes, key, item) for key in item.data]
            for res in futures.as_completed(itlist):
                if res.result():
                    itemlist += res.result()
        if itemlist and itemlist[0].VL:
            # itemlist.reverse()
            itemlist = sorted(itemlist, key=lambda it: it.order)
            item.action = 'episodios'
            support.videolibrary(itemlist, item)
        else:
            itemlist = sorted(itemlist, key=lambda it: it.title)

    else:
        date = ''
        if type(item.data) in [list, dict]: item.data = getUrl(item.url[0]['path_id'])
        json = current_session.get(item.url).json()['items']
        for key in json:
            ep = support.match(key['subtitle'], patron=r'(?:St\s*(\d+))?\s*Ep\s*(\d+)').match
            if ep:
                season = '1' if not ep[0] else ep[0]
                episode = ep[1].zfill(2)
                title = support.re.sub(r'(?:St\s*\d+)?\s*Ep\s*\d+','',key['subtitle'])
                title = season + 'x' + episode + (' - ' + title if not title.startswith(' ') else title if title else '')
            elif item.season and support.match(item.title.lower(), patron =r'(puntate)').match:
                title = key['subtitle'].strip()
                if not title: title = key['name']
                date = support.match(title, patron=r'(\d+/\d+/\d+)').match
                if date:
                    date = title.split('/')
                    date = date[2][-2] + '/' + date[1] + '/' + date[0]

            else:
                title = key['subtitle'].strip()
            if not title:
                title = key['name']
            itemlist.append(item.clone(title = support.typo(title, 'bold'), action = 'findvideos', VL=True if ep else False, plot = key['description'],
                                       fanart = getUrl(key['images']['landscape']), url = key['video_url'], contentType = 'episode', date=date))

        if item.season and support.match(item.title.lower(), patron =r'(puntate)').match:
            itemlist = sorted(itemlist, key=lambda it: it.date)
            for i, it in enumerate(itemlist):
                episode = str(i + 1)
                it.title = support.typo(item.season + 'x' + episode, 'bold') + (' - ' + it.title)

        if itemlist and itemlist[0].VL: support.videolibrary(itemlist, item)

    if itemlist and not support.match(itemlist[0].title, patron=r'[Ss]?(\d+)(?:x|_|\.|\s+)[Ee]?[Pp]?(\d+)').match and inspect.stack()[1][3] not in ['find_episodes']:
        autorenumber.start(itemlist, item)
    return itemlist
Exemplo n.º 2
0
def peliculas(item):
    itemlist = []
    if not item.args:
        json_file =loadjs(item.url + 'channel/10005/last/')
        support.logger.debug(json_file)
        make_itemlist(itemlist, item, json_file)

    elif ('=' not in item.args) and ('=' not in item.url):
        json_file=loadjs(item.url + item.args)
        make_itemlist(itemlist, item, json_file)

    elif '=' in item.args:
        json_file = current_session.get(item.url + 'channels', headers=headers, params=payload).json()
        Filter = support.match(item.args, patron=r'\?([^=]+)=').match
        keys = [i[Filter] for i in json_file['data'] if Filter in i][0]
        for key in keys:
            if key not in ['1','2']:
                itemlist.append(
                    item.clone(title = support.typo(key.upper() if Filter == 'filter' else key['name'], 'bold'),
                               url =  item.url + item.args + (key if Filter == 'filter' else str(key['id'])),
                               action = 'peliculas',
                               args = 'filters'))

    else :
        json_file=loadjs(item.url)
        make_itemlist(itemlist, item, json_file)
    if 'category' in item.args:
        support.thumb(itemlist,genre=True)
    elif not 'filter' in item.args:
        if item.contentType != 'movie': autorenumber.start(itemlist)
        tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
    return itemlist
Exemplo n.º 3
0
def peliculas(item):
    logger.debug()

    itemlist = []
    page = item.page if item.page else 0
    js = httptools.downloadpage('{}?page={}&size={}{}&sort={},{}&sort=id'.format(item.url, page, perpage, item.variable, sort, order)).json

    for it in js:
        title, lang = get_lang(it['title'])

        long_title = support.typo(title, 'bold') + support.typo(lang, '_ [] color kod')

        itemlist.append(item.clone(title = long_title,
                                   fulltitle = title,
                                   show = title,
                                   contentLanguage = lang,
                                   contentType = 'movie' if it['type'] == 'Movie' else 'tvshow',
                                   contentTitle = title,
                                   contentSerieName = title if it['type'] == 'Serie' else '',
                                   action ='findvideos' if it['type'] == 'Movie' else 'episodios',# '' if not active else 'findvideos' if it['type'] == 'Movie' else 'episodios',
                                   plot = it['storyline'],
                                #    year = it['startDate'].split('-')[0],
                                   url = '{}/api/anime/{}'.format(host, it['id']),
                                   thumbnail = get_thumbnail(it),
                                   fanart = get_thumbnail(it, 'horizontalImages')))

    autorenumber.start(itemlist)
    tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)

    if len(itemlist) == perpage:
        support.nextPage(itemlist, item.clone(page = page + 1))
    return itemlist
Exemplo n.º 4
0
def episodios(item):
    logger.debug()
    itemlist = []

    # url = '{}/api/anime/{}'.format(host, item.id)
    json = httptools.downloadpage(item.url, CF=False).json

    if type(json) == list:
        item.show_renumber = False
        itemlist = list_episodes(item, json)

    elif json.get('seasons'):
        seasons = json['seasons']
        seasons.sort(key=lambda s: s['episodeStart'])

        for it in seasons:
            title = it['name']

            itemlist.append(
                item.clone(title=title,
                           id='{}/season/{}'.format(it['animeId'], it['id']),
                           contentType='season',
                           action='list_episodes',
                           plot=json['storyline'],
                           year=it['yearStart'],
                           show_renumber=True))

        # If the call come from the videolibrary or autorenumber, shows the episodes
        if stack()[1][3] in [
                'add_tvshow', 'get_episodes', 'update', 'find_episodes'
        ]:
            itlist = []
            with futures.ThreadPoolExecutor() as executor:
                eplist = []
                for ep in itemlist:
                    ep.show_renumber = False
                    eplist.append(executor.submit(list_episodes, ep))
                for res in futures.as_completed(eplist):
                    if res.result():
                        itlist.extend(res.result())
            itemlist = itlist
    elif json.get('episodes'):
        itemlist = list_episodes(item, json)

    # add renumber option
    if stack()[1][3] not in [
            'find_episodes'
    ] and itemlist and itemlist[0].contentType == 'episode':
        autorenumber.start(itemlist, item)

    # add add to videolibrary menu
    if stack()[1][3] not in [
            'add_tvshow', 'get_episodes', 'update', 'find_episodes'
    ]:
        support.videolibrary(itemlist, item)

    return itemlist
Exemplo n.º 5
0
def peliculas(item):
    support.info()
    itemlist = []

    page = item.page if item.page else 0
    item.args['offset'] = page * 30

    order = support.config.get_setting('order', item.channel)
    if order:
        order_list = [ "Standard", "Lista A-Z", "Lista Z-A", "Popolarità", "Valutazione" ]
        item.args['order'] = order_list[order]

    payload = json.dumps(item.args)
    records = requests.post(host + '/archivio/get-animes', headers=headers, data=payload).json()['records']
    # js = []
    # support.info(records)
    # for record in records:
    #     js += record
    for it in records:
        lang = support.match(it['title'], patron=r'\(([It][Tt][Aa])\)').match
        title = support.re.sub(r'\s*\([^\)]+\)', '', it['title'])

        if 'ita' in lang.lower(): language = 'ITA'
        else: language = 'Sub-ITA'

        itm = item.clone(title=support.typo(title,'bold') + support.typo(language,'_ [] color kod') + (support.typo(it['title_eng'],'_ ()') if it['title_eng'] else ''))
        itm.contentLanguage = language
        itm.type = it['type']
        itm.thumbnail = it['imageurl']
        itm.plot = it['plot']

        if it['episodes_count'] == 1:
            itm.contentType = 'movie'
            itm.fulltitle = itm.show = itm.contentTitle = title
            itm.contentSerieName = ''
            itm.action = 'findvideos'
            itm.url = it['episodes'][0]['link']

        else:
            itm.contentType = 'tvshow'
            itm.contentTitle = ''
            itm.fulltitle = itm.show = itm.contentSerieName = title
            itm.action = 'episodios'
            itm.episodes = it['episodes'] if 'episodes' in it else it['link']
            itm.url = item.url

        itemlist.append(itm)

    autorenumber.start(itemlist)
    if len(itemlist) >= 30:
        itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'), thumbnail=support.thumb(), page=page + 1))

    return itemlist
Exemplo n.º 6
0
def episodios(item):
    logger.debug()
    reEp = r'"isEpisodes":[^,]+,"items":(.*?])'
    def load_more(url):
        second_url = host if url.startswith('/') else '' + url.replace('\u002F','/').replace('%5C','/')
        new_data = support.match(host + second_url).data
        match = support.scrapertools.decodeHtmlentities(support.match(new_data, headers=headers, patron=r'"items":([^\]]+])').match.replace('\x01','l').replace('\x02','a'))
        return jsontools.load(match)

    itemlist = []
    page_data = support.match(item.url).data
    seasons = support.match(page_data, patron=r'href="([^"]+)"[^>]+>Stagione\s*\d+').matches
    more = support.match(page_data, patron=r'loadingTitle":[^,]+,"url":"([^"]+)"').match
    data = jsontools.load(support.scrapertools.decodeHtmlentities(support.match(page_data, patron=reEp).match))

    if data:
        if more:
            data += load_more(more)
        if seasons:
            for url in seasons:
                new_data = support.match(host + url).data
                data += jsontools.load(support.scrapertools.decodeHtmlentities(support.match(new_data, patron=reEp).match.replace('\x01','l').replace('\x02','a')))
                match = support.match(new_data, patron=r'loadingTitle":[^,]+,"url":"([^"]+)"').match
                if match and match != load_more:
                    data += load_more(match)

        for it in data:
            if 'text' in it['meta']['header']['title']:
                se = it['meta']['header']['title']['text']
                s = support.match(se, patron=r'S\s*(?P<season>\d+)').match
                e = support.match(se, patron=r'E\s*(?P<episode>\d+)').match
                if not e: e = support.match(it['meta']['subHeader'], patron=r'(\d+)').match
                title = support.typo((s + 'x' if s else 'Episodio ') + e.zfill(2) + ' - ' + it['meta']['subHeader'],'bold')
            else:
                s = e = '0'
                title = support.typo(it['meta']['header']['title'],'bold')
            itemlist.append(
                item.clone(title=title,
                        season=int(s) if s else '',
                        episode=int(e),
                        url=host + it['url'] if it['url'].startswith('/') else it['url'],
                        thumbnail=it['media']['image']['url'],
                        fanart=it['media']['image']['url'],
                        plot=it['meta']['description'],
                        contentType='episode',
                        action='findvideos'))

    itemlist.sort(key=lambda item: (item.season, item.episode))
    if inspect.stack()[1][3] not in ['find_episodes']:
        autorenumber.start(itemlist, item)
    return support.videolibrary(itemlist, item)
Exemplo n.º 7
0
def episodios(item):
    itemlist = []
    json_file = current_session.get(item.url, headers=headers,
                                    params=payload).json()
    for i, block in enumerate(json_file['data']):
        if len(json_file['data']) > 1:
            prepend = str(i + 1) + 'x'
        else:
            prepend = 'Episodio '
        show_id = str(block['show_id'])
        season_id = str(block['season_id'])
        episodes = []
        support.info('SEASON ID= ', season_id)
        for episode in json_file['data']:
            episodes.append(episode['episodes'])
        for episode in episodes:
            for key in episode:
                if 'stagione' in encode(key['title']).lower():
                    season = support.match(encode(key['title']),
                                           patron=r'[Ss]tagione\s*(\d+)').match
                    episode = support.match(
                        encode(key['title']),
                        patron=r'[Ee]pisodio\s*(\d+)').match
                    if season and episode:
                        title = season + 'x' + episode + ' - ' + item.fulltitle
                    make_item = True
                elif int(key['season_id']) == int(season_id):
                    try:
                        title = prepend + key['number'] + ' - ' + key[
                            'title'].encode('utf8')
                    except:
                        title = prepend + key['number'] + ' - ' + key['title']
                    make_item = True
                else:
                    make_item = False
                if make_item == True:
                    if type(title) == tuple: title = title[0]
                    itemlist.append(
                        item.clone(title=title,
                                   url=host + show_id + '/season/' +
                                   str(key['season_id']),
                                   action='findvideos',
                                   video_id=key['video_id']))
    autorenumber.start(itemlist, item)
    if autorenumber.check(item) == True \
        or support.match(itemlist[0].title, patron=r"(\d+x\d+)").match:
        support.videolibrary(itemlist, item)
    return itemlist
Exemplo n.º 8
0
def episodios(item):
    itemlist = []
    if item.episodes:
        episodes = item.episodes
        show_id = item.show_id
        season_id = item.season_id
    else:
        json_file = current_session.get(item.url,
                                        headers=headers,
                                        params=payload).json()['data']
        if len(json_file) > 1:
            for key in json_file:
                itemlist.append(
                    item.clone(title=support.typo(key['name'], 'bold'),
                               show_id=str(key['show_id']),
                               season_id=str(key['season_id']),
                               episodes=key['episodes']))
            return itemlist
        else:
            episodes = json_file[0]['episodes']
            show_id = str(json_file[0]['show_id'])
            season_id = str(json_file[0]['season_id'])

    for episode in episodes:
        try:
            title = 'Episodio ' + episode['number'] + ' - ' + episode[
                'title'].encode('utf8')
        except:
            title = 'Episodio ' + episode['number'] + ' - ' + episode['title']

        if type(title) == tuple: title = title[0]
        itemlist.append(
            item.clone(title=support.typo(title, 'bold'),
                       url=main_host + show_id + '/season/' + str(season_id),
                       action='findvideos',
                       video_id=episode['video_id']))

    if inspect.stack()[1][3] not in ['find_episodes']:
        autorenumber.start(itemlist, item)

    support.videolibrary(itemlist, item)
    return itemlist
Exemplo n.º 9
0
def list_episodes(item, json=None):
    itemlist = []

    if not json:
        url = '{}/api/anime/{}'.format(host, item.id)
        json = httptools.downloadpage(url, CF=False).json

    episodes = json['episodes'] if 'episodes' in json else json
    episodes.sort(key=lambda ep: int(ep['episodeNumber'].split('.')[0]))

    for it in episodes:
        quality = 'Full HD' if it['fullHd'] else 'HD'

        if item.contentSeason:
            episode = '{}x{:02d}'.format(
                item.contentSeason, int(it['episodeNumber'].split('.')[0]))
        else:
            episode = '{:02d}'.format(int(it['episodeNumber'].split('.')[0]))

        title = support.typo('{}. {}'.format(episode, it['title']), 'bold')
        image = get_thumbnail(it, 'episodeImages')

        itemlist.append(
            item.clone(
                title=title,
                id=it['id'],
                url='api/episode/{}'.format(it['id']),
                contentType='episode',
                contentEpisodeNumber=int(it['episodeNumber'].split('.')[0]),
                contentSeason=item.contentSeason if item.contentSeason else '',
                action='findvideos',
                quality=quality,
                thumbnail=image,
                fanart=image))

    # Renumber episodes only if shown in the menu
    if item.show_renumber:
        autorenumber.start(itemlist, item)

    return itemlist
Exemplo n.º 10
0
def episodios(item):
    support.info()
    itemlist = []
    title = 'Parte ' if item.type.lower() == 'movie' else 'Episodio '
    for it in item.episodes:
        itemlist.append(
            support.Item(channel=item.channel,
                         title=support.typo(title + it['number'], 'bold'),
                         episode=it['number'],
                         fulltitle=item.title,
                         show=item.title,
                         contentTitle='',
                         contentSerieName=item.contentSerieName,
                         thumbnail=item.thumbnail,
                         plot=item.plot,
                         action='findvideos',
                         contentType='episode',
                         url=it['link']))

    autorenumber.start(itemlist, item)
    support.videolibrary(itemlist, item)
    support.download(itemlist, item)
    return itemlist
Exemplo n.º 11
0
def episodios(item):
    support.info()
    itemlist = []
    title = 'Parte ' if item.type.lower() == 'movie' else 'Episodio '
    for it in item.episodes:
        itemlist.append(
            item.clone(title=support.typo(title + it['number'], 'bold'),
                       episode=it['number'],
                       fulltitle=item.title,
                       show=item.title,
                       contentTitle='',
                       contentSerieName=item.contentSerieName,
                       thumbnail=item.thumbnail,
                       plot=item.plot,
                       action='findvideos',
                       contentType='episode',
                       scws_id=it.get('scws_id', ''),
                       video_url=it.get('link', '')))

    if inspect.stack()[1][3] not in ['find_episodes']:
        autorenumber.start(itemlist, item)
    support.videolibrary(itemlist, item)
    support.download(itemlist, item)
    return itemlist
Exemplo n.º 12
0
def peliculas(item):
    itemlist = []
    if item.contentType == 'movie':
        Type = 'Movie'
        action = 'findvideos'
    else:
        Type = 'Series'
        action = 'episodios'
    if not item.page: item.page = 1
    pagination_values = [20, 40, 60, 80, 100]
    pagination = pagination_values[support.config.get_setting(
        'pagination', 'paramount')]
    item.url = host + '/api/search?activeTab=' + Type + '&searchFilter=site&pageNumber=0&rowsPerPage=10000'
    data = jsontools.load(support.match(item).data)['response']['items']
    titles = []
    for it in data:
        title = it['meta']['header']['title']
        if title not in titles:
            titles.append(title)
            d = it['meta']['date'].split('/') if it['meta']['date'] else [
                '0000', '00', '00'
            ]
            date = int(d[2] + d[1] + d[0])
            if item.search.lower() in title.lower() \
                and 'stagione' not in it['url'] \
                and 'season' not in it['url'] \
                and title not in ['Serie TV']:
                itemlist.append(
                    item.clone(
                        title=support.typo(title, 'bold'),
                        action=action,
                        fulltitle=title,
                        show=title,
                        contentTitle=title if it['type'] == 'movie' else '',
                        contentSerieName=title
                        if it['type'] != 'movie' else '',
                        plot=it['meta']['description']
                        if 'description' in it['meta'] else '',
                        url=host + it['url'],
                        date=date,
                        thumbnail='https:' + it['media']['image']['url']
                        if 'url' in it['media']['image'] else item.thumbnail))
    itemlist.sort(key=lambda item: item.fulltitle)
    if not item.search:
        itlist = []
        for i, it in enumerate(itemlist):
            if pagination and (item.page -
                               1) * pagination > i and not item.search:
                continue  # pagination
            if pagination and i >= item.page * pagination and not item.search:
                break  # pagination
            itlist.append(it)
        if pagination and len(
                itemlist) >= item.page * pagination and not item.search:
            itlist.append(
                item.clone(channel=item.channel,
                           action='peliculas',
                           title=support.typo(
                               support.config.get_localized_string(30992),
                               'color kod bold'),
                           page=item.page + 1,
                           thumbnail=support.thumb()))
        itemlist = itlist
    autorenumber.start(itemlist)
    return itemlist
Exemplo n.º 13
0
def peliculas(item):
    if not item.page: item.page = 1
    itemlist = []
    if not item.args:
        if not itemlist:
            json_file = loadjs(item.url + 'channel/10005/last/')
            support.logger.debug(json_file)
            make_itemlist(itemlist, item, json_file)

    elif ('=' not in item.args) and ('=' not in item.url):
        json_file = loadjs(item.url + item.args)
        make_itemlist(itemlist, item, json_file)

    elif '=' in item.args:
        json_file = current_session.get(item.url + 'channels',
                                        headers=headers,
                                        params=payload).json()
        Filter = support.match(item.args, patron=r'\?([^=]+)=').match
        keys = [i[Filter] for i in json_file['data'] if Filter in i][0]
        for key in keys:
            if key not in ['1', '2']:
                itemlist.append(
                    item.clone(title=support.typo(
                        key.upper() if Filter == 'filter' else key['name'],
                        'bold'),
                               url=item.url + item.args +
                               (key if Filter == 'filter' else str(key['id'])),
                               action='peliculas',
                               args='filters'))

    else:
        json_file = loadjs(item.url)
        item.args = ''
        make_itemlist(itemlist, item, json_file)

    itlist = []
    if not item.newest:
        for i, it in enumerate(itemlist):
            if pagination and (item.page - 1) * pagination > i:
                continue  # pagination
            if pagination and i >= item.page * pagination: break  # pagination

            itlist.append(it)

        if pagination and len(itemlist) >= pagination:
            if inspect.stack()[1][3] != 'get_newest':
                itlist.append(
                    item.clone(action='peliculas',
                               title=support.typo(
                                   config.get_localized_string(30992),
                                   'color kod bold'),
                               fulltitle=item.fulltitle,
                               show=item.show,
                               url=item.url,
                               args=item.args,
                               page=item.page + 1,
                               thumbnail=support.thumb()))
            itemlist = itlist

    if 'category' in item.args:
        support.thumb(itemlist, genre=True)
    elif not 'filter' in item.args:
        if item.contentType != 'movie': autorenumber.start(itemlist)
        tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
    return itemlist