def tv_info(self, tv_names): url = 'http://s.video.qq.com/search?comment=1&plat=2&otype=json&query={}&callback=callback' # noqa info_dir = TV_INFO_FILE_DIR + SAVE_FILE utils.mkdir(info_dir) for name in tv_names: warning_message = u"qq Warning《{}》tv_info ,结果不准确\r\n". \ format(name) page = request(url.format(name.encode('utf8'))) if not tv_info_is_valid_qq(page): utils.log(message=warning_message) continue utils.write(info_dir, name + TV_INFO_FILE_FIX, page.encode('utf8'))
def tv_info(self, tv_names, db_tv_names): info_dir = TV_INFO_FILE_DIR + SAVE_FILE for name in tv_names: page = utils.read(info_dir, name + TV_INFO_FILE_FIX) json_content = tv_info_is_valid_qq(page) if not json_content: continue play_list = get_playlist(json_content) tv_type = play_list['BC'] tv_type = re.search(u'[\u4e00-\u9fa5]+', tv_type).group() description = play_list['TX'] last_update_time = play_list['AT'] update_info = play_list['SS'] tv_id = play_list['ID'] label = play_list['BE'] cast_member = play_list['BM'] cast_member = re.compile(u'<.+?>').sub(u'', cast_member) def get_current_number(play_list): match = re.search('\d+-\d+-\d+', play_list['TT']) current_number = match and match.group() if not current_number: match = re.search('\d+', play_list['TT']) current_number = match and match.group() or '' return current_number current_number = get_current_number(play_list) src_play_list = play_list['src_list']['vsrcarray'][0]['playlist'] all_list = get_all_list(src_play_list) vids, detail_urls, detail_titles, detail_episodes = [], [], [], [] for _ in all_list: vids.append(_['id']) detail_urls.append(_['url']) detail_titles.append(_['title']) detail_episodes.append(_['episode_number']) all_number = len(vids) vids, detail_urls, detail_titles, detail_episodes = \ ",".join(vids), ",".join(detail_urls), \ ",".join(detail_titles), ",".join(detail_episodes) if name in db_tv_names: TvInfo.update(name=name, tv_id=tv_id, description=description, last_update_time=last_update_time, all_number=all_number, current_number=current_number, cast_member=cast_member, platform=PLATFORM, label=label, update_info=update_info, detail_urls=detail_urls, vids=vids, type=tv_type, detail_titles=detail_titles, detail_episodes=detail_episodes, ) else: TvInfo.add(name=name, tv_id=tv_id, description=description, last_update_time=last_update_time, all_number=all_number, current_number=current_number, cast_member=cast_member, platform=PLATFORM, label=label, update_info=update_info, detail_urls=detail_urls, vids=vids, type=tv_type, detail_titles=detail_titles, detail_episodes=detail_episodes, )
def tv_info(self, tv_names, db_tv_names): info_dir = TV_INFO_FILE_DIR + SAVE_FILE for name in tv_names: page = utils.read(info_dir, name + TV_INFO_FILE_FIX) json_content = tv_info_is_valid_qq(page) if not json_content: continue play_list = get_playlist(json_content) tv_type = play_list['BC'] tv_type = re.search(u'[\u4e00-\u9fa5]+', tv_type).group() description = play_list['TX'] last_update_time = play_list['AT'] update_info = play_list['SS'] tv_id = play_list['ID'] label = play_list['BE'] cast_member = play_list['BM'] cast_member = re.compile(u'<.+?>').sub(u'', cast_member) def get_current_number(play_list): match = re.search('\d+-\d+-\d+', play_list['TT']) current_number = match and match.group() if not current_number: match = re.search('\d+', play_list['TT']) current_number = match and match.group() or '' return current_number current_number = get_current_number(play_list) src_play_list = play_list['src_list']['vsrcarray'][0]['playlist'] all_list = get_all_list(src_play_list) vids, detail_urls, detail_titles, detail_episodes = [], [], [], [] for _ in all_list: vids.append(_['id']) detail_urls.append(_['url']) detail_titles.append(_['title']) detail_episodes.append(_['episode_number']) all_number = len(vids) vids, detail_urls, detail_titles, detail_episodes = \ ",".join(vids), ",".join(detail_urls), \ ",".join(detail_titles), ",".join(detail_episodes) if name in db_tv_names: TvInfo.update( name=name, tv_id=tv_id, description=description, last_update_time=last_update_time, all_number=all_number, current_number=current_number, cast_member=cast_member, platform=PLATFORM, label=label, update_info=update_info, detail_urls=detail_urls, vids=vids, type=tv_type, detail_titles=detail_titles, detail_episodes=detail_episodes, ) else: TvInfo.add( name=name, tv_id=tv_id, description=description, last_update_time=last_update_time, all_number=all_number, current_number=current_number, cast_member=cast_member, platform=PLATFORM, label=label, update_info=update_info, detail_urls=detail_urls, vids=vids, type=tv_type, detail_titles=detail_titles, detail_episodes=detail_episodes, )