def explore(tag, country, page): if bangumi_list == None: url = 'http://bangumi.bilibili.com/jsonp/timeline_v2?appkey=' + appkey moonplayer.download_page(url, explore_cb, tag) else: result = bangumi_list[tags.index(tag)] moonplayer.res_show(result)
def parse(url, options): origin_url = url url = 'http://www.flvcd.com/parse.php?go=1&kw=' + origin_url if options & moonplayer.OPT_QL_SUPER: url += '&format=super' elif options & moonplayer.OPT_QL_HIGH: url += '&format=high' moonplayer.download_page(url, parse_cb, (options, origin_url))
def explore(tag, country, page): tag_id = tags_table[tag] country_id = countries_table[country] url = "http://so.tv.sohu.com/list_p1101_p2%s_p3%s_p40_p5_p6_p77_p80_p9_2d1_p10%i_p11_p12_p13.html" % ( tag_id, country_id, page, ) moonplayer.download_page(url, explore_cb, None)
def load_youku_item_url_cb(page, data): match = yk_item_url_re.search(page) if match: url = match.group(1) if url.startswith('//'): url = 'http:' + url moonplayer.download_page(url, load_youku_item_cb, None) else: moonplayer.warn('Parse failed!')
def explore(tag, country, page): tag_id = tags_table[tag] country_id = countries_table[country] if page == 1: url = 'http://api.tv.sohu.com/v6/mobile/classificationScreening/list.json?sub_channel_id=1010000&cid=2&cursor=0&page_size=10&ugc=1&plat=12&sver=3.7.0&partner=419&api_key=%s&o=1&cat=%s&area=%s&year=' % \ (sohu_apikey, tag_id, country_id) else: url = '%soffset=%i&page_size=20&ugc=1&plat=12&sver=3.7.0&partner=419&api_key=%s' % ( sohu_more_list, sohu_offset + (page - 2) * 20, sohu_apikey) moonplayer.download_page(url, explore_cb, None)
def load_item(url): if url.startswith('bilibili://bangumi/season/'): season = url.replace('bilibili://bangumi/season/', '') elif url.startswith('/bangumi/i/'): season = url.replace('/bangumi/i/', '') if season.endswith('/'): season = season[:-1] long_epoch = int(time.time() * 1000) url = 'http://bangumi.bilibili.com/jsonp/seasoninfo/%s.ver?callback=seasonListCallback&jsonp=jsonp&_=%i' % (season, long_epoch) moonplayer.download_page(url, load_item_cb, None)
def parse_cb(page, data): (options, url) = data result = parse_flvcd_page(page, None) if 'play#' in url: post_data = 'episode_id=' + url.split('#')[-1] api_url = 'http://bangumi.bilibili.com/web_api/get_source' moonplayer.post_content(api_url, post_data, parse_danmaku_cb, (options, result, url)) else: moonplayer.download_page(url, parse_danmaku_cb, (options, result, url))
def load_item(url): if url.startswith('bilibili://bangumi/season/'): season = url.replace('bilibili://bangumi/season/', '') elif url.startswith('/bangumi/i/'): season = url.replace('/bangumi/i/', '') elif '/anime/' in url: season = url.split('/anime/')[1] else: moonplayer.warn('Bilibili: Cannot open url:' + url) return if season.endswith('/'): season = season[:-1] url = 'https://www.bilibili.com/bangumi/play/ss' + season moonplayer.download_page(url, load_item_cb, None)
def parse_keys(self, content, options): root = ET.fromstring(content) i = len(self.result) / 2 self.result.append('%s_%i.f4v' % (self.name, i)) self.result.append(root.text) i += 1 if i < len(self.keys): url = 'http://v2.tudou.com/f?id=' + self.keys[i] moonplayer.download_page(url, self.parse_keys, options) elif options & moonplayer.OPT_DOWNLOAD: if len(self.result) == 2: moonplayer.download(self.result) else: moonplayer.download(self.result, self.name + '.f4v') else: moonplayer.play(self.result)
def parse_cb(self, page, options): #page = content.decode('GBK').encode('UTF-8') page = convert_to_utf8(page) name_match = name_re.search(page) if not name_match: moonplayer.warn('Cannot get video name.') return self.name = name_match.group(1) if options & moonplayer.OPT_QL_1080P: i = 6 if options & moonplayer.OPT_QL_SUPER: i = 5 elif options & moonplayer.OPT_QL_HIGH: i = 3 else: i = 2 vlist = [None] * 7 iid_match = iid_re.search(page) vcode_match = vcode_re.search(page) # Link to youku if vcode_match and not iid_match: url = 'http://v.youku.com/v_show/id_%s.html' % vcode_match.group(1) flvcd_parser.parse(url, options) return while iid_match: (pt, k) = iid_match.group(1, 2) pt = int(pt) if pt == 99: # Real quality pt = 6 if pt <= 6: if vlist[pt] == None: vlist[pt] = [] vlist[pt].append(k) iid_match = iid_re.search(page, iid_match.end(0)) while i >= 0: if vlist[i]: self.keys = vlist[i] self.result = [] url = 'http://v2.tudou.com/f?id=' + self.keys[0] moonplayer.download_page(url, self.parse_keys, options) return i -= 1 moonplayer.warn('Fail!')
def search(key, page): global pageTokens qs = { 'q': key, 'maxResults': 25, 'safeSearch': 'none', 'part': 'id,snippet', 'type': 'video', 'key': appkey } if page == 1: pageTokens = ['', ''] elif page < len(pageTokens): qs['pageToken'] = pageTokens[page] else: moonplayer.warn("Cannot skip page due to the limitation of Youtube's API.") return url = 'https://www.googleapis.com/youtube/v3/search?' + urlencode(qs) moonplayer.download_page(url, search_cb, page)
def load_youku_item_cb(page, data): result = {} match = yk_img_name_re.search(page) if match: image, name = match.group(1, 2) result['image'] = image result['name'] = name match = yk_summary_re.search(page) if match: result['summary'] = match.group(1) match = yk_rating_re.search(page) if match: result['rating'] = float(match.group(1)) match = yk_showid_re.search(page) if match: iid = match.group(1) result['iid'] = iid list_url = 'http://list.youku.com/show/module?tab=showInfo&callback=excited&id=' + iid moonplayer.download_page(list_url, load_youku_item_cb2, result) else: moonplayer.warn('[Youku-Detail] Cannot get the show_id!')
def load_item(aid): info = sohu_cached_info[aid] result = { 'name': info['album_name'], 'summary': info['album_desc'] if 'album_desc' in info else info['desc'] if 'desc' in info else '', 'rating': info['score'] if 'score' in info else '', 'image': info['ver_high_pic'], 'nations': info['area'].split(',') if 'area' in info else '', 'directors': info['director'].split(',') if 'director' in info else '', 'players': info['main_actor'].split(',') if 'main_actor' in info else '' } url = 'http://s1.api.tv.itc.cn/v4/album/videos/%s.json?page=1&page_size=500&site=1&plat=12&sver=3.7.0&partner=419&api_key=%s' % ( aid, sohu_apikey) moonplayer.download_page(url, load_item_cb, result)
def parse_cb(page, data): options = data[0] url = data[1] match = cantonese_re.search(page) if match and not '_lang=1' in moonplayer.final_url: if moonplayer.question('是否解析为粤语版?'): url = match.group(1) if not url.startswith('http://'): url = 'http://www.flvcd.com/' + url url += '&go=1' moonplayer.download_page(url, parse_cb, data) return result = parse_flvcd_page(page, None) if len(result) == 0: moonplayer.use_fallback_parser(url, options & moonplayer.OPT_DOWNLOAD) elif options & moonplayer.OPT_DOWNLOAD: if len(result) == 2: moonplayer.download(result) else: moonplayer.download(result, result[0]) else: moonplayer.play(result)
def load_item(url): if url.startswith('http://v.youku.com/v_show/'): moonplayer.download_page(url, load_youku_item_url_cb, None) elif url.startswith('http://'): moonplayer.download_page(url, load_youku_item_cb, None) else: url = 'http://www.soku.com' + url moonplayer.download_page(url, load_item_cb, url)
def explore(tag, country, page): url = 'http://list.youku.com/category/show/c_97_g_%s_a_%s_s_1_d_2_p_%i.html' % ( tag, country, page) moonplayer.download_page(url, explore_cb, None)
def parse_childlist(url): moonplayer.download_page(url, load_youku_item_cb2, {})
def explore(tag, country, page): tag_id = tags_table[tag] country_id = countries_table[country] url = 'http://www.soku.com/channel/movielist_0_%i_%i_1_%i.html' % \ (tag_id, country_id, page) moonplayer.download_page(url, explore_cb, None)
def search(key, page): url = 'http://www.soku.com/v?keyword=' + key moonplayer.download_page(url, search_cb, None)
def parse_cb(page, data): options, url = data result = parse_flvcd_page(page, None) moonplayer.download_page(url, parse_danmaku_cb, (options, result, url))
def search(key, page): url = 'http://app.bilibili.com/x/v2/search/type?pn=1&ps=20&type=1&build=10110100&keyword=' + key moonplayer.download_page(url, search_cb, None)
def load_item(url): moonplayer.download_page(url, load_item_cb, None)
def feed(self, url, options): moonplayer.download_page(url, self.parse_cb, options)
def search(keyword, page): keyword = keyword.replace(' ', '+') url = 'http://www.soku.com/search_video_ajax/q_%s_orderby_1_limitdate_0?site=14&page=%i' % ( keyword, page) moonplayer.download_page(url, search_cb, None)
def search(key, page): key = key.replace(' ', '+') url = 'http://m.so.tv.sohu.com/search/keyword?key=%s&page=%i&page_size=30&pay=1&pgc=1&plat=12&sver=3.7.0&partner=419&api_key=%s' % ( key, page, sohu_apikey) moonplayer.download_page(url, search_cb, None)
def explore(tag, region, page): url = 'https://list.youku.com/category/page?c=96&a=%s&g=%s&type=show&p=%i' % (region, tag, page) moonplayer.download_page(url, explore_cb, None)
def load_item(url): url = 'http://www.soku.com' + url moonplayer.download_page(url, load_item_cb, url)
def search(keyword, page): url = 'http://www.soku.com/v?keyword=%s&type=0&ext=2&noqc=&curpage=%i' % ( keyword, page) moonplayer.download_page(url, search_cb, None)
def search(key, page): url = "http://so.tv.sohu.com/mts?box=1&wd=" + key moonplayer.download_page(url, search_cb, None)