def parse_thumbs_json(self, fldata: FLData): data = loads(fldata.text) if type(data) == dict: page = data['1'] elif type(data) == list: page = data[0] else: page = None try: items = page['items'] for item in items: href = URL(item['video_link'], base_url=fldata.url) label = item['title_long'] dur_time = item['duration'] thumb_url = URL(item['thumb_url'], base_url=fldata.url) self.add_thumb(thumb_url=thumb_url, href=href, popup=label, labels=[{ 'text': dur_time, 'align': 'top right' }, { 'text': label, 'align': 'bottom center' }]) # create pagination navigation = page['navigation'] last_page = navigation['lastPage'] current = navigation['currentPage'] pattern = navigation['urlPattern'].replace('[%pageId%]', '{0}') for page_no in range(current - 5, current + 5): if page_no == current: continue if page_no < 3: continue if page_no > last_page: continue page_url = URL(fldata.url.any_data['first_page_url'].get()) page_url.any_data = dict(json_file_url=URL( pattern.format(page_no), base_url=fldata.url)) self.add_page(str(page_no), page_url) # add last page page_url = URL(fldata.url.any_data['first_page_url'].get()) page_url.any_data = dict(json_file_url=URL( pattern.format(last_page), base_url=fldata.url)) self.add_page(str(last_page), page_url) except TypeError as err: print(dumps(data, sort_keys=True, indent=4)) print('Error:', err) self.waiting_data = False self.generate_thumb_view()
def _parse_pagination(self, soup: BeautifulSoup, url: URL): container = soup.find('div', {'class': 'pagination-holder'}) if container: for page in _iter(container.find_all('a', {'href': True})): if not page.attrs['href'].startswith('#'): self.add_page(page.string, URL(page.attrs['href'], base_url=url)) else: pair_list=[('mode','async'), ('function','get_block'), ('block_id', page.attrs['data-block-id'])] parameters=page.attrs['data-parameters'].split(';') for item in parameters: key,unused,value=item.partition(':') pair_list.append(tuple([key,value])) xhr_url=URL(url.get()) xhr_url.add_query(pair_list) page_url=URL(url.get()) page_url.any_data=dict(xhr=xhr_url) self.add_page(page.string, page_url)