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
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