def get_globo_partial_episodes(program_id, page=1, bingewatch=False):

    videos = []
    headers = {'Accept-Encoding': 'gzip'}
    days = client.request(GLOBOPLAY_DAYS % int(program_id), headers=headers)['days']
    video_page_size = 100
    size_videos = 100
    page_num = 1

    while size_videos >= video_page_size:
        try:
            data = client.request(GLOBOPLAY_VIDEOS % (int(program_id), days[page-1], page_num, size_videos))
            size_videos = len(data['videos'])
            for item in data['videos']:
                video = {
                    'id': item['id'],
                    'title': item['title'],
                    'tvshowtitle': item['program']['title'],
                    'plot': item['description'],
                    'duration': sum(int(x) * 60 ** i for i, x in
                                    enumerate(reversed(item['duration'].split(':')))) if item['duration'] else 0,
                    'date': util.time_format(item['exhibited'], '%Y-%m-%d'),
                    'genre': item['subset'],
                    'thumb': THUMB_URL % item['id'],
                    'fanart': GLOBO_FANART,
                    'mediatype': 'episode'
                }
                videos.append(video)
            page_num += 1
        except:
            break
    page = (page+1 if page < len(days) else None)

    return videos, page, len(days), days if page < len(days) else None
def get_globo_episodes_by_date(program_id, date, bingewatch=False):

    videos = []
    video_page_size = 300

    order = 'asc' if bingewatch else 'desc'

    headers = {'Accept-Encoding': 'gzip'}
    data = client.request(GLOBOPLAY_VIDEOS_RANGE % (int(program_id), date, date, order, video_page_size), headers=headers)

    for item in data['videos']:
        video = {
            'id': item['id'],
            'title': item['title'],
            'tvshowtitle': item['program']['title'],
            'plot': item['description'],
            'duration': sum(int(x) * 60 ** i for i, x in
                            enumerate(reversed(item['duration'].split(':')))) if item['duration'] else 0,
            'date': util.time_format(item['exhibited'], '%Y-%m-%d'),
            'genre': item['subset'],
            'thumb': THUMB_URL % item['id'],
            'fanart': GLOBO_FANART,
            'mediatype': 'episode'
        }

        videos.append(video)

    return videos
示例#3
0
def get_globo_episodes(program_id, page=1):

    videos = []
    video_page_size = 300
    full_calendar_threshold = 15

    days = get_program_dates(program_id)

    page = int(page)

    if page < 1:
        page = 1

    if page > len(days):
        page = len(days)

    if len(days) - page + 1 < full_calendar_threshold:
        sevenDays = len(days)
    else:
        sevenDays = page+6 if len(days) > page+6 else len(days)

    headers = {'Accept-Encoding': 'gzip'}
    data = client.request(GLOBOPLAY_VIDEOS_RANGE % (int(program_id), days[sevenDays-1], days[page-1], video_page_size), headers=headers)

    exerpts = []

    for item in data['videos']:

        video = {
            'id': item['id'],
            'title': item['title'],
            'tvshowtitle': item['program']['title'],
            'plot': item['description'],
            'duration': sum(int(x) * 60 ** i for i, x in
                            enumerate(reversed(item['duration'].split(':')))) if item['duration'] else 0,
            'date': util.time_format(item['exhibited'], '%Y-%m-%d'),
            'genre': item['subset'],
            'thumb': THUMB_URL % item['id'],
            'fanart': GLOBO_FANART,
            'mediatype': 'episode'
        }

        if not item["full_episode"]:
            exerpts.append(video)
            continue

        videos.append(video)

    if len(videos) == 0:
        videos = exerpts

    page = sevenDays+1 if sevenDays+1 < len(days) else None

    return videos, page, len(days), days if sevenDays+1 < len(days) else None