diff --git a/py/plugin/py_kunyu77.json b/py/plugin/py_kunyu77.json
new file mode 100644
index 0000000..abbedc7
--- /dev/null
+++ b/py/plugin/py_kunyu77.json
@@ -0,0 +1,175 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+
+class Spider(Spider):
+ def getName(self):
+ return "77"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def homeContent(self,filter):
+ result = {}
+ url = 'http://api.kunyu77.com/api.php/provide/filter'
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ classes = []
+ jData = jo['data']
+ for cKey in jData.keys():
+ classes.append({
+ 'type_name':jData[cKey][0]['cat'],
+ 'type_id':cKey
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ url = 'http://api.kunyu77.com/api.php/provide/homeBlock?type_id=0'
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ blockList = jo['data']['blocks']
+ videos = []
+ for block in blockList:
+ vodList = block['contents']
+ for vod in vodList:
+ videos.append({
+ "vod_id":vod['id'],
+ "vod_name":vod['title'],
+ "vod_pic":vod['videoCover'],
+ "vod_remarks":vod['msg']
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if 'type_id' not in extend.keys():
+ extend['type_id'] = tid
+ extend['pagenum'] = pg
+ filterParams = ["type_id", "pagenum"]
+ params = ["", ""]
+ for idx in range(len(filterParams)):
+ fp = filterParams[idx]
+ if fp in extend.keys():
+ params[idx] = '&'+filterParams[idx]+'='+extend[fp]
+ suffix = ''.join(params)
+ url = 'http://api.kunyu77.com/api.php/provide/searchFilter?pagesize=24{0}'.format(suffix)
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ vodList = jo['data']['result']
+ videos = []
+ for vod in vodList:
+ videos.append({
+ "vod_id":vod['id'],
+ "vod_name":vod['title'],
+ "vod_pic":vod['videoCover'],
+ "vod_remarks":vod['msg']
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def detailContent(self,array):
+ tid = array[0]
+ url = 'http://api.kunyu77.com/api.php/provide/videoDetail?devid=453CA5D864457C7DB4D0EAA93DE96E66&package=com.sevenVideo.app.android&version=1.8.7&ids={0}'.format(tid)
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ node = jo['data']
+ vod = {
+ "vod_id":node['id'],
+ "vod_name":node['videoName'],
+ "vod_pic":node['videoCover'],
+ "type_name":node['subCategory'],
+ "vod_year":node['year'],
+ "vod_area":node['area'],
+ "vod_remarks":node['msg'],
+ "vod_actor":node['actor'],
+ "vod_director":node['director'],
+ "vod_content":node['brief'].strip()
+ }
+ listUrl = 'http://api.kunyu77.com/api.php/provide/videoPlaylist?devid=453CA5D864457C7DB4D0EAA93DE96E66&package=com.sevenVideo.app.android&version=1.8.7&ids={0}'.format(tid)
+ listRsp = self.fetch(listUrl,headers=self.header)
+ listJo = json.loads(listRsp.text)
+ playMap = {}
+ episodes = listJo['data']['episodes']
+ for ep in episodes:
+ playurls = ep['playurls']
+ for playurl in playurls:
+ source = playurl['playfrom']
+ if source not in playMap.keys():
+ playMap[source] = []
+ playMap[source].append(playurl['title'].strip() + '$' + playurl['playurl'])
+
+ playFrom = []
+ playList = []
+ for key in playMap.keys():
+ playFrom.append(key)
+ playList.append('#'.join(playMap[key]))
+
+ vod_play_from = '$$$'
+ vod_play_from = vod_play_from.join(playFrom)
+ vod_play_url = '$$$'
+ vod_play_url = vod_play_url.join(playList)
+ vod['vod_play_from'] = vod_play_from
+ vod['vod_play_url'] = vod_play_url
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+
+ def searchContent(self,key,quick):
+ url = 'http://api.kunyu77.com/api.php/provide/searchVideo?searchName={0}'.format(key)
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ vodList = jo['data']
+ videos = []
+ for vod in vodList:
+ videos.append({
+ "vod_id":vod['id'],
+ "vod_name":vod['videoName'],
+ "vod_pic":vod['videoCover'],
+ "vod_remarks":vod['msg']
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {
+ "User-Agent":"Dalvik/2.1.0"
+ }
+ def playerContent(self,flag,id,vipFlags):
+ result = {}
+ url = 'http://api.kunyu77.com/api.php/provide/parserUrl?url={0}'.format(id)
+ jo = self.fetch(url,headers=self.header).json()
+ result = {
+ 'parse':0,
+ 'jx':0,
+ 'playUrl':'',
+ 'url':id,
+ 'header':''
+ }
+ if flag in vipFlags:
+ result['parse'] = 1
+ result['jx'] = 1
+ return result
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_lezhutv.json b/py/plugin/py_lezhutv.json
new file mode 100644
index 0000000..dff72e0
--- /dev/null
+++ b/py/plugin/py_lezhutv.json
@@ -0,0 +1,238 @@
+# coding=utf-8
+# !/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import base64
+import hashlib
+
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "LeZhuTV"
+
+ def init(self, extend=""):
+ print("============{0}============".format(extend))
+ pass
+
+ def homeContent(self, filter):
+ result = {}
+ cateManual = {
+ "电影": "1",
+ "连续剧": "2",
+ "动漫": "4",
+ "综艺": "3",
+ "韩剧": "14",
+ "美剧": "15"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name': k,
+ 'type_id': cateManual[k]
+ })
+
+ result['class'] = classes
+ if (filter):
+ result['filters'] = self.config['filter']
+ return result
+
+ def homeVideoContent(self):
+ rsp = self.fetch("http://www.lezhutv.com")
+ root = self.html(rsp.text)
+ aList = root.xpath("//ul[@class='tbox_m2']/li")
+ videos = []
+ for a in aList:
+ name = a.xpath('.//@title')[0]
+ pic = a.xpath('.//@data-original')[0]
+ mark = a.xpath(".//span/text()")[0]
+ sid = a.xpath(".//@href")[0]
+ sid = self.regStr(sid, "/detail/(\\d+).html")
+ videos.append({
+ "vod_id": sid,
+ "vod_name": name,
+ "vod_pic": pic,
+ "vod_remarks": mark
+ })
+ result = {
+ 'list': videos
+ }
+ return result
+
+ def categoryContent(self, tid, pg, filter, extend):
+ result = {}
+
+ ext = extend.get("by","")
+ url = 'http://www.lezhutv.com/list/{0}_{1}_desc_{2}_0_0___.html'.format(tid,pg,ext)
+ rsp = self.fetch(url)
+ root = self.html(rsp.text)
+ aList = root.xpath("//ul[@class='tbox_m2']/li")
+ videos = []
+ for a in aList:
+ name = a.xpath('.//@title')[0]
+ pic = a.xpath('.//@data-original')[0]
+ mark = a.xpath(".//span/text()")[0]
+ sid = a.xpath(".//@href")[0]
+ sid = self.regStr(sid, "/detail/(\\d+).html")
+ videos.append({
+ "vod_id": sid,
+ "vod_name": name,
+ "vod_pic": pic,
+ "vod_remarks": mark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def detailContent(self, array):
+ tid = array[0]
+ url = 'http://www.lezhutv.com/detail/{0}.html'.format(tid)
+ rsp = self.fetch(url)
+ root = self.html(rsp.text)
+ node = root.xpath(".//div[@class='dbox']")[0]
+ nodes = root.xpath(".//div[@class='tbox2']")[0]
+ pic = node.xpath(".//div/@data-original")[0]
+ title = node.xpath('.//h4/text()')[0]
+ detail = nodes.xpath(".//div[@class='tbox_js']/text()")[0]
+ yac = node.xpath(".//p[@class='yac']/text()")[0]
+ yac = yac.split('/')
+ yacs = yac[0].strip()
+ type_name = yac[1].strip()
+ actor = node.xpath(".//p[@class='act']/text()")[0]
+ director = node.xpath(".//p[@class='dir']/text()")[0]
+
+ vod = {
+ "vod_id": tid,
+ "vod_name": title,
+ "vod_pic": pic,
+ "type_name": type_name,
+ "vod_year": yacs,
+ "vod_area": "",
+ "vod_remarks": "",
+ "vod_actor": actor,
+ "vod_director": director,
+ "vod_content": detail
+ }
+
+ vod_play_from = '$$$'
+ playFrom = []
+ vodHeader = root.xpath(".//div[@class='tbox2 tabs']/div/h3/text()")
+ i=1
+ for v in vodHeader:
+ playFrom.append("线路" + str(i))
+ i = i+1
+ vod_play_from = vod_play_from.join(playFrom)
+ vod_play_url = '$$$'
+ playList = []
+ vodList = root.xpath("//div[@class='tbox2 tabs']")
+
+ for vl in vodList:
+ vodItems = []
+ aList = vl.xpath(".//ul/li/a")
+ for tA in aList:
+ href = tA.xpath('./@href')[0]
+ name = tA.xpath('./text()')[0]
+ tId = self.regStr(href, '/play/(\\S+).html')
+ vodItems.append(name + "$" + tId)
+ joinStr = '#'
+ joinStr = joinStr.join(vodItems)
+ playList.append(joinStr)
+ vod_play_url = vod_play_url.join(playList)
+ vod['vod_play_from'] = vod_play_from
+ vod['vod_play_url'] = vod_play_url
+
+ result = {
+ 'list': [
+ vod
+ ]
+ }
+ return result
+
+ def searchContent(self, key, quick):
+ url = 'http://www.lezhutv.com/search-pg-1-wd-{0}.html'.format(key)
+ rsp = self.fetch(url)
+ root = self.html(rsp.text)
+ seaArray = root.xpath("//ul[@class='tbox_m']/li")
+ seaList = []
+ for vod in seaArray:
+ name = vod.xpath('.//@title')[0]
+ pic = vod.xpath('.//@data-original')[0]
+ mark = vod.xpath(".//span/text()")[0]
+ sid = vod.xpath(".//@href")[0]
+ sid = self.regStr(sid, "/detail/(\\d+).html")
+ seaList.append({
+ "vod_id": sid,
+ "vod_name": name,
+ "vod_pic": pic,
+ "vod_remarks": mark
+ })
+ result = {
+ 'list': seaList
+ }
+ return result
+
+ config = {
+ "player":{},
+ "filter":{"1":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"score"},{"n":"评分","v":"hits"}]}],"2":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"score"},{"n":"评分","v":"hits"}]}],"3":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"score"},{"n":"评分","v":"hits"}]}],"4":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"score"},{"n":"评分","v":"hits"}]}],"14":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"score"},{"n":"评分","v":"hits"}]}],"15":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"score"},{"n":"评分","v":"hits"}]}]}
+ }
+ header = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
+ }
+
+ def get_md5(self,value):
+ b64 = base64.b64encode((base64.b64encode(value.encode()).decode() + "NTY2").encode()).decode()
+ md5 = hashlib.md5(b64.encode()).hexdigest()
+ return "".join(char if char.isdigit() else "zyxwvutsrqponmlkjihgfedcba"["abcdefghijklmnopqrstuvwxyz".find(char)] for char in md5)
+
+ def playerContent(self, flag, id, vipFlags):
+ result = {}
+ url = 'http://www.lezhutv.com/play/{0}.html'.format(id)
+ rsp = self.fetch(url)
+ root = self.html(rsp.text)
+ scripts = root.xpath("//script/text()")
+ scripts = scripts[1].replace('\n', '')
+ nid = self.regStr(scripts, 'view_path = \'(.*?)\';')
+
+ md5url = 'http://www.lezhutv.com/hls2/index.php?url={0}'.format(nid)
+ rsp = self.fetch(md5url)
+ root = self.html(rsp.text)
+ value = root.xpath(".//input[@id='hdMd5']/@value")
+ value = ''.join(value)
+ md5s = self.get_md5(str(value))
+ data = {
+ "id": nid,
+ "type": "vid",
+ "siteuser": "",
+ "md5": md5s,
+ "referer": url,
+ "hd": "",
+ "lg": ""
+ }
+ payUrl = 'http://www.lezhutv.com/hls2/url.php'
+ parseRsp = self.post(payUrl,data,headers=self.header)
+ parseRsps = json.loads(parseRsp.text)
+ realUrl = parseRsps['media']['url']
+ if len(realUrl) > 0:
+ result["parse"] = 0
+ result["playUrl"] = ""
+ result["url"] = realUrl
+ result["header"] = ""
+ else:
+ result["parse"] = 1
+ result["playUrl"] = ""
+ result["url"] = url
+ result["header"] = json.dumps(self.header)
+ return result
+
+ def isVideoFormat(self, url):
+ pass
+
+ def manualVideoCheck(self):
+ pass
+
+ def localProxy(self, param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_libvio.json b/py/plugin/py_libvio.json
new file mode 100644
index 0000000..6d07b8b
--- /dev/null
+++ b/py/plugin/py_libvio.json
@@ -0,0 +1,234 @@
+# coding=utf-8
+# !/usr/bin/python
+import sys
+
+sys.path.append('..')
+from base.spider import Spider
+import json
+
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "Libvio"
+
+ def init(self, extend=""):
+ print("============{0}============".format(extend))
+ pass
+
+ def homeContent(self, filter):
+ result = {}
+ cateManual = {
+ "电影": "1",
+ "剧集": "2",
+ "动漫": "4",
+ "即将上线": "27",
+ "日韩剧": "15",
+ "欧美剧": "16"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name': k,
+ 'type_id': cateManual[k]
+ })
+
+ result['class'] = classes
+ if (filter):
+ result['filters'] = self.config['filter']
+ return result
+
+ def homeVideoContent(self):
+ rsp = self.fetch("https://www.libvio.me")
+ root = self.html(self.cleanText(rsp.text))
+ aList = root.xpath("//div[@class='stui-pannel__bd']/ul/li/div/a")
+
+ videos = []
+ for a in aList:
+ name = a.xpath('./@title')[0]
+ pic = a.xpath('./@data-original')[0]
+ mark = a.xpath("./span[2]/text()")[0]
+ sid = a.xpath("./@href")[0]
+ sid = self.regStr(sid, "/detail/(\\d+).html")
+ videos.append({
+ "vod_id": sid,
+ "vod_name": name,
+ "vod_pic": pic,
+ "vod_remarks": mark
+ })
+ result = {
+ 'list': videos
+ }
+ return result
+
+ def categoryContent(self, tid, pg, filter, extend):
+ result = {}
+
+ urlParams = ["", "", "", "", "", "", "", "", "", "", "", ""]
+ urlParams[0] = tid
+ urlParams[8] = pg
+ for key in extend:
+ urlParams[int(key)] = extend[key]
+ params = '-'.join(urlParams)
+ url = 'https://www.libvio.me/show/{0}.html'.format(params)
+ print(url)
+ rsp = self.fetch(url)
+ root = self.html(self.cleanText(rsp.text))
+ aList = root.xpath("//div[@class='stui-pannel__bd clearfix']/ul/li/div/a")
+ videos = []
+ for a in aList:
+ name = a.xpath('./@title')[0]
+ pic = a.xpath('./@data-original')[0]
+ mark = a.xpath("./span[2]/text()")[0]
+ sid = a.xpath("./@href")[0]
+ sid = self.regStr(sid, "/detail/(\\d+).html")
+ videos.append({
+ "vod_id": sid,
+ "vod_name": name,
+ "vod_pic": pic,
+ "vod_remarks": mark
+ })
+
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def detailContent(self, array):
+ tid = array[0]
+ url = 'https://www.libvio.me/detail/{0}.html'.format(tid)
+ rsp = self.fetch(url)
+ root = self.html(self.cleanText(rsp.text))
+ node = root.xpath("//div[@class='stui-pannel__bd']")[0]
+ pic = node.xpath(".//img/@data-original")[0]
+ title = node.xpath('.//h1/text()')[0]
+ detail = node.xpath(".//span[@class='detail-content']/text()")[0]
+ douban = node.xpath(".//span[@class='douban']/text()")[0]
+
+ vod = {
+ "vod_id": tid,
+ "vod_name": title,
+ "vod_pic": pic,
+ "type_name": "",
+ "vod_year": "",
+ "vod_area": "",
+ "vod_remarks": "",
+ "vod_actor": "",
+ "vod_director": "",
+ "vod_douban_score": format(douban.rstrip("分")),
+ "vod_content": detail
+ }
+
+ infoArray = node.xpath(".//div[@class='stui-content__detail']/p")
+ for info in infoArray:
+ content = info.xpath('string(.)')
+ if content.startswith('类型'):
+ vod['type_name'] = content
+ if content.startswith('主演'):
+ vod['vod_actor'] = content.replace('\n', '').replace('\t', '')
+ if content.startswith('导演'):
+ vod['vod_director'] = content.replace('\n', '').replace('\t', '')
+
+ vod_play_from = '$$$'
+ playFrom = []
+ vodHeader = root.xpath("//div[@class='stui-pannel__head clearfix']/h3/text()")
+ for v in vodHeader:
+ playFrom.append(v)
+ vod_play_from = vod_play_from.join(playFrom)
+
+ vod_play_url = '$$$'
+ playList = []
+ vodList = root.xpath("//div[@class='stui-vodlist__head']")
+ for vl in vodList:
+ vodItems = []
+ aList = vl.xpath('./ul/li/a')
+ for tA in aList:
+ href = tA.xpath('./@href')[0]
+ name = tA.xpath('./text()')[0]
+ tId = self.regStr(href, '/play/(\\S+).html')
+ vodItems.append(name + "$" + tId)
+ joinStr = '#'
+ joinStr = joinStr.join(vodItems)
+ playList.append(joinStr)
+ vod_play_url = vod_play_url.join(playList)
+
+ vod['vod_play_from'] = vod_play_from
+ vod['vod_play_url'] = vod_play_url
+
+ result = {
+ 'list': [
+ vod
+ ]
+ }
+ return result
+
+ def searchContent(self, key, quick):
+ url = 'https://www.libvio.me/index.php/ajax/suggest?mid=1&wd={0}'.format(key)
+ # getHeader()
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ result = {}
+ jArray = []
+ if jo['total'] > 0:
+ for j in jo['list']:
+ jArray.append({
+ "vod_id": j['id'],
+ "vod_name": j['name'],
+ "vod_pic": j['pic'],
+ "vod_remarks": ""
+ })
+ result = {
+ 'list': jArray
+ }
+ return result
+
+ config = {
+ "player":{"LINE405":{"show":"LINE405","des":"更多极速线路请访问APP","ps":"0","parse":""},"duoduozy":{"show":"LINE100","des":"","ps":"0","parse":""},"LINE407":{"show":"LINE400","des":"","ps":"0","parse":""},"LINE408":{"show":"LINE408","des":"","ps":"0","parse":""},"p300":{"show":"LINE300","des":"","ps":"0","parse":""},"p301":{"show":"LINE301","des":"","ps":"0","parse":""},"line402-日语":{"show":"LINE402","des":"","ps":"0","parse":""},"LINE400":{"show":"LINE400","des":"","ps":"0","parse":""},"line401":{"show":"LINE401","des":"","ps":"0","parse":""},"iframe268":{"show":"LINE268","des":"","ps":"0","parse":""},"iframe290":{"show":"LINE290","des":"","ps":"0","parse":""},"iframe291":{"show":"LINE291","des":"","ps":"0","parse":""},"iframe296":{"show":"LINE296","des":"","ps":"0","parse":""},"iframe297":{"show":"LINE297","des":"","ps":"0","parse":""},"iframe307":{"show":"LINE307","des":"","ps":"0","parse":""},"iframe308":{"show":"LINE308","des":"","ps":"0","parse":""},"iframe309":{"show":"LINE309","des":"","ps":"0","parse":""},"line301":{"show":"LINE333","des":"","ps":"0","parse":""},"line302":{"show":"LINE302","des":"","ps":"0","parse":""},"LINE409":{"show":"LINE409","des":"","ps":"0","parse":""},"banquan":{"show":"已下架","des":"","ps":"0","parse":""},"iframe261":{"show":"LINE261","des":"","ps":"0","parse":""},"iframe265":{"show":"LINE265","des":"","ps":"0","parse":""},"iframe278":{"show":"LINE278","des":"","ps":"0","parse":""},"iframe306":{"show":"LINE306","des":"","ps":"0","parse":""},"iframe317":{"show":"LINE317","des":"","ps":"0","parse":""},"iframe257":{"show":"LINE257","des":"","ps":"0","parse":""},"iframe263":{"show":"LINE263","des":"","ps":"0","parse":""},"iframe258":{"show":"LINE258","des":"","ps":"0","parse":""},"iframe267":{"show":"LINE267","des":"","ps":"0","parse":""},"iframe":{"show":"LINE200","des":"","ps":"0","parse":""},"iframe262":{"show":"LINE262","des":"","ps":"0","parse":""},"iframe266":{"show":"LINE266","des":"","ps":"0","parse":""},"LINE406":{"show":"LINE406","des":"","ps":"0","parse":""},"dplayer3":{"show":"播放线路3","des":"","ps":"0","parse":""}},
+ "filter":{"1":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"2":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"台湾","v":"中国台湾"},{"n":"香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"中国"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"6":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"7":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"8":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"9":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"10":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"11":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"12":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"13":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"惊悚","v":"惊悚"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"14":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"15":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"惊悚","v":"惊悚"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"16":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"美国","v":"美国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}]}
+ }
+ header = {
+ "Referer": "https://www.libvio.me",
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
+ }
+
+ def playerContent(self, flag, id, vipFlags):
+ result = {}
+ url = 'https://www.libvio.me/play/{0}.html'.format(id)
+ rsp = self.fetch(url)
+ root = self.html(self.cleanText(rsp.text))
+ scripts = root.xpath("//script/text()")
+ jo = {}
+ for script in scripts:
+ if (script.startswith("var player_")):
+ target = script[script.index('{'):]
+ jo = json.loads(target)
+ break;
+ nid = str(jo['nid'])
+ scriptUrl = 'https://www.libvio.me/static/player/{0}.js'.format(jo['from'])
+ scriptRsp = self.fetch(scriptUrl)
+ parseUrl = self.regStr(scriptRsp.text, 'src="(\\S+url=)')
+ if len(parseUrl) > 0:
+ path = jo['url'] + '&next=' + jo['link_next'] + '&id=' + jo['id'] + '&nid=' + nid
+ parseRsp = self.fetch(parseUrl + path,headers=self.header)
+ realUrl = self.regStr(parseRsp.text, "(?<=urls\\s=\\s').*?(?=')", 0)
+ if len(realUrl) > 0:
+ result["parse"] = 0
+ result["playUrl"] = ""
+ result["url"] = realUrl
+ result["header"] = ""
+ else:
+ result["parse"] = 1
+ result["playUrl"] = ""
+ result["url"] = jo['url']
+ result["header"] = json.dumps(self.header)
+ return result
+
+ def isVideoFormat(self, url):
+ pass
+
+ def manualVideoCheck(self):
+ pass
+
+ def localProxy(self, param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_pansou.py b/py/plugin/py_pansou.py
new file mode 100644
index 0000000..6fa23d8
--- /dev/null
+++ b/py/plugin/py_pansou.py
@@ -0,0 +1,92 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import requests
+
+class Spider(Spider):
+ def getDependence(self):
+ return ['py_ali']
+ def getName(self):
+ return "py_pansou"
+ def init(self,extend):
+ self.ali = extend[0]
+ print("============py_pansou============")
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ return result
+ def homeVideoContent(self):
+ result = {}
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ return result
+
+ def detailContent(self,array):
+ tid = array[0]
+ pattern = '(https:\\/\\/www.aliyundrive.com\\/s\\/[^\\\"]+)'
+ url = self.regStr(tid,pattern)
+ if len(url) > 0:
+ return self.ali.detailContent(array)
+ header = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
+ 'Referer': 'https://www.alipansou.com/s/' +tid
+ }
+ rsp = requests.get('https://www.alipansou.com/cv/'+tid, allow_redirects=False, headers=header)
+ url = self.regStr(reg=r'href=\"(.*)\"', src=rsp.text)
+ if len(url) == 0:
+ return ""
+ url = url.replace('\\','')
+ newArray = [url]
+ print(newArray)
+ return self.ali.detailContent(newArray)
+
+ def searchContent(self,key,quick):
+ map = {
+ '7':'文件夹',
+ '1':'视频'
+ }
+ ja = []
+ for tKey in map.keys():
+ url = "https://www.alipansou.com/search?k={0}&t={1}".format(key,tKey)
+ rsp = self.fetch(url)
+ root = self.html(self.cleanText(rsp.text))
+ aList = root.xpath("//van-row/a")
+ for a in aList:
+ title = ''
+ divList = a.xpath('.//template/div')
+ t = divList[0].xpath('string(.)')
+ t = self.cleanText(t).strip()
+ title = title + t
+ remark = divList[1].xpath('string(.)')
+ remark = self.cleanText(remark).replace('\xa0\xa0','').strip().split(' ')[1]
+ if key in title:
+ pic = 'https://www.alipansou.com'+ self.xpText(a,'.//van-card/@thumb')
+ jo = {
+ 'vod_id': self.regStr(a.xpath('@href')[0],'/s/(.*)'),
+ 'vod_name': '{0}[{1}]'.format(title,remark),
+ 'vod_pic': pic
+ }
+ ja.append(jo)
+ result = {
+ 'list':ja
+ }
+ return result
+
+ def playerContent(self,flag,id,vipFlags):
+ return self.ali.playerContent(flag,id,vipFlags)
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_star.json b/py/plugin/py_star.json
new file mode 100644
index 0000000..5d8e7e7
--- /dev/null
+++ b/py/plugin/py_star.json
@@ -0,0 +1,152 @@
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "星光影视"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "电影":"电影",
+ "电视剧":"电视剧",
+ "动漫":"动漫",
+ "综艺":"综艺"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ rsp = self.fetch("https://v.8a5.cn/api.php?do=index_list")
+ alist = json.loads(rsp.text)
+ alist = alist['list']
+ videos = []
+
+ for a in alist:
+ videos.append({
+ "vod_id":a['id'],
+ "vod_name":a['name'],
+ "vod_pic":a['pic'],
+ "vod_remarks":a['text']
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if 'name' not in extend.keys():
+ extend['name'] = tid
+ extend['p'] = pg
+ filterParams = ["name", "area", "by", "n", "lang", "", "", "", "p", "", "", "year"]
+ params = []
+ for idx in range(len(filterParams)):
+ fp = filterParams[idx]
+ if fp in extend.keys():
+
+ params.append(fp + '=' + extend[fp])
+ suffix = '&'.join(params)
+ url = 'https://v.8a5.cn/api.php?do=class_list&{0}'.format(suffix)
+ rsp = self.fetch(url)
+ alists = json.loads(rsp.text)
+ alist = alists['list']
+ videos = []
+ for a in alist:
+ videos.append({
+ "vod_id":a['id'],
+ "vod_name":a['name'],
+ "vod_pic":a['pic'],
+ "vod_remarks":a['progress']
+ })
+
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def detailContent(self,array):
+ tid = array[0]
+ url = 'https://v.8a5.cn/api.php?do=detail_info&id={0}'.format(tid)
+ rsp = self.fetch(url)
+ alists = json.loads(rsp.text)
+ alist = alists['info']
+ vod = {
+ "vod_id": alist['id'],
+ "vod_name": alist['name'],
+ "vod_pic": alist['pic'],
+ "type_name": alist['vclass'],
+ "vod_year": alist['year'],
+ "vod_area": alist['area'],
+ "vod_remarks": alist['progress'],
+ "vod_actor": "",
+ "vod_director": "",
+ "vod_play_from":alist['form'],
+ "vod_play_url":alist['playurl'],
+ "vod_content": alist['introduce']
+ }
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+
+ def searchContent(self,key,quick):
+ url = 'https://v.8a5.cn/api.php?do=search&wd={0}'.format(key)
+ # getHeader()
+ rsp = self.fetch(url)
+ jo = json.loads(rsp.text)
+ result = {}
+ jArray = []
+ if int(jo['count']) > 0:
+ for a in jo['list']:
+ jArray.append({
+ "vod_id": a['id'],
+ "vod_name": a['name'],
+ "vod_pic": a['pic'],
+ "vod_remarks": a['text']
+ })
+ result = {
+ 'list':jArray
+ }
+ return result
+
+ config = {
+ "filter":{"电视剧":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"剧情","v":"剧情"},{"n":"古装","v":"古装"},{"n":"武侠","v":"武侠"},{"n":"奇幻","v":"奇幻"},{"n":"科幻","v":"科幻"},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"励志","v":"励志"},{"n":"冒险","v":"冒险"},{"n":"歌舞","v":"歌舞"},{"n":"音乐","v":"音乐"},{"n":"恐怖","v":"恐怖"},{"n":"惊悚","v":"惊悚"},{"n":"丧尸","v":"丧尸"},{"n":"战争","v":"战争"},{"n":"传记","v":"传记"},{"n":"纪录","v":"纪录"},{"n":"犯罪","v":"犯罪"},{"n":"悬疑","v":"悬疑"},{"n":"西部","v":"西部"},{"n":"灾难","v":"灾难"},{"n":"家庭","v":"家庭"},{"n":"短片","v":"短片"},{"n":"校园","v":"校园"},{"n":"文艺","v":"文艺"},{"n":"运动","v":"运动"},{"n":"青春","v":"青春"},{"n":"同性","v":"同性"},{"n":"人性","v":"人性"},{"n":"美食","v":"美食"},{"n":"女性","v":"女性"},{"n":"治愈","v":"治愈"},{"n":"历史","v":"历史"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"欧美","v":"欧美"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"俄罗斯","v":"俄罗斯"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"英语","v":"英语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"法语","v":"法语"},{"n":"泰语","v":"泰语"},{"n":"德语","v":"德语"},{"n":"印度语","v":"印度语"},{"n":"国语","v":"国语"},{"n":"粤 语","v":"粤语"},{"n":"俄语","v":"俄语"},{"n":"西班牙语","v":"西班牙语"},{"n":"意大利语","v":"意大利语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"电影":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"剧情","v":"剧情"},{"n":"古装","v":"古装"},{"n":"武侠","v":"武侠"},{"n":"奇幻","v":"奇幻"},{"n":"科幻","v":"科幻"},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"励志","v":"励志"},{"n":"冒险","v":"冒险"},{"n":"歌舞","v":"歌舞"},{"n":"音乐","v":"音乐"},{"n":"恐怖","v":"恐怖"},{"n":"惊悚","v":"惊悚"},{"n":"丧尸","v":"丧尸"},{"n":"战争","v":"战争"},{"n":"传记","v":"传记"},{"n":"纪录","v":"纪录"},{"n":"犯罪","v":"犯罪"},{"n":"悬疑","v":"悬疑"},{"n":"西部","v":"西部"},{"n":"灾难","v":"灾难"},{"n":"家庭","v":"家庭"},{"n":"短片","v":"短片"},{"n":"校园","v":"校园"},{"n":"文艺","v":"文艺"},{"n":"运动","v":"运动"},{"n":"青春","v":"青春"},{"n":"同性","v":"同性"},{"n":"人性","v":"人性"},{"n":"美食","v":"美食"},{"n":"女性","v":"女性"},{"n":"治愈","v":"治愈"},{"n":"历史","v":"历史"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"英语","v":"英语"},{"n":"法语","v":"法语"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"动漫":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"冒险"},{"n":"玄幻","v":"玄幻"},{"n":"魔幻","v":"魔幻"},{"n":"武侠","v":"武侠"},{"n":"恋爱","v":"恋爱"},{"n":"推理","v":"推理"},{"n":"日常","v":"日常"},{"n":"校园","v":"校园"},{"n":"悬疑","v":"悬疑"},{"n":"剧情","v":"剧情"},{"n":"萌系","v":"萌系"},{"n":"科幻","v":"科幻"},{"n":"日常","v":"日常"},{"n":"战斗","v":"战斗"},{"n":"战争","v":"战争"},{"n":"热血","v":"热血"},{"n":"机战","v":"机战"},{"n":"游戏","v":"游戏"},{"n":"搞笑","v":"搞笑"},{"n":"恋爱","v":"恋爱"},{"n":"后宫","v":"后宫"},{"n":"百合","v":"百合"},{"n":"基腐","v":"基腐"},{"n":"冒险","v":"冒险"},{"n":"儿童","v":"儿童"},{"n":"歌舞","v":"歌舞"},{"n":"音乐","v":"音乐"},{"n":"奇幻","v":"奇幻"},{"n":"恐怖","v":"恐怖"},{"n":"惊悚","v":"惊悚"},{"n":"犯罪","v":"犯罪"},{"n":"西部","v":"西部"},{"n":"灾难","v":"灾难"},{"n":"古装","v":"古装"},{"n":"泡面","v":"泡面"},{"n":"运动","v":"运动"},{"n":"体育","v":"体育"},{"n":"青春","v":"青春"},{"n":"美食","v":"美食"},{"n":"治愈","v":"治愈"},{"n":"致郁","v":"致郁"},{"n":"励志","v":"励志"},{"n":"历史","v":"历史"},{"n":"真人","v":"真人"},{"n":"竞技","v":"竞技"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"综艺":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"游戏","v":"游戏"},{"n":"音乐","v":"音乐"},{"n":"养成","v":"养成"},{"n":"情感","v":"情感"},{"n":"喜剧","v":"喜剧"},{"n":"搞笑","v":"搞笑"},{"n":"脱口秀","v":"脱口秀"},{"n":"表演","v":"表演"},{"n":"体验","v":"体验"},{"n":"亲子","v":"亲子"},{"n":"文化","v":"文化"},{"n":"美食","v":"美食"},{"n":"职场","v":"职场"},{"n":"体育","v":"体育"},{"n":"潮流文化","v":"潮流文化"},{"n":"访谈","v":"访谈"},{"n":"生活服务","v":"生活服务"},{"n":"萌宠","v":"萌宠"},{"n":"资讯","v":"资讯"},{"n":"曲艺","v":"曲艺"},{"n":"职场","v":"职场"},{"n":"晚会","v":"晚会"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"记录片":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"纪录","v":"纪录"},{"n":"真人秀","v":"真人秀"},{"n":"自然","v":"自然"},{"n":"传记","v":"传记"},{"n":"文化","v":"文化"},{"n":"情","v":"情"},{"n":"运动","v":"运动"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国产","v":"国产"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"日语","v":"日语"},{"n":"英语","v":"英语"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}]}
+ }
+ def playerContent(self,flag,id,vipFlags):
+ if "STAR@" in id:
+ id = id.split('@')
+ id = id[1]
+ url = 'https://parse.8a5.cn/video/' + id
+ rsp = self.fetch(url)
+ jo = json.loads(rsp.text)
+ if jo:
+ id = jo['url']
+ else:
+ id = ''
+ result = {}
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = id
+ return result
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
diff --git a/py/plugin/py_voflix.json b/py/plugin/py_voflix.json
new file mode 100644
index 0000000..1f60675
--- /dev/null
+++ b/py/plugin/py_voflix.json
@@ -0,0 +1,228 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "Voflix"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ # https://meijuchong.cc/
+ result = {}
+ cateManual = {
+ "电影": "1",
+ "剧集": "2",
+ "综艺": "3",
+ "动漫": "4"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ rsp = self.fetch("https://www.voflix.com/",headers=self.header)
+ root = self.html(rsp.text)
+ vodList = root.xpath("//div[@class='module']/div[contains(@class,'tab-list')]//a")
+ videos = []
+ for vod in vodList:
+ name = vod.xpath("./@title")[0]
+ pic = vod.xpath(".//img/@data-original")[0]
+ mark = vod.xpath(".//div[@class='module-item-note']/text()")[0]
+ sid = vod.xpath("./@href")[0]
+ sid = self.regStr(sid,"/detail/(\\S+).html")
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if 'id' not in extend.keys():
+ extend['id'] = tid
+ extend['page'] = pg
+ filterParams = ["id", "area", "by", "class", "", "", "", "", "page", "", "", "year"]
+ params = ["", "", "", "", "", "", "", "", "", "", "", ""]
+ for idx in range(len(filterParams)):
+ fp = filterParams[idx]
+ if fp in extend.keys():
+ params[idx] = extend[fp]
+ suffix = '-'.join(params)
+ url = 'https://www.voflix.com/show/{0}.html'.format(suffix)
+
+ rsp = self.fetch(url,headers=self.header)
+ root = self.html(rsp.text)
+ vodList = root.xpath("//div[contains(@class, 'module-items')]/a")
+ videos = []
+ for vod in vodList:
+ name = vod.xpath("./@title")[0]
+ pic = vod.xpath(".//img/@data-original")[0]
+ mark = vod.xpath(".//div[contains(@class,'module-item-note')]/text()")[0]
+ sid = vod.xpath("./@href")[0]
+ sid = self.regStr(sid,"/detail/(\\S+).html")
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def detailContent(self,array):
+ tid = array[0]
+ url = 'https://www.voflix.com/detail/{0}.html'.format(tid)
+ rsp = self.fetch(url,headers=self.header)
+ root = self.html(rsp.text)
+ node = root.xpath("//div[@class='main']")[0]
+ title = node.xpath(".//div[@class='module-info-heading']/h1/text()")[0]
+ pic = root.xpath(".//div[@class='module-item-pic']/img/@data-original")[0]
+ vod = {
+ "vod_id":tid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":"",
+ "vod_year":"",
+ "vod_area":"",
+ "vod_remarks":"",
+ "vod_actor":"",
+ "vod_director":"",
+ "vod_content":""
+ }
+ infoArray = node.xpath(".//div[@class='module-info-item']")
+ for info in infoArray:
+ content = info.xpath('string(.)')
+ # if content.startswith('分類'):
+ # vod['type_name'] = content
+ # if content.startswith('年份'):
+ # vod['vod_year'] = content
+ # if content.startswith('地区'):
+ # vod['vod_area'] = content
+ if content.startswith('片长'):
+ vod['vod_remarks'] = content.replace('\n','').replace('\t','')
+ if content.startswith('主演'):
+ vod['vod_actor'] = content.replace('\n','').replace('\t','')
+ if content.startswith('导演'):
+ vod['vod_director'] = content.replace('\n','').replace('\t','')
+ # if content.startswith('剧情'):
+ # vod['vod_content'] = content.replace('\n','').replace('\t','')
+ vod['vod_content'] = node.xpath(".//div[contains(@class,'module-info-introduction-content')]/p/text()")[0].replace('\n','').replace('\t','')
+
+ vod_play_from = '$$$'
+ playFrom = []
+ vodHeader = root.xpath(".//div[contains(@class,'module-tab-items-box')]/div/span/text()")
+ for v in vodHeader:
+ playFrom.append(v.strip())
+ vod_play_from = vod_play_from.join(playFrom)
+
+ vod_play_url = '$$$'
+ playList = []
+ vodList = root.xpath(".//div[contains(@class,'module-play-list-content')]")
+ for vl in vodList:
+ vodItems = []
+ aList = vl.xpath('./a')
+ for tA in aList:
+ href = tA.xpath('./@href')[0]
+ name = tA.xpath('.//span/text()')[0]
+ tId = self.regStr(href,'/play/(\\S+).html')
+ vodItems.append(name + "$" + tId)
+ joinStr = '#'
+ joinStr = joinStr.join(vodItems)
+ playList.append(joinStr)
+ vod_play_url = vod_play_url.join(playList)
+
+ vod['vod_play_from'] = vod_play_from
+ vod['vod_play_url'] = vod_play_url
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ url = "https://www.voflix.com/index.php/ajax/suggest?mid=1&wd={0}".format(key)
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ vodList = jo['list']
+ videos = []
+ for vod in vodList:
+ name = vod['name']
+ pic = vod['pic']
+ mark = ''
+ sid = vod['id']
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ # https://meijuchong.cc/static/js/playerconfig.js
+ result = {}
+ url = 'https://www.voflix.com/play/{0}.html'.format(id)
+ rsp = self.fetch(url,headers=self.header)
+ root = self.html(rsp.text)
+ scripts = root.xpath("//script/text()")
+ jo = {}
+ for script in scripts:
+ if(script.startswith("var player_")):
+ target = script[script.index('{'):]
+ jo = json.loads(target)
+ break;
+
+ parseUrl = 'https://play.shtpin.com/xplay/?url={0}'.format(jo['url'])
+ parseRsp = self.fetch(parseUrl,headers={'referer':'https://www.voflix.com/'})
+
+ configStr = self.regStr(parseRsp.text,'var config = ({[\\s\\S]+})')
+ configJo = json.loads(configStr)
+ playUrl = 'https://play.shtpin.com/xplay/555tZ4pvzHE3BpiO838.php?tm={0}&url={1}&vkey={2}&token={3}&sign=F4penExTGogdt6U8'
+ playUrl.format(time.time(),configJo['url'],configJo['vkey'],configJo['token'])
+ playRsp = self.fetch(playUrl.format(time.time(),configJo['url'],configJo['vkey'],configJo['token'])
+ ,headers={'referer':'https://www.voflix.com/'})
+ playJo = json.loads(playRsp.text)
+ b64 = playJo['url'][8:]
+ targetUrl = base64.b64decode(b64)[8:-8].decode()
+
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = targetUrl
+ result["header"] = ''
+ return result
+
+ config = {
+ "player": {},
+ "filter": {"1":[{"key":"id","name":"类型","value":[{"n":"全部","v":"1"},{"n":"动作","v":"6"},{"n":"喜剧","v":"7"},{"n":"爱情","v":"8"},{"n":"科幻","v":"9"},{"n":"恐怖","v":"10"},{"n":"剧情","v":"11"},{"n":"战争","v":"12"},{"n":"动画","v":"23"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"2":[{"key":"id","name":"类型","value":[{"n":"全部","v":"2"},{"n":"国产剧","v":"13"},{"n":"港台剧","v":"14"},{"n":"日韩剧","v":"15"},{"n":"欧美剧","v":"16"},{"n":"纪 录片","v":"21"},{"n":"泰国剧","v":"24"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国台湾","v":"中国台湾"},{"n":"中国香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"选秀"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":" 冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":" 社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"中国"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}]}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_voflix_1.json b/py/plugin/py_voflix_1.json
new file mode 100644
index 0000000..1f60675
--- /dev/null
+++ b/py/plugin/py_voflix_1.json
@@ -0,0 +1,228 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "Voflix"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ # https://meijuchong.cc/
+ result = {}
+ cateManual = {
+ "电影": "1",
+ "剧集": "2",
+ "综艺": "3",
+ "动漫": "4"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ rsp = self.fetch("https://www.voflix.com/",headers=self.header)
+ root = self.html(rsp.text)
+ vodList = root.xpath("//div[@class='module']/div[contains(@class,'tab-list')]//a")
+ videos = []
+ for vod in vodList:
+ name = vod.xpath("./@title")[0]
+ pic = vod.xpath(".//img/@data-original")[0]
+ mark = vod.xpath(".//div[@class='module-item-note']/text()")[0]
+ sid = vod.xpath("./@href")[0]
+ sid = self.regStr(sid,"/detail/(\\S+).html")
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if 'id' not in extend.keys():
+ extend['id'] = tid
+ extend['page'] = pg
+ filterParams = ["id", "area", "by", "class", "", "", "", "", "page", "", "", "year"]
+ params = ["", "", "", "", "", "", "", "", "", "", "", ""]
+ for idx in range(len(filterParams)):
+ fp = filterParams[idx]
+ if fp in extend.keys():
+ params[idx] = extend[fp]
+ suffix = '-'.join(params)
+ url = 'https://www.voflix.com/show/{0}.html'.format(suffix)
+
+ rsp = self.fetch(url,headers=self.header)
+ root = self.html(rsp.text)
+ vodList = root.xpath("//div[contains(@class, 'module-items')]/a")
+ videos = []
+ for vod in vodList:
+ name = vod.xpath("./@title")[0]
+ pic = vod.xpath(".//img/@data-original")[0]
+ mark = vod.xpath(".//div[contains(@class,'module-item-note')]/text()")[0]
+ sid = vod.xpath("./@href")[0]
+ sid = self.regStr(sid,"/detail/(\\S+).html")
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def detailContent(self,array):
+ tid = array[0]
+ url = 'https://www.voflix.com/detail/{0}.html'.format(tid)
+ rsp = self.fetch(url,headers=self.header)
+ root = self.html(rsp.text)
+ node = root.xpath("//div[@class='main']")[0]
+ title = node.xpath(".//div[@class='module-info-heading']/h1/text()")[0]
+ pic = root.xpath(".//div[@class='module-item-pic']/img/@data-original")[0]
+ vod = {
+ "vod_id":tid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":"",
+ "vod_year":"",
+ "vod_area":"",
+ "vod_remarks":"",
+ "vod_actor":"",
+ "vod_director":"",
+ "vod_content":""
+ }
+ infoArray = node.xpath(".//div[@class='module-info-item']")
+ for info in infoArray:
+ content = info.xpath('string(.)')
+ # if content.startswith('分類'):
+ # vod['type_name'] = content
+ # if content.startswith('年份'):
+ # vod['vod_year'] = content
+ # if content.startswith('地区'):
+ # vod['vod_area'] = content
+ if content.startswith('片长'):
+ vod['vod_remarks'] = content.replace('\n','').replace('\t','')
+ if content.startswith('主演'):
+ vod['vod_actor'] = content.replace('\n','').replace('\t','')
+ if content.startswith('导演'):
+ vod['vod_director'] = content.replace('\n','').replace('\t','')
+ # if content.startswith('剧情'):
+ # vod['vod_content'] = content.replace('\n','').replace('\t','')
+ vod['vod_content'] = node.xpath(".//div[contains(@class,'module-info-introduction-content')]/p/text()")[0].replace('\n','').replace('\t','')
+
+ vod_play_from = '$$$'
+ playFrom = []
+ vodHeader = root.xpath(".//div[contains(@class,'module-tab-items-box')]/div/span/text()")
+ for v in vodHeader:
+ playFrom.append(v.strip())
+ vod_play_from = vod_play_from.join(playFrom)
+
+ vod_play_url = '$$$'
+ playList = []
+ vodList = root.xpath(".//div[contains(@class,'module-play-list-content')]")
+ for vl in vodList:
+ vodItems = []
+ aList = vl.xpath('./a')
+ for tA in aList:
+ href = tA.xpath('./@href')[0]
+ name = tA.xpath('.//span/text()')[0]
+ tId = self.regStr(href,'/play/(\\S+).html')
+ vodItems.append(name + "$" + tId)
+ joinStr = '#'
+ joinStr = joinStr.join(vodItems)
+ playList.append(joinStr)
+ vod_play_url = vod_play_url.join(playList)
+
+ vod['vod_play_from'] = vod_play_from
+ vod['vod_play_url'] = vod_play_url
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ url = "https://www.voflix.com/index.php/ajax/suggest?mid=1&wd={0}".format(key)
+ rsp = self.fetch(url,headers=self.header)
+ jo = json.loads(rsp.text)
+ vodList = jo['list']
+ videos = []
+ for vod in vodList:
+ name = vod['name']
+ pic = vod['pic']
+ mark = ''
+ sid = vod['id']
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ # https://meijuchong.cc/static/js/playerconfig.js
+ result = {}
+ url = 'https://www.voflix.com/play/{0}.html'.format(id)
+ rsp = self.fetch(url,headers=self.header)
+ root = self.html(rsp.text)
+ scripts = root.xpath("//script/text()")
+ jo = {}
+ for script in scripts:
+ if(script.startswith("var player_")):
+ target = script[script.index('{'):]
+ jo = json.loads(target)
+ break;
+
+ parseUrl = 'https://play.shtpin.com/xplay/?url={0}'.format(jo['url'])
+ parseRsp = self.fetch(parseUrl,headers={'referer':'https://www.voflix.com/'})
+
+ configStr = self.regStr(parseRsp.text,'var config = ({[\\s\\S]+})')
+ configJo = json.loads(configStr)
+ playUrl = 'https://play.shtpin.com/xplay/555tZ4pvzHE3BpiO838.php?tm={0}&url={1}&vkey={2}&token={3}&sign=F4penExTGogdt6U8'
+ playUrl.format(time.time(),configJo['url'],configJo['vkey'],configJo['token'])
+ playRsp = self.fetch(playUrl.format(time.time(),configJo['url'],configJo['vkey'],configJo['token'])
+ ,headers={'referer':'https://www.voflix.com/'})
+ playJo = json.loads(playRsp.text)
+ b64 = playJo['url'][8:]
+ targetUrl = base64.b64decode(b64)[8:-8].decode()
+
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = targetUrl
+ result["header"] = ''
+ return result
+
+ config = {
+ "player": {},
+ "filter": {"1":[{"key":"id","name":"类型","value":[{"n":"全部","v":"1"},{"n":"动作","v":"6"},{"n":"喜剧","v":"7"},{"n":"爱情","v":"8"},{"n":"科幻","v":"9"},{"n":"恐怖","v":"10"},{"n":"剧情","v":"11"},{"n":"战争","v":"12"},{"n":"动画","v":"23"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"2":[{"key":"id","name":"类型","value":[{"n":"全部","v":"2"},{"n":"国产剧","v":"13"},{"n":"港台剧","v":"14"},{"n":"日韩剧","v":"15"},{"n":"欧美剧","v":"16"},{"n":"纪 录片","v":"21"},{"n":"泰国剧","v":"24"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国台湾","v":"中国台湾"},{"n":"中国香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"选秀"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":" 冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":" 社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"中国"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}]}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_wmkk.json b/py/plugin/py_wmkk.json
new file mode 100644
index 0000000..b01572c
--- /dev/null
+++ b/py/plugin/py_wmkk.json
@@ -0,0 +1,176 @@
+# coding=utf-8
+# !/usr/bin/python
+import sys
+import re
+sys.path.append('..')
+from base.spider import Spider
+
+
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "完美看看"
+
+ def init(self, extend=""):
+ print("============{0}============".format(extend))
+ pass
+
+ def homeContent(self, filter):
+ result = {}
+ cateManual = {
+ "电影": "1",
+ "国产剧": "5",
+ "欧美剧": "2",
+ "韩剧": "3",
+ "泰剧": "9",
+ "日剧": "4",
+ "动漫": "6",
+ "综艺": "7",
+ "纪录片": "10"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name': k,
+ 'type_id': cateManual[k]
+ })
+
+ result['class'] = classes
+ if (filter):
+ result['filters'] = self.config['filter']
+ return result
+
+ def homeVideoContent(self):
+ result = {
+ 'list': []
+ }
+ return result
+
+ def categoryContent(self, tid, pg, filter, extend):
+ result = {}
+ url = 'https://www.wanmeikk.film/category/{0}-{1}.html'.format(tid, pg)
+ rsp = self.fetch(url)
+ root = self.html(rsp.text)
+ aList = root.xpath("//div[@class='stui-pannel_bd']/ul[1]/li")
+ videos = []
+ for a in aList:
+ name = a.xpath('./div/a/@title')[0]
+ pic = a.xpath('./div/a/@data-original')[0]
+ mark = a.xpath("./div/a/span[@class='pic-text text-right']/text()")[0]
+ sid = a.xpath("./div/a/@href")[0].replace("/", "").replace("project", "").replace(".html", "")
+ videos.append({
+ "vod_id": sid,
+ "vod_name": name,
+ "vod_pic": pic,
+ "vod_remarks": mark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def detailContent(self, array):
+ tid = array[0]
+ url = 'https://www.wanmeikk.film/project/{0}.html'.format(tid)
+ header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
+ rsp = self.fetch(url, headers=header)
+ root = self.html(rsp.content)
+ divContent = root.xpath("//div[@class='col-lg-wide-75 col-xs-1']")[0]
+ title = divContent.xpath(".//h1[@class='title']/text()")[0]
+ pic = divContent.xpath(".//a[@class='stui-vodlist__thumb picture v-thumb']/img/@data-original")[0]
+ detail = divContent.xpath(".//p[@class='desc detail hidden-xs']/span[@class='detail-content']/text()")[0]
+ vod = {
+ "vod_id": tid,
+ "vod_name": title,
+ "vod_pic": pic,
+ "type_name": "",
+ "vod_year": "",
+ "vod_area": "",
+ "vod_remarks": "",
+ "vod_actor": "",
+ "vod_director": "",
+ "vod_content": detail
+ }
+ infoArray = divContent.xpath(".//div[@class='stui-content__detail']/p[@class='data']")
+ for info in infoArray:
+ content = info.xpath('string(.)')
+ if content.startswith('类型'):
+ infon = content.split('\xa0')
+ for inf in infon:
+ if inf.startswith('类型'):
+ vod['type_name'] = inf.replace("类型:", "")
+ if inf.startswith('地区'):
+ vod['vod_area'] = inf.replace("地区:", "")
+ if inf.startswith('年份'):
+ vod['vod_year'] = inf.replace("年份:", "")
+ if content.startswith('主演'):
+ vod['vod_actor'] = content.replace("\xa0", "/").replace("主演:", "")
+ if content.startswith('导演'):
+ vod['vod_director'] = content.replace("\xa0", "").replace("导演:", "")
+ vod_play_url = '$$$'
+ vod['vod_play_from'] = '完美看看'
+ purl = divContent.xpath(".//div[@class='stui-pannel_bd col-pd clearfix']/ul/li")
+ playList = []
+ vodItems = []
+ for plurl in purl:
+ plaurl = plurl.xpath(".//a/@href")[0]
+ name = plurl.xpath(".//a/text()")[0]
+ tId = self.regStr(plaurl, '/play/(\\S+).html')
+ vodItems.append(name + "$" + tId)
+ joinStr = '#'
+ joinStr = joinStr.join(vodItems)
+ playList.append(joinStr)
+ vod_play_url = vod_play_url.join(playList)
+ vod['vod_play_url'] = vod_play_url
+ result = {
+ 'list': [
+ vod
+ ]
+ }
+ return result
+
+ def searchContent(self, key, quick):
+ result = {}
+ return result
+
+ def playerContent(self, flag, id, vipFlags):
+ result = {}
+ url = 'https://www.wanmeikk.film/play/{0}.html'.format(id)
+ rsp = self.fetch(url)
+ root = self.html(rsp.text)
+ scripts = root.xpath("//div[@class='stui-player__video embed-responsive embed-responsive-16by9 clearfix']/script/text()")[0]
+ key = scripts.split("url")[1].replace('"', "").replace(':', "").replace(',', "").replace("'", "")
+ surl = 'https://www.wanmeikk.film/dplayer.php?url={0}'.format(key)
+ srsp = self.fetch(surl)
+ sroot = self.html(srsp.text)
+ murl = sroot.xpath("//script[@type='text/javascript']/text()")[0]
+ mp4url = re.findall(r"var urls = '(.*)';", murl)[0]
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = mp4url
+ result["header"] = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def isVideoFormat(self, url):
+ pass
+
+ def manualVideoCheck(self):
+ pass
+
+ def localProxy(self, param):
+ action = {
+ 'url': '',
+ 'header': '',
+ 'param': '',
+ 'type': 'string',
+ 'after': ''
+ }
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_xmaomi.json b/py/plugin/py_xmaomi.json
new file mode 100644
index 0000000..83e6b7f
--- /dev/null
+++ b/py/plugin/py_xmaomi.json
@@ -0,0 +1,258 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "x小猫咪"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "电影":"1",
+ "电视剧":"2",
+ "综艺":"3",
+ "动漫":"4",
+ "纪录":"5"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ tmpRsp = self.fetch("https://xmaomi.net/")
+ suffix = self.regStr(tmpRsp.text,"window.location.href =\"(\\S+)\"")
+ url = "https://xmaomi.net"+suffix
+ # self.cookie = rsp.cookies
+ rsp = self.fetch(url,cookies=tmpRsp.cookies)
+ root = self.html(rsp.text)
+ print(rsp.text[0])
+ print(root)
+ aList = root.xpath("//ul[contains(@class,'hl-vod-list')]/li/a")
+ videos = []
+ for a in aList:
+ name = a.xpath('./@title')[0]
+ pic = a.xpath('./@data-original')[0]
+ mark = a.xpath("./div[@class='hl-pic-text']/span/text()")[0]
+ sid = a.xpath("./@href")[0]
+ sid = self.regStr(sid,"/(\\S+).html")
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+
+ urlParams = ["", "", "", "", "", "", "", "", "", "", "", ""]
+ urlParams[0] = tid
+ urlParams[8] = pg
+ for key in extend:
+ urlParams[int(key)] = extend[key]
+ params = '-'.join(urlParams)
+ url = 'https://xmaomi.net/vod_____show/{0}.html'.format(params)
+ tmpRsp = self.fetch(url)
+ suffix = self.regStr(tmpRsp.text,"window.location.href =\"(\\S+)\"")
+ url = 'https://xmaomi.net'+suffix
+ rsp = self.fetch(url,cookies=tmpRsp.cookies)
+ root = self.html(rsp.text)
+ print(rsp.text[0])
+ print(root)
+ aList = root.xpath("//ul[contains(@class,'hl-vod-list')]/li/a")
+ videos = []
+ for a in aList:
+ name = a.xpath('./@title')[0]
+ pic = a.xpath('./@data-original')[0]
+ mark = a.xpath("./div[@class='hl-pic-text']/span/text()")[0]
+ sid = a.xpath("./@href")[0]
+ sid = self.regStr(sid,"/(\\S+).html")
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def detailContent(self,array):
+ tid = array[0]
+ url = 'https://xmaomi.net/{0}.html'.format(tid)
+ tmpRsp = self.fetch(url)
+ suffix = self.regStr(tmpRsp.text,"window.location.href =\"(\\S+)\"")
+ url = "https://xmaomi.net"+suffix
+ rsp = self.fetch(url,cookies=tmpRsp.cookies)
+ root = self.html(rsp.text)
+ print(rsp.text[0])
+ print(root)
+ divContent = root.xpath("//div[contains(@class,'hl-full-box')]")[0]
+ title = divContent.xpath("./div[@class='hl-item-pic']/span/@title")[0]
+ pic = divContent.xpath("./div[@class='hl-item-pic']/span/@data-original")[0]
+ vod = {
+ "vod_id":tid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":"",
+ "vod_year":"",
+ "vod_area":"",
+ "vod_remarks":"",
+ "vod_actor":"",
+ "vod_director":"",
+ "vod_content":""
+ }
+ liArray = divContent.xpath(".//li")
+ for li in liArray:
+ content = li.xpath('string(.)')
+ if content.startswith('类型'):
+ vod['type_name'] = content
+ if content.startswith('年份'):
+ vod['vod_year'] = content
+ if content.startswith('地区'):
+ vod['vod_area'] = content
+ if content.startswith('状态'):
+ vod['vod_remarks'] = content
+ if content.startswith('主演'):
+ vod['vod_actor'] = content
+ if content.startswith('导演'):
+ vod['vod_director'] = content
+ if content.startswith('简介'):
+ vod['vod_content'] = content
+
+ vod_play_from = '$$$'
+ playFrom = []
+ vodHeader = root.xpath("//div[contains(@class,'hl-rb-tips')]//span[@class='hl-text-site']/text()")
+ for v in vodHeader:
+ playFrom.append(v)
+ vod_play_from = vod_play_from.join(playFrom)
+
+ vod_play_url = '$$$'
+ playList = []
+ vodList = root.xpath(".//div[contains(@class,'hl-play-source')]//ul")
+ for vl in vodList:
+ vodItems = []
+ aList = vl.xpath('./li/a')
+ for tA in aList:
+ href = tA.xpath('./@href')[0]
+ name = tA.xpath('string(.)')
+ tId = self.regStr(href,'/(\\S+).html')
+ vodItems.append(name + "$" + tId)
+ joinStr = '#'
+ joinStr = joinStr.join(vodItems)
+ playList.append(joinStr)
+ vod_play_url = vod_play_url.join(playList)
+
+ vod['vod_play_from'] = vod_play_from
+ vod['vod_play_url'] = vod_play_url
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ url = 'https://xmaomi.net/v_search/{0}-------------.html'.format(key)
+ tmpRsp = self.fetch(url)
+ suffix = self.regStr(tmpRsp.text,"window.location.href =\"(\\S+)\"")
+ url = "https://xmaomi.net"+suffix
+ rsp = self.fetch(url,cookies=tmpRsp.cookies)
+ root = self.html(rsp.text)
+ print(rsp.text[0])
+ print(root)
+ aList = root.xpath("//ul[contains(@class,'hl-one-list')]/li//a[contains(@class,'hl-item-thumb')]")
+ videos = []
+ for a in aList:
+ name = a.xpath('./@title')[0]
+ print(name)
+ pic = a.xpath('./@data-original')[0]
+ print(pic)
+ mark = a.xpath("./div[@class='hl-pic-text']/span/text()")[0]
+ sid = a.xpath("./@href")[0]
+ sid = self.regStr(sid,"/(\\S+).html")
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ url = 'https://xmaomi.net/{0}.html'.format(id)
+ tmpRsp = self.fetch(url)
+ suffix = self.regStr(tmpRsp.text,"window.location.href =\"(\\S+)\"")
+ url = "https://xmaomi.net"+suffix
+ rsp = self.fetch(url,cookies=tmpRsp.cookies)
+ root = self.html(rsp.text)
+ print(rsp.text[0])
+ print(root)
+ scripts = root.xpath("//script/text()")
+ jo = {}
+ for script in scripts:
+ if(script.startswith("var player_")):
+ target = script[script.index('{'):]
+ jo = json.loads(target)
+ break;
+ parseUrl = ""
+ print(jo)
+ htmlUrl = 'https://play.fositv.com/?url={0}&tm={1}&key={2}&next=&title='.format(jo['url'],jo['tm'],jo['key'])
+ htmlRsp = self.fetch(htmlUrl)
+ htmlRoot = self.html(htmlRsp.text)
+ configScripts = htmlRoot.xpath("//script/text()")
+ configJo = {}
+ for script in configScripts:
+ if(script.strip().startswith("var config")):
+ target = script[script.index('{'):(script.index('}')+1)]
+ configJo = json.loads(target)
+ break;
+ param = {
+ 'url': configJo['url'],
+ 'time': configJo['time'],
+ 'key': configJo['key']
+ }
+ postRsp = self.post('https://play.fositv.com/API.php',param)
+ resultJo = json.loads(postRsp.text)
+ result = {
+ 'parse':0,
+ 'playUrl':'',
+ 'url':resultJo['url'],
+ 'header':{
+ 'User-Agent':resultJo['ua']
+ }
+ }
+ return result
+
+ cookie = {}
+ config = {
+ "player": {},
+ "filter": {"1":[{"key":0,"name":"分类","value":[{"n":"全部","v":"1"},{"n":"动作","v":"101"},{"n":"喜剧","v":"102"},{"n":"爱情","v":"103"},{"n":"科幻","v":"104"},{"n":"剧情","v":"105"},{"n":"悬疑","v":"106"},{"n":"惊悚","v":"107"},{"n":"恐怖","v":"108"},{"n":"犯罪","v":"109"},{"n":"谍战","v":"110"},{"n":"冒险","v":"111"},{"n":"奇幻","v":"112"},{"n":"灾难","v":"113"},{"n":"战争","v":"114"},{"n":"动画","v":"115"},{"n":"歌舞","v":"116"},{"n":"历史","v":"117"},{"n":"传记","v":"118"},{"n":"纪录","v":"119"},{"n":"其他","v":"120"}]},{"key":1,"name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":" 印度","v":"印度"},{"n":"其他","v":"其他"}]},{"key":11,"name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":5,"name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0-9","v":"0-9"}]},{"key":2,"name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"2":[{"key":0,"name":"分类","value":[{"n":"全部","v":"2"},{"n":"武侠","v":"201"},{"n":"喜剧","v":"202"},{"n":"爱情","v":"203"},{"n":"剧情","v":"204"},{"n":"青春","v":"205"},{"n":"悬疑","v":"206"},{"n":"科幻","v":"207"},{"n":"军事","v":"208"},{"n":"警匪","v":"209"},{"n":"谍战","v":"210"},{"n":"奇幻","v":"211"},{"n":"偶 像","v":"212"},{"n":"年代","v":"213"},{"n":"乡村","v":"214"},{"n":"都市","v":"215"},{"n":"家庭","v":"216"},{"n":"古装","v":"217"},{"n":"历史","v":"218"},{"n":"神话","v":"219"},{"n":"其他","v":"220"}]},{"key":1,"name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印 度"},{"n":"其他","v":"其他"}]},{"key":11,"name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":5,"name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0-9","v":"0-9"}]},{"key":2,"name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"3":[{"key":0,"name":"分类","value":[{"n":"全部","v":"3"},{"n":"脱口秀","v":"301"},{"n":"真人秀","v":"302"},{"n":"搞笑","v":"303"},{"n":"访谈","v":"304"},{"n":"生活","v":"305"},{"n":"晚会","v":"306"},{"n":"美食","v":"307"},{"n":"游戏","v":"308"},{"n":"亲子","v":"309"},{"n":"旅游","v":"310"},{"n":"文化","v":"311"},{"n":"体育","v":"312"},{"n":"时尚","v":"313"},{"n":"纪实","v":"314"},{"n":"益智","v":"315"},{"n":"演艺","v":"316"},{"n":"歌舞","v":"317"},{"n":"音乐","v":"318"},{"n":"播报","v":"319"},{"n":"其他","v":"320"}]},{"key":1,"name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"其他","v":"其他"}]},{"key":11,"name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":5,"name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0-9","v":"0-9"}]},{"key":2,"name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"4":[{"key":0,"name":"分类","value":[{"n":"全部","v":"4"},{"n":"热血","v":"401"},{"n":"格斗","v":"402"},{"n":"恋爱","v":"403"},{"n":"美少女","v":"404"},{"n":"校园","v":"405"},{"n":"搞笑","v":"406"},{"n":"LOLI","v":"407"},{"n":"神魔","v":"408"},{"n":"机战","v":"409"},{"n":"科幻","v":"410"},{"n":"真人","v":"411"},{"n":"青春","v":"412"},{"n":"魔法","v":"413"},{"n":"神话","v":"414"},{"n":"冒险","v":"415"},{"n":"运动","v":"416"},{"n":"竞技","v":"417"},{"n":"童话","v":"418"},{"n":"亲子","v":"419"},{"n":"教育","v":"420"}]},{"key":1,"name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"其他","v":"其他"}]},{"key":11,"name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":5,"name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0-9","v":"0-9"}]},{"key":2,"name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],"5":[{"key":0,"name":"分类","value":[{"n":"全部","v":"5"},{"n":"人物","v":"501"},{"n":"军事","v":"502"},{"n":"历史","v":"503"},{"n":"自然","v":"504"},{"n":"探险","v":"505"},{"n":"科技","v":"506"},{"n":"文化","v":"507"},{"n":"刑侦","v":"508"},{"n":"社会","v":"509"},{"n":"旅游","v":"510"},{"n":"其他","v":"511"}]},{"key":1,"name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"其他","v":"其他"}]},{"key":11,"name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":5,"name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0-9","v":"0-9"}]},{"key":2,"name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}]}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_xmly.py b/py/plugin/py_xmly.py
new file mode 100644
index 0000000..bf50ea6
--- /dev/null
+++ b/py/plugin/py_xmly.py
@@ -0,0 +1,222 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import math
+import json
+from requests import session, utils
+
+class Spider(Spider):
+ def getName(self):
+ return "喜马拉雅"
+ def init(self,extend=""):
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "小说": "7",
+ "儿童": "11",
+ "评书": "10",
+ "娱乐": "13",
+ "悬疑": "14",
+ "人文": "17",
+ "国学": "18",
+ "头条": "24",
+ "音乐": "19",
+ "历史": "16",
+ "情感": "20",
+ "健康": "22",
+ "生活": "21",
+ "影视": "15",
+ "英语": "29",
+ "科技": "28",
+ "体育": "25",
+ "汽车": "23",
+ "广播剧": "8",
+ "小语种": "30",
+ "教育考试": "32",
+ "少儿素养": "12",
+ "商业管理": "27",
+ "个人提升": "31",
+ "投资理财": "26",
+ "相声小品": "9",
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name': k,
+ 'type_id': cateManual[k]
+ })
+
+ result['class'] = classes
+ if (filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ result = {}
+ return result
+
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ header = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
+ "Referer": "https://www.ximalaya.com/channel/{}/".format(tid)
+ }
+ url = 'https://www.ximalaya.com/revision/metadata/v2/channel/albums?pageNum={0}&pageSize=50&sort=1&metadata=&groupId={1}'.format(pg, tid)
+ rsp = self.fetch(url,headers=header)
+ jo = json.loads(rsp.text)
+ videos = []
+ numvL = len(jo['data']['albums'])
+ pgc = math.ceil(numvL/15)
+ for a in jo['data']['albums']:
+ aid = a['albumId']
+ img = 'http://imagev2.xmcdn.com/{0}'.format(a['albumCoverPath'])
+ name = a['albumTitle']
+ if a['vipType'] == 1:
+ remark = 'VIP'
+ else:
+ remark = ''
+ videos.append({
+ "vod_id": aid,
+ "vod_name": name,
+ "vod_pic": img,
+ "vod_remarks": remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = pgc
+ result['limit'] = numvL
+ result['total'] = numvL
+ return result
+
+ def detailContent(self,array):
+ aid = array[0]
+ header = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
+ "Referer": "https://www.ximalaya.com/album/{}/".format(aid)
+ }
+ pg = 1
+ url = 'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId={}&pageNum={}&pageSize=30'.format(aid, pg)
+ rsp = self.fetch(url, headers=header)
+ jo = json.loads(rsp.text)
+ items = jo['data']['tracks']
+ numjo = jo['data']['trackTotalCount']
+ while len(items) < numjo:
+ pg = pg + 1
+ url = 'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId={}&pageNum={}&pageSize=30'.format(aid, pg)
+ rsp = self.fetch(url, headers=header)
+ jo = json.loads(rsp.text)
+ items.extend(jo['data']['tracks'])
+ playUrl = ''
+ for item in items:
+ dir = item['anchorName'].strip()
+ act = item['anchorName'].strip()
+ title = item['albumTitle']
+ pic = 'http://imagev2.xmcdn.com/{0}'.format(item['albumCoverPath'])
+ year = item['createDateFormat'].split('-')[0]
+ cont = item['albumTitle']
+ name = item['title'].strip()
+ purl = item['trackId']
+ playUrl = playUrl + '{0}${1}#'.format(name, purl)
+ vod = {
+ "vod_id": aid,
+ "vod_name": title,
+ "vod_pic": pic,
+ "type_name": '',
+ "vod_year": year,
+ "vod_area": '',
+ "vod_remarks": '',
+ "vod_actor": act,
+ "vod_director": dir,
+ "vod_content": cont
+ }
+
+ vod['vod_play_from'] = '喜马拉雅'
+ vod['vod_play_url'] = playUrl
+
+ result = {
+ 'list': [
+ vod
+ ]
+ }
+ return result
+
+
+ def searchContent(self,key,quick):
+ header = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
+ "Referer": "https://www.ximalaya.com/"
+ }
+ url = 'https://www.ximalaya.com/revision/search/main?core=all&kw={}&spellchecker=true&device=iPhone&live=true'.format(key)
+ rsp = self.fetch(url, headers=header)
+ jo = json.loads(rsp.text)
+ items = jo['data']['album']['docs']
+ pg = 1
+ while pg < jo['data']['album']['totalPage']:
+ pg = pg + 1
+ url = 'https://www.ximalaya.com/revision/search/main?core=album&kw={0}&page={1}&spellchecker=true&rows=20&condition=relation&device=iPhone&fq=&paidFilter=false'.format(key, pg)
+ rsp = self.fetch(url, headers=header)
+ jo = json.loads(rsp.text)
+ items.extend(jo['data']['album']['docs'])
+ videos = []
+ for item in items:
+ name = item['title']
+ pic = item['coverPath']
+ if item['vipType'] == 1:
+ mark = 'VIP'
+ else:
+ mark = ''
+ sid = item['albumId']
+ videos.append({
+ "vod_id":sid,
+ "vod_name":name,
+ "vod_pic":pic,
+ "vod_remarks":mark
+ })
+ result = {
+ 'list': videos
+ }
+ return result
+
+ def playerContent(self,flag,id,vipFlags):
+ result = {}
+ header = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
+ "Referer": 'https://www.ximalaya.com/sound/{0}/'.format(id)
+ }
+ #这里是游客cookie,有vip的填入自己的会员cookie
+ cookies_str = '_xmLog=h5&48be63f9-2a8a-48e1-b923-d29486aac356&process.env.sdkVersion; xm-page-viewid=ximalaya-web; x_xmly_traffic=utm_source%253A%2526utm_medium%253A%2526utm_campaign%253A%2526utm_content%253A%2526utm_term%253A%2526utm_from%253A'
+ cookies_dic = dict([co.strip().split('=') for co in cookies_str.split(';')])
+ rsp = session()
+ cookies_jar = utils.cookiejar_from_dict(cookies_dic)
+ rsp.cookie = cookies_jar
+ url = 'https://www.ximalaya.com/revision/play/v1/audio?id={0}&ptype=1'.format(id)
+ rsp = self.fetch(url, cookies=rsp.cookie, headers=header)
+ jo = json.loads(rsp.text)
+ purl = jo['data']['src']
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = purl
+ result["header"] = ''
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ action = {
+ 'url':'',
+ 'header':'',
+ 'param':'',
+ 'type':'string',
+ 'after':''
+ }
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_yiso.py b/py/plugin/py_yiso.py
new file mode 100644
index 0000000..4ce5f65
--- /dev/null
+++ b/py/plugin/py_yiso.py
@@ -0,0 +1,63 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import requests
+
+class Spider(Spider):
+ def getDependence(self):
+ return ['py_ali']
+ def getName(self):
+ return "py_yiso"
+ def init(self,extend):
+ self.ali = extend[0]
+ print("============py_yiso============")
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ return result
+ def homeVideoContent(self):
+ result = {}
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ return result
+ header = {
+ "User-Agent": "Mozilla/5.0 (Linux; Android 12; V2049A Build/SP1A.210812.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/103.0.5060.129 Mobile Safari/537.36",
+ "Referer": "https://yiso.fun/"
+ }
+ def detailContent(self,array):
+ return self.ali.detailContent(array)
+
+ def searchContent(self,key,quick):
+ url = "https://yiso.fun/api/search?name={0}&from=ali".format(key)
+ vodList = requests.get(url=url, headers=self.header, verify=False).json()["data"]["list"]
+ videos = []
+ for vod in vodList:
+ videos.append({
+ "vod_id": vod["url"],
+ "vod_name": vod["fileInfos"][0]["fileName"],
+ "vod_pic": "https://inews.gtimg.com/newsapp_bt/0/13263837859/1000",
+ "vod_remarks": vod['gmtCreate']
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+
+ def playerContent(self,flag,id,vipFlags):
+ return self.ali.playerContent(flag,id,vipFlags)
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_yixi.json b/py/plugin/py_yixi.json
new file mode 100644
index 0000000..52b9dbb
--- /dev/null
+++ b/py/plugin/py_yixi.json
@@ -0,0 +1,126 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider):
+ def getName(self):
+ return "一席"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ url = 'https://yixi.tv/api/site/category/?_=1'
+ jo = self.fetch(url,headers=self.header).json()
+ category = jo['data']['items']
+ classes = []
+ classes.append({
+ 'type_name':'全部',
+ 'type_id':''
+ })
+ for cat in category:
+ classes.append({
+ 'type_name':cat['title'],
+ 'type_id':cat['id']
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ # url = 'https://yixi.tv/api/site/album/?page=1&page_size=4&_=1'
+ url = 'https://yixi.tv/api/site/album/22/detail/?page=1&page_size=24&_=1'
+ jo = self.fetch(url,headers=self.header).json()
+ videos = []
+ vodList = jo['data']['items']
+ for vod in vodList:
+ videos.append({
+ "vod_id":vod['id'],
+ "vod_name":vod['title'],
+ "vod_pic":vod['cover'],
+ "vod_remarks":vod['time']
+ })
+ result = {
+ 'list':videos
+ }
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ url = 'https://yixi.tv/api/site/speech/?page={1}&page_size=12&category_id={0}&order_by=0&_=1'.format(tid,pg)
+ jo = self.fetch(url,headers=self.header).json()
+ videos = []
+ vodList = jo['data']['items']
+ for vod in vodList:
+ videos.append({
+ "vod_id":vod['id'],
+ "vod_name":vod['title'],
+ "vod_pic":vod['cover'],
+ "vod_remarks":vod['time']
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def detailContent(self,array):
+ tid = array[0]
+ url = "https://yixi.tv/api/site/speech/{0}/detail/?_=1".format(tid)
+ jo = self.fetch(url,headers=self.header).json()
+
+ vod = {
+ "vod_id":jo['data']['speech']['id'],
+ "vod_name":jo['data']['speech']['title'],
+ "vod_pic":jo['data']['speech']['cover'],
+ "type_name":jo['data']['speech']['first_category'],
+ "vod_year":"",
+ "vod_area":"",
+ "vod_remarks":jo['data']['speech']['date'],
+ "vod_actor":"",
+ "vod_director":"",
+ "vod_content":jo['data']['speech']['titlelanguage']
+ }
+
+ vod['vod_play_from'] = '一席'
+ pList = []
+ for vUrl in jo['data']['speech']['video_url']:
+ pList.append(vUrl['type_name']+"$"+vUrl['video_url'])
+ vod['vod_play_url'] = '#'.join(pList)
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ result = {
+ 'list':[]
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ result = {}
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = id
+ result["header"] = ''
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {
+ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"
+ }
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/py_zhaozy.py b/py/plugin/py_zhaozy.py
new file mode 100644
index 0000000..b190658
--- /dev/null
+++ b/py/plugin/py_zhaozy.py
@@ -0,0 +1,85 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+
+class Spider(Spider):
+ def getDependence(self):
+ return ['py_ali']
+ def getName(self):
+ return "py_zhaozy"
+ def init(self,extend):
+ self.ali = extend[0]
+ print("============py_zhaozy============")
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ return result
+ def homeVideoContent(self):
+ result = {}
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ return result
+ header = {
+ "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
+ "Referer": "https://zhaoziyuan.la/"
+ }
+ def detailContent(self,array):
+ tid = array[0]
+ print(self.getName())
+ pattern = '(https://www.aliyundrive.com/s/[^\"]+)'
+ url = self.regStr(tid,pattern)
+ if len(url) > 0:
+ return self.ali.detailContent(array)
+
+ rsp = self.fetch('https://zhaoziyuan.la/'+tid)
+ url = self.regStr(rsp.text,pattern)
+ if len(url) == 0:
+ return ""
+ newArray = [url]
+ print(newArray)
+ return self.ali.detailContent(newArray)
+
+ def searchContent(self,key,quick):
+ map = {
+ '7':'文件夹',
+ '1':'视频'
+ }
+ ja = []
+ for tKey in map.keys():
+ url = "https://zhaoziyuan.la/so?filename={0}&t={1}".format(key,tKey)
+ rsp = self.fetch(url,headers=self.header)
+ root = self.html(self.cleanText(rsp.text))
+ aList = root.xpath("//li[@class='clear']//a")
+ for a in aList:
+ # title = a.xpath('./h3/text()')[0] + a.xpath('./p/text()')[0]
+ title = self.xpText(a,'./h3/text()') + self.xpText(a,'./p/text()')
+ pic = 'https://img0.baidu.com/it/u=603086994,1727626977&fm=253&fmt=auto?w=500&h=667'
+ jo = {
+ 'vod_id': self.xpText(a,'@href'),
+ 'vod_name': '[{0}]{1}'.format(key,title),
+ 'vod_pic': pic
+ }
+ ja.append(jo)
+ result = {
+ 'list':ja
+ }
+ return result
+
+ def playerContent(self,flag,id,vipFlags):
+ return self.ali.playerContent(flag,id,vipFlags)
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
\ No newline at end of file
diff --git a/py/plugin/sp360.py b/py/plugin/sp360.py
new file mode 100644
index 0000000..3ddbe26
--- /dev/null
+++ b/py/plugin/sp360.py
@@ -0,0 +1,123 @@
+# -*- coding:utf-8 -*-
+import requests
+import urllib3
+
+
+urllib3.util.timeout.Timeout._validate_timeout = lambda *args: 5 if args[2] != 'total' else None
+
+
+Tag = "sp360"
+Tag_name = "360影视"
+SiteSearch = "https://api.so.360kan.com"
+SiteDetail = "https://api.web.360kan.com"
+
+
+def getHeaders():
+ headers = {
+ "User-Agent": "Mozilla/5.0 (Linux; Android 12; V2049A Build/SP1A.210812.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/103.0.5060.129 Mobile Safari/537.36",
+ }
+ return headers
+
+
+def searchContent(key, token):
+ try:
+ url = f"{SiteSearch}/index?force_v=1&kw={key}&from=&pageno=1&v_ap=1&tab=all"
+ res = requests.get(url=url, headers=getHeaders()).json()
+ if len(res["data"]["longData"]):
+ lists = res["data"]["longData"]["rows"]
+ else:
+ return []
+ videos = []
+ for vod in lists:
+ videos.append({
+ "vod_id": f'{Tag}${vod.get("cat_id", "")}_{vod.get("en_id", "")}',
+ "vod_name": vod.get("titleTxt", ""),
+ "vod_pic": vod.get("cover", ""),
+ "vod_remarks": Tag_name + " " + vod.get("score", "")
+ })
+ return videos
+ except Exception as e:
+ print(e)
+ return []
+
+
+def detailContent(ids, token):
+ try:
+ id = ids.split("$")[-1].split("_")
+ url = f"{SiteDetail}/v1/detail?cat={id[0]}&id={id[1]}"
+ data = requests.get(url=url, headers=getHeaders()).json()["data"]
+ vodList = {
+ "vod_id": ids,
+ "vod_name": data.get("title", ""),
+ "vod_pic": data.get("cdncover", ""),
+ "type_name": ",".join(item for item in data.get("moviecategory", [])),
+ "vod_year": data.get("pubdate", ""),
+ "vod_area": ",".join(item for item in data.get("area", [])),
+ "vod_remarks": data.get("doubanscore", ""),
+ "vod_actor": ",".join(item for item in data.get("actor", [])),
+ "vod_director": ",".join(item for item in data.get("director", [])),
+ "vod_content": data.get("description", ""),
+ "vod_play_from": "$$$".join(item for item in data.get("playlink_sites", []))
+ }
+ delta = 200
+ vod_play = {}
+ for site in data.get("playlink_sites", []):
+ playList = ""
+ vodItems = []
+ if "allupinfo" in data:
+ total = int(data["allupinfo"][site])
+ for start in range(1, total, delta):
+ end = total if (start + delta) > total else start + delta - 1
+ vod_data = requests.get(
+ url=url,
+ params={
+ "start": start,
+ "end": end,
+ "site": site
+ },
+ headers=getHeaders()
+ ).json()["data"]
+ if "allepidetail" in vod_data:
+ vod_data = vod_data["allepidetail"]
+ for item in vod_data[site]:
+ vodItems.append(item.get("playlink_num", "") + "$" + f"{Tag}___" + item.get("url", ""))
+ else:
+ vod_data = vod_data['defaultepisode']
+ for item in vod_data:
+ vodItems.append(item.get('period', "") + item.get('name', "") + "$" + f"{Tag}___" + item.get("url", ""))
+ else:
+ item = data["playlinksdetail"][site]
+ vodItems.append(item.get("sort", "") + "$" + f"{Tag}___" + item.get("default_url", ""))
+ if len(vodItems):
+ playList = "#".join(vodItems)
+ if len(playList) == 0:
+ continue
+ vod_play.setdefault(site, playList)
+ if len(vod_play):
+ vod_play_url = "$$$".join(vod_play.values())
+ vodList.setdefault("vod_play_url", vod_play_url)
+ return [vodList]
+ except Exception as e:
+ print(e)
+ return []
+
+
+def playerContent(ids, flag, token):
+ try:
+ url = ids.split("___")[-1]
+ return {
+ "parse": 1,
+ "playUrl": "",
+ "jx": "1",
+ "url": url
+ }
+ except Exception as e:
+ print(e)
+ return {}
+
+
+if __name__ == '__main__':
+ # res = searchContent("月升沧海", "")
+ # res = searchContent("冰雨火", "")
+ res = detailContent('sp360$2_QbVqbX7lTGLrMH', "")
+ print(res)
\ No newline at end of file
diff --git a/py/plugin/初中教育.py b/py/plugin/初中教育.py
new file mode 100644
index 0000000..6fd1775
--- /dev/null
+++ b/py/plugin/初中教育.py
@@ -0,0 +1,278 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "初中"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "7年级地理":"7年级地理",
+ "7年级生物":"7年级生物",
+ "7年级物理":"7年级物理",
+ "7年级化学":"7年级化学",
+ "8年级语文":"8年级语文",
+ "8年级数学":"8年级数学",
+ "8年级英语":"8年级英语",
+ "8年级历史":"8年级历史",
+ "8年级地理":"8年级地理",
+ "8年级生物":"8年级生物",
+ "8年级物理":"8年级物理",
+ "8年级化学":"8年级化学",
+ "9年级语文":"9年级语文",
+ "9年级数学":"9年级数学",
+ "9年级英语":"9年级英语",
+ "9年级历史":"9年级历史",
+ "9年级地理":"9年级地理",
+ "9年级生物":"9年级生物",
+ "9年级物理":"9年级物理",
+ "9年级化学":"9年级化学"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ result = {
+ 'list':[]
+ }
+ return result
+ cookies = ''
+ def getCookie(self):
+ import requests
+ import http.cookies
+ # 这里填cookie
+ raw_cookie_line = "buvid3=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; LIVE_BUVID=AUTO4216125328906835; rpdid=|(umRum~uY~R0J'uYukYukkkY; balh_is_closed=; balh_server_inner=__custom__; PVID=4; video_page_version=v_old_home; i-wanna-go-back=-1; CURRENT_BLACKGAP=0; blackside_state=0; fingerprint=8965144a609d60190bd051578c610d72; buvid_fp_plain=undefined; CURRENT_QUALITY=120; hit-dyn-v2=1; nostalgia_conf=-1; buvid_fp=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; CURRENT_FNVAL=4048; DedeUserID=85342; DedeUserID__ckMd5=f070401c4c699c83; b_ut=5; hit-new-style-dyn=0; buvid4=15C64651-E8B7-100C-4B1F-C7CFD2DB473007906-022110820-jYQRaMeS%2BRXRfw14q70%2FLQ%3D%3D; b_nut=1667910208; b_lsid=3CE4AE79_184578915C0; is-2022-channel=1; innersign=0; SESSDATA=a5e4d58d%2C1683641322%2C2c39a%2Ab1; bili_jct=2f3126b5954e37f593130f2fef082cd8; sid=p7tjqv22; bp_video_offset_85342=726936847258746900"
+ simple_cookie = http.cookies.SimpleCookie(raw_cookie_line)
+ cookie_jar = requests.cookies.RequestsCookieJar()
+ cookie_jar.update(simple_cookie)
+ return cookie_jar
+ def get_dynamic(self,pg):
+ result = {}
+
+ url= 'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?timezone_offset=-480&type=all&page={0}'.format(pg)
+
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['items']
+ for vod in vodList:
+ if vod['type'] == 'DYNAMIC_TYPE_AV':
+ ivod = vod['modules']['module_dynamic']['major']['archive']
+ aid = str(ivod['aid']).strip()
+ title = ivod['title'].strip().replace("","").replace("","")
+ img = ivod['cover'].strip()
+ remark = str(ivod['duration_text']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def get_hot(self,pg):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/popular?ps=20&pn={0}'.format(pg)
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def get_rank(self):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = 1
+ result['pagecount'] = 1
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if tid == "热门":
+ return self.get_hot(pg=pg)
+ if tid == "排行榜" :
+ return self.get_rank()
+ if tid == '动态':
+ return self.get_dynamic(pg=pg)
+ url = 'https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword={0}&page={1}'.format(tid,pg)
+ if len(self.cookies) <= 0:
+ self.getCookie()
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] != 0:
+ rspRetry = self.fetch(url,cookies=self.getCookie())
+ content = rspRetry.text
+ jo = json.loads(content)
+ videos = []
+ vodList = jo['data']['result']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = tid + ":" + vod['title'].strip().replace("","").replace("","")
+ img = 'https:' + vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def cleanSpace(self,str):
+ return str.replace('\n','').replace('\t','').replace('\r','').replace(' ','')
+ def detailContent(self,array):
+ aid = array[0]
+ url = "https://api.bilibili.com/x/web-interface/view?aid={0}".format(aid)
+
+ rsp = self.fetch(url,headers=self.header,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ title = jo['title'].replace("","").replace("","")
+ pic = jo['pic']
+ desc = jo['desc']
+ typeName = jo['tname']
+ vod = {
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":typeName,
+ "vod_year":"",
+ "vod_area":"bilidanmu",
+ "vod_remarks":"",
+ "vod_actor":jo['owner']['name'],
+ "vod_director":jo['owner']['name'],
+ "vod_content":desc
+ }
+ ja = jo['pages']
+ playUrl = ''
+ for tmpJo in ja:
+ cid = tmpJo['cid']
+ part = tmpJo['part']
+ playUrl = playUrl + '{0}${1}_{2}#'.format(part,aid,cid)
+
+ vod['vod_play_from'] = 'B站'
+ vod['vod_play_url'] = playUrl
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ search = self.categoryContent(tid=key,pg=1,filter=None,extend=None)
+ result = {
+ 'list':search['list']
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ # https://www.555dianying.cc/vodplay/static/js/playerconfig.js
+ result = {}
+
+ ids = id.split("_")
+ url = 'https://api.bilibili.com:443/x/player/playurl?avid={0}&cid=%20%20{1}&qn=112'.format(ids[0],ids[1])
+ rsp = self.fetch(url,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ ja = jo['durl']
+
+ maxSize = -1
+ position = -1
+ for i in range(len(ja)):
+ tmpJo = ja[i]
+ if maxSize < int(tmpJo['size']):
+ maxSize = int(tmpJo['size'])
+ position = i
+
+ url = ''
+ if len(ja) > 0:
+ if position == -1:
+ position = 0
+ url = ja[position]['url']
+
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = url
+ result["header"] = {
+ "Referer":"https://www.bilibili.com",
+ "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
+ }
+ result["contentType"] = 'video/x-flv'
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
diff --git a/py/plugin/哔哩合集.json b/py/plugin/哔哩合集.json
new file mode 100644
index 0000000..602abe4
--- /dev/null
+++ b/py/plugin/哔哩合集.json
@@ -0,0 +1,4395 @@
+{
+
+ "classes": [
+
+ {
+ "type_name": "美食",
+ "type_id": "美食超清"
+ },
+ {
+ "type_name": "食谱",
+ "type_id": "食谱"
+ },
+ {
+ "type_name": "体育",
+ "type_id": "体育超清"
+ },
+ {
+ "type_name": "球星",
+ "type_id": "球星"
+ },
+ {
+ "type_name": "旅游",
+ "type_id": "旅游"
+ },
+ {
+ "type_name": "风景",
+ "type_id": "风景4K"
+ },
+ {
+ "type_name": "说案",
+ "type_id": "说案"
+ },
+ {
+ "type_name": "知名UP主",
+ "type_id": "知名UP主"
+ },
+ {
+ "type_name": "探索发现",
+ "type_id": "探索发现超清"
+ },
+ {
+ "type_name": "纪录片",
+ "type_id": "纪录片超清"
+ },
+ {
+ "type_name": "鬼畜",
+ "type_id": "鬼畜"
+ },
+ {
+ "type_name": "搞笑",
+ "type_id": "搞笑"
+ },
+ {
+ "type_name": "儿童",
+ "type_id": "儿童"
+ },
+ {
+ "type_name": "动物世界",
+ "type_id": "动物世界"
+ },
+ {
+ "type_name": "相声小品",
+ "type_id": "相声小品超清"
+ },
+ {
+ "type_name": "戏曲",
+ "type_id": "戏曲"
+ },
+ {
+ "type_name": "解说",
+ "type_id": "解说"
+ },
+
+ {
+ "type_name": "演讲",
+ "type_id": "演讲"
+ },
+ {
+ "type_name": "小姐姐",
+ "type_id": "小姐姐超清"
+ },
+ {
+ "type_name": "荒野求生",
+ "type_id": "荒野求生超清"
+ },
+ {
+ "type_name": "健身",
+ "type_id": "健身"
+ },
+ {
+ "type_name": "帕梅拉",
+ "type_id": "帕梅拉"
+ },
+ {
+ "type_name": "太极拳",
+ "type_id": "太极拳"
+ },
+
+ {
+ "type_name": "广场舞",
+ "type_id": "广场舞"
+ },
+ {
+ "type_name": "舞蹈",
+ "type_id": "舞蹈"
+ },
+ {
+ "type_name": "音乐",
+ "type_id": "音乐"
+ },
+ {
+ "type_name": "歌曲",
+ "type_id": "歌曲"
+ },
+ {
+ "type_name": "MV",
+ "type_id": "MV4K"
+ },
+ {
+ "type_name": "舞曲",
+ "type_id": "舞曲超清"
+ },
+ {
+ "type_name": "4K",
+ "type_id": "4K"
+ },
+ {
+ "type_name": "电影",
+ "type_id": "电影"
+ },
+ {
+ "type_name": "电视剧",
+ "type_id": "电视剧"
+ },
+ {
+ "type_name": "白噪音",
+ "type_id": "白噪音超清"
+ },
+ {
+ "type_name": "考公考证",
+ "type_id": "考公考证"
+ },
+
+ {
+ "type_name": "平面设计教学",
+ "type_id": "平面设计教学"
+ },
+ {
+ "type_name": "软件教程",
+ "type_id": "软件教程"
+ },
+ {
+ "type_name": "Windows",
+ "type_id": "Windows"
+ }
+
+ ],
+
+ "cookie":"_uuid=5E4B2B98-1014A-84D8-FA33-EC210C5BEC10DA82367infoc; buvid3=E9D0A426-85E9-E6C7-C75E-206A3E1BEB4D81910infoc; b_nut=1666168082; buvid4=4FC87B9C-3540-2275-688C-8612D3EA719B81910-022101916-ZLe640jXRAMHySuaCe9aUw==; rpdid=|(k|u)YYm)uY0J'uYYYuY)uuu; i-wanna-go-back=-1; fingerprint=9c214a6da0197a48e576ccf22e9f0ac7; buvid_fp_plain=undefined; nostalgia_conf=-1; DedeUserID=3493076028885079; DedeUserID__ckMd5=60a8757a1f4d6ae9; buvid_fp=9c214a6da0197a48e576ccf22e9f0ac7; CURRENT_QUALITY=80; b_ut=5; PVID=2; bp_video_offset_3493076028885079=undefined; bsource=search_google; SESSDATA=42b8ada6,1683277266,4bd05*b2; bili_jct=2dbe39aea02b41324395630a24d4775f; sid=89gnel66; innersign=0; b_lsid=9EF63922_1844D55A286; CURRENT_FNVAL=4048",
+
+ "filter": {
+ "考公考证": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "探索发现超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "电影": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "鬼畜": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "说案": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "说案"
+ },
+ {
+ "n": "汤圆",
+ "v": "汤圆说案"
+ },
+ {
+ "n": "唐唐",
+ "v": "唐唐说案"
+ },
+ {
+ "n": "罗翔",
+ "v": "罗翔说刑法"
+ },
+ {
+ "n": "何家弘",
+ "v": "何家弘说案"
+ },
+ {
+ "n": "韩诺",
+ "v": "韩诺说案"
+ },
+ {
+ "n": "老V",
+ "v": "老V说案"
+ },
+ {
+ "n": "禁播档案‼️",
+ "v": "禁播档案"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "演讲": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "全部演讲4K"
+ },
+ {
+ "n": "A艾跃进",
+ "v": "艾跃进演讲4K"
+ },
+ {
+ "n": "C超级演说家",
+ "v": "超级演说家4K"
+ },
+ {
+ "n": "D电影",
+ "v": "电影演讲4K"
+ },
+ {
+ "n": "D典籍里的中国",
+ "v": "典籍里的中国4K"
+ },
+ {
+ "n": "G感动中国",
+ "v": "感动中国4K"
+ },
+ {
+ "n": "G郭继承",
+ "v": "郭继承演讲4K"
+ },
+ {
+ "n": "H华春莹",
+ "v": "华春莹演讲4K"
+ },
+ {
+ "n": "L雷军",
+ "v": "雷军演讲4K"
+ },
+ {
+ "n": "L罗翔",
+ "v": "罗翔演讲4K"
+ },
+ {
+ "n": "R任正非",
+ "v": "任正非演讲4K"
+ },
+ {
+ "n": "TED",
+ "v": "TED演讲4K"
+ },
+ {
+ "n": "W汪文斌",
+ "v": "汪文斌演讲4K"
+ },
+ {
+ "n": "Y一刻",
+ "v": "一刻演讲4K"
+ },
+ {
+ "n": "Z赵立坚",
+ "v": "赵立坚演讲4K"
+ },
+ {
+ "n": "Z郑强",
+ "v": "郑强演讲4K"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "解说": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "解说"
+ },
+ {
+ "n": "电影",
+ "v": "电影解说"
+ },
+ {
+ "n": "电视",
+ "v": "电视解说"
+ },
+ {
+ "n": "历史",
+ "v": "历史解说"
+ },
+ {
+ "n": "动漫",
+ "v": "动漫解说"
+ },
+ {
+ "n": "小说",
+ "v": "小说解说"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "风景4K": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "风景4K"
+ },
+ {
+ "n": "A澳门",
+ "v": "澳门风景4K"
+ },
+ {
+ "n": "A安徽",
+ "v": "安徽风景4K"
+ },
+ {
+ "n": "B布达拉宫",
+ "v": "布达拉宫风景4K"
+ },
+ {
+ "n": "B北京",
+ "v": "北京风景4K"
+ },
+ {
+ "n": "C重庆",
+ "v": "重庆风景4K"
+ },
+ {
+ "n": "C草原",
+ "v": "草原风景4K"
+ },
+ {
+ "n": "D大海",
+ "v": "大海风景4K"
+ },
+ {
+ "n": "F福建",
+ "v": "福建风景4K"
+ },
+ {
+ "n": "G广东",
+ "v": "广东风景4K"
+ },
+ {
+ "n": "G广西",
+ "v": "广西风景4K"
+ },
+ {
+ "n": "G贵州",
+ "v": "贵州风景4K"
+ },
+ {
+ "n": "G甘肃",
+ "v": "甘肃风景4K"
+ },
+ {
+ "n": "H海南",
+ "v": "海南风景4K"
+ },
+ {
+ "n": "H河北",
+ "v": "河北风景4K"
+ },
+ {
+ "n": "H河南",
+ "v": "河南风景4K"
+ },
+ {
+ "n": "H湖北",
+ "v": "湖北风景4K"
+ },
+ {
+ "n": "H湖南",
+ "v": "湖南风景4K"
+ },
+ {
+ "n": "H黑龙江",
+ "v": "黑龙江风景4K"
+ },
+ {
+ "n": "J吉林",
+ "v": "吉林风景4K"
+ },
+ {
+ "n": "J江苏",
+ "v": "江苏风景4K"
+ },
+ {
+ "n": "J江西",
+ "v": "江西风景4K"
+ },
+ {
+ "n": "L辽宁",
+ "v": "辽宁风景4K"
+ },
+ {
+ "n": "M民宿",
+ "v": "民宿风景4K"
+ },
+ {
+ "n": "N内蒙古",
+ "v": "内蒙古风景4K"
+ },
+ {
+ "n": "N宁夏",
+ "v": "宁夏风景4K"
+ },
+ {
+ "n": "Q青海",
+ "v": "青海风景4K"
+ },
+ {
+ "n": "S上海",
+ "v": "上海风景4K"
+ },
+ {
+ "n": "S陕西",
+ "v": "陕西风景4K"
+ },
+ {
+ "n": "S四川",
+ "v": "四川风景4K"
+ },
+ {
+ "n": "S山西",
+ "v": "山西风景4K"
+ },
+ {
+ "n": "S山东",
+ "v": "山东风景4K"
+ },
+ {
+ "n": "T天津",
+ "v": "天津风景4K"
+ },
+ {
+ "n": "T台湾",
+ "v": "台湾风景4K"
+ },
+ {
+ "n": "T天空",
+ "v": "天空风景4K"
+ },
+ {
+ "n": "X西湖",
+ "v": "西湖风景4K"
+ },
+ {
+ "n": "X西藏",
+ "v": "西藏风景4K"
+ },
+ {
+ "n": "X新疆",
+ "v": "新疆风景4K"
+ },
+ {
+ "n": "X香港",
+ "v": "香港风景4K"
+ },
+ {
+ "n": "Y云南",
+ "v": "云南风景4K"
+ },
+ {
+ "n": "Z浙江",
+ "v": "浙江风景4K"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "MV4K": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "MV4K"
+ },
+ {
+ "n": "A阿杜",
+ "v": "阿杜MV4K"
+ },
+ {
+ "n": "A阿黛尔",
+ "v": "阿黛尔MV4K"
+ },
+ {
+ "n": "BBeyond",
+ "v": "BeyondMV4K"
+ },
+ {
+ "n": "BBy2",
+ "v": "By2MV4K"
+ },
+ {
+ "n": "BBIGBANG",
+ "v": "BIGBANGMV4K"
+ },
+ {
+ "n": "B布兰妮",
+ "v": "布兰妮MV4K"
+ },
+ {
+ "n": "C陈奕迅",
+ "v": "陈奕迅MV4K"
+ },
+ {
+ "n": "C蔡依林",
+ "v": "蔡依林MV4K"
+ },
+ {
+ "n": "C初音未来",
+ "v": "初音未来MV4K"
+ },
+ {
+ "n": "C蔡健雅",
+ "v": "蔡健雅MV4K"
+ },
+ {
+ "n": "C陈小春",
+ "v": "陈小春MV4K"
+ },
+ {
+ "n": "C草蜢",
+ "v": "草蜢MV4K"
+ },
+ {
+ "n": "C陈慧娴",
+ "v": "陈慧娴MV4K"
+ },
+ {
+ "n": "C崔健",
+ "v": "崔健MV4K"
+ },
+ {
+ "n": "C仓木麻衣",
+ "v": "仓木麻衣MV4K"
+ },
+ {
+ "n": "D戴荃",
+ "v": "戴荃MV4K"
+ },
+ {
+ "n": "D动力火车",
+ "v": "动力火车MV4K"
+ },
+ {
+ "n": "D邓丽君",
+ "v": "邓丽君MV4K"
+ },
+ {
+ "n": "D丁当",
+ "v": "丁当MV4K"
+ },
+ {
+ "n": "D刀郎",
+ "v": "刀郎MV4K"
+ },
+ {
+ "n": "D邓紫棋",
+ "v": "邓紫棋MV4K"
+ },
+ {
+ "n": "D戴佩妮",
+ "v": "戴佩妮MV4K"
+ },
+ {
+ "n": "D邓丽君",
+ "v": "邓丽君MV4K"
+ },
+ {
+ "n": "F飞儿乐队",
+ "v": "飞儿乐队MV4K"
+ },
+ {
+ "n": "F费玉清",
+ "v": "费玉清MV4K"
+ },
+ {
+ "n": "F费翔",
+ "v": "费翔MV4K"
+ },
+ {
+ "n": "F方大同",
+ "v": "方大同MV4K"
+ },
+ {
+ "n": "F房东的猫",
+ "v": "房东的猫MV4K"
+ },
+ {
+ "n": "F凤飞飞",
+ "v": "凤飞飞MV4K"
+ },
+ {
+ "n": "F凤凰传奇",
+ "v": "凤凰传奇MV4K"
+ },
+ {
+ "n": "G古风歌曲",
+ "v": "古风歌曲4K"
+ },
+ {
+ "n": "G国乐大典",
+ "v": "国乐大典4K"
+ },
+ {
+ "n": "G郭采洁",
+ "v": "郭采洁MV4K"
+ },
+ {
+ "n": "G光良",
+ "v": "光良MV4K"
+ },
+ {
+ "n": "G郭静",
+ "v": "郭静MV4K"
+ },
+ {
+ "n": "G郭富城",
+ "v": "郭富城MV4K"
+ },
+ {
+ "n": "H胡彦斌",
+ "v": "胡彦斌MV4K"
+ },
+ {
+ "n": "H胡夏",
+ "v": "胡夏MV4K"
+ },
+ {
+ "n": "H韩红",
+ "v": "韩红MV4K"
+ },
+ {
+ "n": "H黄品源",
+ "v": "黄品源MV4K"
+ },
+ {
+ "n": "H黄小琥",
+ "v": "黄小琥MV4K"
+ },
+ {
+ "n": "H花儿乐队",
+ "v": "花儿乐队MV4K"
+ },
+ {
+ "n": "H黄家强",
+ "v": "黄家强MV4K"
+ },
+ {
+ "n": "H后街男孩",
+ "v": "后街男孩MV4K"
+ },
+ {
+ "n": "J经典老歌",
+ "v": "经典老歌4K"
+ },
+ {
+ "n": "J贾斯丁比伯",
+ "v": "贾斯丁比伯MV4K"
+ },
+ {
+ "n": "J金池",
+ "v": "金池MV4K"
+ },
+ {
+ "n": "J金志文",
+ "v": "金志文MV4K"
+ },
+ {
+ "n": "J焦迈奇",
+ "v": "焦迈奇MV4K"
+ },
+ {
+ "n": "K筷子兄弟",
+ "v": "筷子兄弟MV4K"
+ },
+ {
+ "n": "L李玟",
+ "v": "李玟MV4K"
+ },
+ {
+ "n": "L林忆莲",
+ "v": "林忆莲MV4K"
+ },
+ {
+ "n": "L李克勤",
+ "v": "李克勤MV4K"
+ },
+ {
+ "n": "L刘宪华",
+ "v": "刘宪华MV4K"
+ },
+ {
+ "n": "L李圣杰",
+ "v": "李圣杰MV4K"
+ },
+ {
+ "n": "L林宥嘉",
+ "v": "林宥嘉MV4K"
+ },
+ {
+ "n": "L梁静茹",
+ "v": "梁静茹MV4K"
+ },
+ {
+ "n": "L李健",
+ "v": "李健MV4K"
+ },
+ {
+ "n": "L林俊杰",
+ "v": "林俊杰MV4K"
+ },
+ {
+ "n": "L李玉刚",
+ "v": "李玉刚MV4K"
+ },
+ {
+ "n": "L林志炫",
+ "v": "林志炫MV4K"
+ },
+ {
+ "n": "L李荣浩",
+ "v": "李荣浩MV4K"
+ },
+ {
+ "n": "L李宇春",
+ "v": "李宇春MV4K"
+ },
+ {
+ "n": "L洛天依",
+ "v": "洛天依MV4K"
+ },
+ {
+ "n": "L林子祥",
+ "v": "林子祥MV4K"
+ },
+ {
+ "n": "L李宗盛",
+ "v": "李宗盛MV4K"
+ },
+ {
+ "n": "L黎明",
+ "v": "黎明MV4K"
+ },
+ {
+ "n": "L刘德华",
+ "v": "刘德华MV4K"
+ },
+ {
+ "n": "L罗大佑",
+ "v": "罗大佑MV4K"
+ },
+ {
+ "n": "L林肯公园",
+ "v": "林肯公园MV4K"
+ },
+ {
+ "n": "LLadyGaga",
+ "v": "LadyGagaMV4K"
+ },
+ {
+ "n": "L旅行团乐队",
+ "v": "旅行团乐队MV4K"
+ },
+ {
+ "n": "M莫文蔚",
+ "v": "莫文蔚MV4K"
+ },
+ {
+ "n": "M毛不易",
+ "v": "毛不易MV4K"
+ },
+ {
+ "n": "M梅艳芳",
+ "v": "梅艳芳MV4K"
+ },
+ {
+ "n": "M迈克尔杰克逊",
+ "v": "迈克尔杰克逊MV4K"
+ },
+ {
+ "n": "N南拳妈妈",
+ "v": "南拳妈妈MV4K"
+ },
+ {
+ "n": "P朴树",
+ "v": "朴树MV4K"
+ },
+ {
+ "n": "Q齐秦",
+ "v": "齐秦MV4K"
+ },
+ {
+ "n": "Q青鸟飞鱼",
+ "v": "青鸟飞鱼MV4K"
+ },
+ {
+ "n": "R容祖儿",
+ "v": "容祖儿MV4K"
+ },
+ {
+ "n": "R热歌",
+ "v": "热歌MV4K"
+ },
+ {
+ "n": "R任贤齐",
+ "v": "任贤齐MV4K"
+ },
+ {
+ "n": "S水木年华",
+ "v": "水木年华MV4K"
+ },
+ {
+ "n": "S孙燕姿",
+ "v": "孙燕姿MV4K"
+ },
+ {
+ "n": "S苏打绿",
+ "v": "苏打绿MV4K"
+ },
+ {
+ "n": "SSHE",
+ "v": "SHEMV4K"
+ },
+ {
+ "n": "S孙楠",
+ "v": "孙楠MV4K"
+ },
+ {
+ "n": "T陶喆",
+ "v": "陶喆MV4K"
+ },
+ {
+ "n": "T谭咏麟",
+ "v": "谭咏麟MV4K"
+ },
+ {
+ "n": "T田馥甄",
+ "v": "田馥甄MV4K"
+ },
+ {
+ "n": "T谭维维",
+ "v": "谭维维MV4K"
+ },
+ {
+ "n": "T逃跑计划",
+ "v": "逃跑计划MV4K"
+ },
+ {
+ "n": "T田震",
+ "v": "田震MV4K"
+ },
+ {
+ "n": "T谭晶",
+ "v": "谭晶MV4K"
+ },
+ {
+ "n": "T屠洪刚",
+ "v": "屠洪刚MV4K"
+ },
+ {
+ "n": "T泰勒·斯威夫特",
+ "v": "泰勒·斯威夫特MV4K"
+ },
+ {
+ "n": "W王力宏",
+ "v": "王力宏MV4K"
+ },
+ {
+ "n": "W王杰",
+ "v": "王杰MV4K"
+ },
+ {
+ "n": "W吴克群",
+ "v": "吴克群MV4K"
+ },
+ {
+ "n": "W王心凌",
+ "v": "王心凌MV4K"
+ },
+ {
+ "n": "W汪峰",
+ "v": "汪峰MV4K"
+ },
+ {
+ "n": "W伍佰",
+ "v": "伍佰MV4K"
+ },
+ {
+ "n": "W王菲",
+ "v": "王菲MV4K"
+ },
+ {
+ "n": "W五月天",
+ "v": "五月天MV4K"
+ },
+ {
+ "n": "W汪苏泷",
+ "v": "汪苏泷MV4K"
+ },
+ {
+ "n": "X徐佳莹",
+ "v": "徐佳莹MV4K"
+ },
+ {
+ "n": "X弦子",
+ "v": "弦子MV4K"
+ },
+ {
+ "n": "X萧亚轩",
+ "v": "萧亚轩MV4K"
+ },
+ {
+ "n": "X许巍",
+ "v": "许巍MV4K"
+ },
+ {
+ "n": "X薛之谦",
+ "v": "薛之谦MV4K"
+ },
+ {
+ "n": "X许嵩",
+ "v": "许嵩MV4K"
+ },
+ {
+ "n": "X小虎队",
+ "v": "小虎队MV4K"
+ },
+ {
+ "n": "X萧敬腾",
+ "v": "萧敬腾MV4K"
+ },
+ {
+ "n": "X谢霆锋",
+ "v": "谢霆锋MV4K"
+ },
+ {
+ "n": "X徐小凤",
+ "v": "徐小凤MV4K"
+ },
+ {
+ "n": "X信乐队",
+ "v": "信乐队MV4K"
+ },
+ {
+ "n": "Y夜愿乐队",
+ "v": "夜愿乐队MV4K"
+ },
+ {
+ "n": "Y原创音乐",
+ "v": "原创音乐MV4K"
+ },
+ {
+ "n": "Y羽泉",
+ "v": "羽泉MV4K"
+ },
+ {
+ "n": "Y粤语",
+ "v": "粤语MV4K"
+ },
+ {
+ "n": "Y郁可唯",
+ "v": "郁可唯MV4K"
+ },
+ {
+ "n": "Y叶倩文",
+ "v": "叶倩文MV4K"
+ },
+ {
+ "n": "Y杨坤",
+ "v": "杨坤MV4K"
+ },
+ {
+ "n": "Y庾澄庆",
+ "v": "庾澄庆MV4K"
+ },
+ {
+ "n": "Y尤长靖",
+ "v": "尤长靖MV4K"
+ },
+ {
+ "n": "Y易烊千玺",
+ "v": "易烊千玺MV4K"
+ },
+ {
+ "n": "Y袁娅维",
+ "v": "袁娅维MV4K"
+ },
+ {
+ "n": "Y杨丞琳",
+ "v": "杨丞琳MV4K"
+ },
+ {
+ "n": "Y杨千嬅",
+ "v": "杨千嬅MV4K"
+ },
+ {
+ "n": "Y杨宗纬",
+ "v": "杨宗纬MV4K"
+ },
+ {
+ "n": "Z周杰伦",
+ "v": "周杰伦MV4K"
+ },
+ {
+ "n": "Z张学友",
+ "v": "张学友MV4K"
+ },
+ {
+ "n": "Z张信哲",
+ "v": "张信哲MV4K"
+ },
+ {
+ "n": "Z张宇",
+ "v": "张宇MV4K"
+ },
+ {
+ "n": "Z周华健",
+ "v": "周华健MV4K"
+ },
+ {
+ "n": "Z张韶涵",
+ "v": "张韶涵MV4K"
+ },
+ {
+ "n": "Z周深",
+ "v": "周深MV4K"
+ },
+ {
+ "n": "Z纵贯线",
+ "v": "纵贯线MV4K"
+ },
+ {
+ "n": "Z赵雷",
+ "v": "赵雷MV4K"
+ },
+ {
+ "n": "Z周传雄",
+ "v": "周传雄MV4K"
+ },
+ {
+ "n": "Z张国荣",
+ "v": "张国荣MV4K"
+ },
+ {
+ "n": "Z周慧敏",
+ "v": "周慧敏MV4K"
+ },
+ {
+ "n": "Z张惠妹",
+ "v": "张惠妹MV4K"
+ },
+ {
+ "n": "Z周笔畅",
+ "v": "周笔畅MV4K"
+ },
+ {
+ "n": "Z郑中基",
+ "v": "郑中基MV4K"
+ },
+ {
+ "n": "Z张艺兴",
+ "v": "张艺兴MV4K"
+ },
+ {
+ "n": "Z张震岳",
+ "v": "张震岳MV4K"
+ },
+ {
+ "n": "Z中国好声音",
+ "v": "中国好声音MV4K"
+ },
+ {
+ "n": "Z张雨生",
+ "v": "张雨生MV4K"
+ },
+ {
+ "n": "Z郑智化",
+ "v": "郑智化MV4K"
+ },
+ {
+ "n": "Z卓依婷",
+ "v": "卓依婷MV4K"
+ },
+ {
+ "n": "Z中岛美雪",
+ "v": "中岛美雪MV4K"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+
+ "帕梅拉": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "帕梅拉"
+ },
+ {
+ "n": "瘦腿",
+ "v": "帕梅拉瘦腿"
+ },
+ {
+ "n": "腹部",
+ "v": "帕梅拉腹部"
+ },
+ {
+ "n": "手臂",
+ "v": "帕梅拉手臂"
+ },
+ {
+ "n": "热身",
+ "v": "帕梅拉热身"
+ },
+ {
+ "n": "舞蹈",
+ "v": "帕梅拉舞蹈"
+ },
+ {
+ "n": "燃脂",
+ "v": "帕梅拉燃脂"
+ },
+ {
+ "n": "有氧",
+ "v": "帕梅拉有氧"
+ },
+ {
+ "n": "拉伸",
+ "v": "帕梅拉拉伸"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+
+ "知名UP主": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "知名UP主"
+ },
+ {
+ "n": "菠萝赛东",
+ "v": "菠萝赛东"
+ },
+ {
+ "n": "冯提莫",
+ "v": "冯提莫"
+ },
+ {
+ "n": "林延秋",
+ "v": "林延秋"
+ },
+ {
+ "n": "-LKs-",
+ "v": "-LKs-"
+ },
+ {
+ "n": "小约翰可汗",
+ "v": "小约翰可汗"
+ },
+ {
+ "n": "low馆长",
+ "v": "low馆长"
+ },
+ {
+ "n": "自说自话的总裁",
+ "v": "自说自话的总裁"
+ },
+ {
+ "n": "所长林超",
+ "v": "所长林超"
+ },
+ {
+ "n": "世界未解之谜M",
+ "v": "世界未解之谜M"
+ },
+ {
+ "n": "李永乐老师官方",
+ "v": "李永乐老师官方"
+ },
+ {
+ "n": "罗兹",
+ "v": "罗兹"
+ },
+ {
+ "n": "回到2049",
+ "v": "回到2049"
+ },
+ {
+ "n": "二次元的中科院物理所",
+ "v": "二次元的中科院物理所"
+ },
+ {
+ "n": "毕导THU",
+ "v": "毕导THU"
+ },
+ {
+ "n": "罗翔讲刑法",
+ "v": "罗翔讲刑法"
+ },
+ {
+ "n": "戴博士实验室",
+ "v": "戴博士实验室"
+ },
+ {
+ "n": "芳斯塔芙",
+ "v": "芳斯塔芙"
+ },
+ {
+ "n": "参赛者网",
+ "v": "参赛者网"
+ },
+ {
+ "n": "三维地图看世界",
+ "v": "三维地图看世界"
+ },
+ {
+ "n": "有机社会",
+ "v": "有机社会"
+ },
+ {
+ "n": "乌鸦校尉CaptainWuya",
+ "v": "乌鸦校尉CaptainWuya"
+ },
+ {
+ "n": "果壳",
+ "v": "果壳"
+ },
+ {
+ "n": "严伯钧",
+ "v": "严伯钧"
+ },
+ {
+ "n": "是你们的康康",
+ "v": "是你们的康康"
+ },
+ {
+ "n": "老爸评测",
+ "v": "老爸评测"
+ },
+ {
+ "n": "硬核的半佛仙人",
+ "v": "硬核的半佛仙人"
+ },
+ {
+ "n": "盗月社食遇记",
+ "v": "盗月社食遇记"
+ },
+ {
+ "n": "我是郭杰瑞",
+ "v": "我是郭杰瑞"
+ },
+ {
+ "n": "无穷小亮的科普日常",
+ "v": "无穷小亮的科普日常"
+ },
+ {
+ "n": "papi酱",
+ "v": "papi酱"
+ },
+ {
+ "n": "老番茄",
+ "v": "老番茄"
+ },
+ {
+ "n": "绵羊料理",
+ "v": "绵羊料理"
+ },
+ {
+ "n": "老师好我叫何同学",
+ "v": "老师好我叫何同学"
+ },
+ {
+ "n": "敬汉卿",
+ "v": "敬汉卿"
+ },
+ {
+ "n": "周六野Zoey",
+ "v": "周六野Zoey"
+ },
+ {
+ "n": "木鱼水心",
+ "v": "木鱼水心"
+ },
+ {
+ "n": "凉风Kaze",
+ "v": "凉风Kaze"
+ },
+ {
+ "n": "小潮院长",
+ "v": "小潮院长"
+ },
+ {
+ "n": "中国BOY超级大猩猩",
+ "v": "中国BOY超级大猩猩"
+ },
+ {
+ "n": "李子柒",
+ "v": "李子柒"
+ },
+ {
+ "n": "敖厂长",
+ "v": "敖厂长"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "太极拳": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "太极拳"
+ },
+ {
+ "n": "邱慧芳",
+ "v": "太极拳邱慧芳"
+ },
+ {
+ "n": "陈氏",
+ "v": "太极拳陈氏"
+ },
+ {
+ "n": "武当",
+ "v": "太极拳武当"
+ },
+ {
+ "n": "二十四式",
+ "v": "太极拳二十四式"
+ },
+ {
+ "n": "三十六式",
+ "v": "太极拳三十六式"
+ },
+ {
+ "n": "五禽戏",
+ "v": "五禽戏"
+ },
+ {
+ "n": "八段锦",
+ "v": "八段锦"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "舞蹈": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "舞蹈"
+ },
+ {
+ "n": "宅舞",
+ "v": "宅舞"
+ },
+ {
+ "n": "街舞",
+ "v": "街舞"
+ },
+ {
+ "n": "中国舞",
+ "v": "中国舞"
+ },
+ {
+ "n": "广场舞",
+ "v": "广场舞"
+ },
+ {
+ "n": "交谊舞",
+ "v": "交谊舞"
+ },
+ {
+ "n": "教程",
+ "v": "舞蹈教程"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "音乐": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "音乐"
+ },
+ {
+ "n": "钢琴曲",
+ "v": "钢琴曲"
+ },
+ {
+ "n": "协奏曲",
+ "v": "协奏曲r"
+ },
+ {
+ "n": "中国古风音乐",
+ "v": "中国古风音乐"
+ },
+ {
+ "n": "背景音乐",
+ "v": "背景音乐"
+ },
+ {
+ "n": "助眠音乐r",
+ "v": "助眠音乐"
+ },
+ {
+ "n": "胎教音乐",
+ "v": "胎教音乐"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "歌曲": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "歌曲"
+ },
+ {
+ "n": "香港歌曲",
+ "v": "香港歌曲"
+ },
+ {
+ "n": "台湾歌曲",
+ "v": "台湾歌曲"
+ },
+ {
+ "n": "内地歌曲",
+ "v": "内地歌曲"
+ },
+ {
+ "n": "英文歌曲",
+ "v": "英文歌曲"
+ },
+ {
+ "n": "日文歌曲",
+ "v": "日文歌曲"
+ },
+ {
+ "n": "小语种歌曲",
+ "v": "小语种歌曲"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "平面设计教学": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "平面设计教学"
+ },
+ {
+ "n": "Adobe Photoshop",
+ "v": "Adobe Photoshop教程"
+ },
+ {
+ "n": "Adobe Illustrator",
+ "v": "Adobe Illustrator教程"
+ },
+ {
+ "n": "CorelDRAW",
+ "v": "CorelDRAW教程"
+ },
+ {
+ "n": "Adobe InDesign",
+ "v": "Adobe InDesign教程"
+ },
+ {
+ "n": "Adobe Pagermaker",
+ "v": "Adobe Pagermaker教程"
+ },
+ {
+ "n": "SAI",
+ "v": "SAI教程"
+ },
+ {
+ "n": "Adobe Bridge",
+ "v": "Adobe Bridge教程"
+ },
+ {
+ "n": "Adobe Pagermaker",
+ "v": "Adobe Pagermake教程r"
+ },
+ {
+ "n": "3D Studio Max",
+ "v": "3D Studio Max教程"
+ },
+ {
+ "n": "PR",
+ "v": "PR教程"
+ },
+ {
+ "n": "AE",
+ "v": "AE教程"
+ },
+ {
+ "n": "CINEMA 4D",
+ "v": "CINEMA 4D教程"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "软件教程": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "软件教程"
+ },
+ {
+ "n": "MT管理器",
+ "v": "MT管理器"
+ },
+ {
+ "n": "NP管理器",
+ "v": "NP管理器"
+ },
+ {
+ "n": "mixplorer",
+ "v": "mixplorer"
+ },
+ {
+ "n": "脱壳",
+ "v": "脱壳"
+ },
+ {
+ "n": "爬虫",
+ "v": "爬虫"
+ },
+ {
+ "n": "json&jar",
+ "v": "json&jar"
+ },
+ {
+ "n": "网盘挂载",
+ "v": "网盘挂载"
+ },
+ {
+ "n": "alist+WebDav",
+ "v": "alist+WebDav"
+ },
+ {
+ "n": "TVBox修改",
+ "v": "TVBox修改教程"
+ },
+ {
+ "n": "EXCEL",
+ "v": "EXCEL教程"
+ },
+ {
+ "n": "Git入门到精通",
+ "v": "Git入门到精通"
+ },
+ {
+ "n": "java",
+ "v": "java教程"
+ },
+ {
+ "n": "phyton",
+ "v": "phyton教程"
+ },
+ {
+ "n": "xml",
+ "v": "xml教程"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "Windows": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "小姐姐超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "广场舞超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "舞曲超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "白噪音超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "搞笑": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "体育超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "4K": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "足球比赛合集超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "篮球超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "动物世界超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "荒野求生超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "纪录片超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+
+ "食谱": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "食谱"
+ },
+ {
+ "n": "川菜食谱",
+ "v": "川菜食谱"
+ },
+ {
+ "n": "豫菜食谱",
+ "v": "豫菜食谱"
+ },
+ {
+ "n": "淮扬菜食谱",
+ "v": "淮扬菜食谱"
+ },
+ {
+ "n": "湘菜食谱",
+ "v": "湘菜食谱"
+ },
+ {
+ "n": "鲁菜食谱",
+ "v": "鲁菜食谱"
+ },
+ {
+ "n": "粤菜食谱",
+ "v": "粤菜食谱"
+ },
+ {
+ "n": "潮菜食谱",
+ "v": "潮菜食谱"
+ },
+ {
+ "n": "浙菜食谱",
+ "v": "浙菜食谱"
+ },
+ {
+ "n": "徽菜食谱",
+ "v": "徽菜食谱"
+ },
+ {
+ "n": "闽菜食谱",
+ "v": "闽菜食谱"
+ },
+ {
+ "n": "苏菜食谱",
+ "v": "苏菜食谱"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "健身": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "健身"
+ },
+ {
+ "n": "瘦腿",
+ "v": "瘦腿"
+ },
+ {
+ "n": "腹部",
+ "v": "腹部"
+ },
+ {
+ "n": "手臂",
+ "v": "手臂"
+ },
+ {
+ "n": "热身",
+ "v": "热身"
+ },
+ {
+ "n": "帕梅拉",
+ "v": "帕梅拉"
+ },
+ {
+ "n": "燃脂",
+ "v": "燃脂"
+ },
+ {
+ "n": "有氧",
+ "v": "有氧"
+ },
+ {
+ "n": "拉伸",
+ "v": "拉伸"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "窗白噪音": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "美食超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "美食超清"
+ },
+ {
+ "n": "舌尖上的中国",
+ "v": "舌尖上的中国超清"
+ },
+ {
+ "n": "老字号",
+ "v": "老字号美食超清"
+ },
+ {
+ "n": "家常菜",
+ "v": "家常菜美食超清"
+ },
+ {
+ "n": "香港美食探店",
+ "v": "香港美食探店超清"
+ },
+ {
+ "n": "澳门美食探店",
+ "v": "澳门美食探店超清"
+ },
+ {
+ "n": "上海美食探店",
+ "v": "上海美食探店超清"
+ },
+ {
+ "n": "北京美食探店",
+ "v": "北京美食探店超清"
+ },
+ {
+ "n": "重庆美食探店",
+ "v": "重庆美食探店超清"
+ },
+ {
+ "n": "南京美食探店",
+ "v": "南京美食探店超清"
+ },
+ {
+ "n": "广州美食探店",
+ "v": "广州美食探店超清"
+ },
+ {
+ "n": "杭州美食探店",
+ "v": "杭州美食探店超清"
+ },
+ {
+ "n": "成都美食探店",
+ "v": "成都美食探店超清"
+ },
+ {
+ "n": "苏州美食探店",
+ "v": "苏州美食探店超清"
+ },
+ {
+ "n": "武汉美食探店",
+ "v": "武汉美食探店超清"
+ },
+ {
+ "n": "台湾美食探店",
+ "v": "台湾美食探店超清"
+ },
+ {
+ "n": "川菜",
+ "v": "川菜美食超清"
+ },
+ {
+ "n": "豫菜",
+ "v": "豫菜美食超清"
+ },
+ {
+ "n": "淮扬菜",
+ "v": "淮扬菜美食超清"
+ },
+ {
+ "n": "湘菜",
+ "v": "湘菜美食超清"
+ },
+ {
+ "n": "鲁菜",
+ "v": "鲁菜美食超清"
+ },
+ {
+ "n": "粤菜",
+ "v": "粤菜美食超清"
+ },
+ {
+ "n": "潮菜",
+ "v": "潮菜美食超清"
+ },
+ {
+ "n": "浙菜",
+ "v": "浙菜美食超清"
+ },
+ {
+ "n": "徽菜",
+ "v": "徽菜美食超清"
+ },
+ {
+ "n": "闽菜",
+ "v": "闽菜美食超清"
+ },
+ {
+ "n": "东北菜",
+ "v": "东北菜美食超清"
+ },
+ {
+ "n": "客家菜",
+ "v": "客家菜美食超清"
+ },
+ {
+ "n": "苏菜",
+ "v": "苏菜美食超清"
+ },
+
+ {
+ "n": "火锅",
+ "v": "火锅"
+ },
+ {
+ "n": "面食",
+ "v": "面食"
+ },
+ {
+ "n": "炒菜",
+ "v": "炒菜"
+ },
+ {
+ "n": "点心",
+ "v": "点心"
+ },
+ {
+ "n": "日料",
+ "v": "日料"
+ },
+ {
+ "n": "小吃",
+ "v": "小吃"
+ },
+ {
+ "n": "素食",
+ "v": "素食"
+ },
+ {
+ "n": "蒸菜",
+ "v": "蒸菜"
+ },
+ {
+ "n": "凉菜",
+ "v": "凉菜"
+ },
+ {
+ "n": "早餐",
+ "v": "早餐"
+ },
+ {
+ "n": "披萨",
+ "v": "披萨"
+ }, {
+ "n": "烤鱼",
+ "v": "烤鱼"
+ }, {
+ "n": "海鲜",
+ "v": "海鲜美食超清"
+ }, {
+ "n": "汉堡",
+ "v": "汉堡"
+ }, {
+ "n": "韩国菜",
+ "v": "韩国菜"
+ },
+ {
+ "n": "泰国菜",
+ "v": "泰国菜"
+ }, {
+ "n": "穆斯林菜",
+ "v": "穆斯林菜"
+ }, {
+ "n": "法国菜",
+ "v": "法国菜"
+ }, {
+ "n": "意大利菜",
+ "v": "意大利菜"
+ },
+ {
+ "n": "西班牙菜",
+ "v": "西班牙菜"
+ }, {
+ "n": "土耳其菜",
+ "v": "土耳其菜系"
+ }, {
+ "n": "阿拉伯菜",
+ "v": "阿拉伯菜"
+ }, {
+ "n": "德国菜",
+ "v": "德国菜"
+ }
+
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "广场舞": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "球星": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "球星"
+ },
+ {
+ "n": "梅西",
+ "v": "梅西"
+ },
+ {
+ "n": "C罗",
+ "v": "C罗"
+ },
+ {
+ "n": "天下足球",
+ "v": "天下足球"
+ },
+ {
+ "n": "罗纳尔多",
+ "v": "罗纳尔多"
+ },
+ {
+ "n": "亨利",
+ "v": "亨利"
+ },
+ {
+ "n": "小罗",
+ "v": "小罗"
+ },
+ {
+ "n": "齐达内",
+ "v": "齐达内"
+ },
+ {
+ "n": "贝克汉姆",
+ "v": "贝克汉姆"
+ },
+ {
+ "n": "内马尔",
+ "v": "内马尔"
+ },
+ {
+ "n": "德布劳内",
+ "v": "德布劳内"
+ },
+ {
+ "n": "欧冠",
+ "v": "欧冠"
+ },
+ {
+ "n": "世界杯",
+ "v": "世界杯"
+ },
+ {
+ "n": "西甲",
+ "v": "西甲"
+ },
+ {
+ "n": "英超",
+ "v": "英超"
+ },
+ {
+ "n": "意甲",
+ "v": "意甲"
+ },
+ {
+ "n": "德甲",
+ "v": "德甲"
+ },
+ {
+ "n": "国米",
+ "v": "国米"
+ },
+ {
+ "n": "皇马",
+ "v": "皇马"
+ },
+ {
+ "n": "巴萨",
+ "v": "巴萨"
+ },
+ {
+ "n": "巴黎圣日耳曼",
+ "v": "巴黎圣日耳曼"
+ },
+ {
+ "n": "曼联",
+ "v": "曼联"
+ },
+ {
+ "n": "曼城",
+ "v": "曼城"
+ },
+ {
+ "n": "NBA",
+ "v": "NBA"
+ },
+ {
+ "n": "詹姆斯",
+ "v": "詹姆斯"
+ },
+ {
+ "n": "库里",
+ "v": "库里"
+ },
+ {
+ "n": "杜兰特",
+ "v": "杜兰特"
+ },
+ {
+ "n": "UFC",
+ "v": "UFC"
+ },
+ {
+ "n": "斯诺克",
+ "v": "斯诺克"
+ },
+ {
+ "n": "网球",
+ "v": "网球"
+ },
+ {
+ "n": "F1",
+ "v": "F1"
+ },
+ {
+ "n": "高尔夫",
+ "v": "高尔夫"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "电视剧": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+
+
+ "相声小品超清": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "相声小品"
+ },
+ {
+ "n": "单口相声",
+ "v": "单口相声"
+ },
+ {
+ "n": "群口相声",
+ "v": "群口相声"
+ },
+ {
+ "n": "德云社",
+ "v": "德云社"
+ },
+ {
+ "n": "青曲社",
+ "v": "青曲社"
+ },
+ {
+ "n": "郭德纲",
+ "v": "郭德纲"
+ },
+ {
+ "n": "岳云鹏",
+ "v": "岳云鹏"
+ },
+ {
+ "n": "曹云金",
+ "v": "曹云金"
+ },
+ {
+ "n": "评书",
+ "v": "评书"
+ },
+ {
+ "n": "小曲",
+ "v": "小曲"
+ },
+ {
+ "n": "二人转",
+ "v": "二人转"
+ },
+ {
+ "n": "春晚小品",
+ "v": "春晚小品"
+ },
+ {
+ "n": "赵本山",
+ "v": "赵本山"
+ },
+ {
+ "n": "陈佩斯",
+ "v": "陈佩斯"
+ },
+ {
+ "n": "冯巩",
+ "v": "冯巩"
+ },
+ {
+ "n": "宋小宝",
+ "v": "宋小宝"
+ },
+ {
+ "n": "赵丽蓉",
+ "v": "赵丽蓉"
+ },
+ {
+ "n": "郭达",
+ "v": "郭达"
+ },
+ {
+ "n": "潘长江",
+ "v": "潘长江"
+ },
+ {
+ "n": "郭冬临",
+ "v": "郭冬临"
+ },
+ {
+ "n": "严顺开",
+ "v": "严顺开"
+ },
+ {
+ "n": "文松",
+ "v": "文松"
+ },
+ {
+ "n": "开心麻花",
+ "v": "开心麻花"
+ },
+ {
+ "n": "屌丝男士",
+ "v": "屌丝男士"
+ },
+ {
+ "n": "喜剧综艺",
+ "v": "喜剧综艺"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "戏曲": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "戏曲"
+ },
+ {
+ "n": "京剧",
+ "v": "京剧"
+ },
+ {
+ "n": "越剧",
+ "v": "越剧"
+ },
+ {
+ "n": "黄梅戏",
+ "v": "黄梅戏"
+ },
+ {
+ "n": "评剧",
+ "v": "评剧"
+ },
+ {
+ "n": "豫剧",
+ "v": "豫剧"
+ },
+ {
+ "n": "昆曲",
+ "v": "昆曲"
+ },
+ {
+ "n": "高腔",
+ "v": "高腔"
+ },
+ {
+ "n": "梆子腔",
+ "v": "梆子腔"
+ },
+ {
+ "n": "河北梆子",
+ "v": "河北梆子"
+ },
+ {
+ "n": "晋剧",
+ "v": "晋剧"
+ },
+ {
+ "n": "蒲剧",
+ "v": "蒲剧"
+ },
+ {
+ "n": "雁剧",
+ "v": "雁剧"
+ },
+ {
+ "n": "上党梆子",
+ "v": "上党梆子"
+ },
+ {
+ "n": "秦腔",
+ "v": "秦腔"
+ },
+ {
+ "n": "武安平调",
+ "v": "武安平调"
+ },
+ {
+ "n": "二人台",
+ "v": "二人台"
+ },
+ {
+ "n": "吉剧",
+ "v": "吉剧"
+ },
+ {
+ "n": "龙江剧",
+ "v": "龙江剧"
+ },
+ {
+ "n": "越调",
+ "v": "越调"
+ },
+ {
+ "n": "河南曲剧",
+ "v": "河南曲剧"
+ },
+ {
+ "n": "山东梆子",
+ "v": "山东梆子"
+ },
+ {
+ "n": "淮剧",
+ "v": "淮剧"
+ },
+ {
+ "n": "沪剧",
+ "v": "沪剧"
+ },
+ {
+ "n": "滑稽戏",
+ "v": "滑稽戏"
+ },
+ {
+ "n": "婺剧",
+ "v": "婺剧"
+ },
+ {
+ "n": "绍剧",
+ "v": "绍剧"
+ },
+ {
+ "n": "徽剧",
+ "v": "徽剧"
+ },
+ {
+ "n": "闽剧",
+ "v": "闽剧"
+ },
+ {
+ "n": "莆仙戏",
+ "v": "莆仙戏"
+ },
+ {
+ "n": "梨园戏",
+ "v": "梨园戏"
+ },
+ {
+ "n": "高甲戏",
+ "v": "高甲戏"
+ },
+ {
+ "n": "赣剧",
+ "v": "赣剧"
+ },
+ {
+ "n": "采茶戏",
+ "v": "采茶戏"
+ },
+ {
+ "n": "汉剧",
+ "v": "汉剧"
+ },
+ {
+ "n": "湘剧",
+ "v": "湘剧"
+ },
+ {
+ "n": "祁剧",
+ "v": "祁剧"
+ },
+ {
+ "n": "湖南花鼓戏",
+ "v": "湖南花鼓戏"
+ },
+ {
+ "n": "粤剧",
+ "v": "粤剧"
+ },
+ {
+ "n": "潮剧",
+ "v": "潮剧"
+ },
+ {
+ "n": "桂剧",
+ "v": "桂剧"
+ },
+ {
+ "n": "彩调",
+ "v": "彩调"
+ },
+ {
+ "n": "壮剧",
+ "v": "壮剧"
+ },
+ {
+ "n": "川剧",
+ "v": "川剧"
+ },
+ {
+ "n": "黔剧",
+ "v": "黔剧"
+ },
+ {
+ "n": "滇剧",
+ "v": "滇剧"
+ },
+ {
+ "n": "傣剧",
+ "v": "傣剧"
+ },
+ {
+ "n": "藏剧",
+ "v": "藏剧"
+ },
+ {
+ "n": "皮影戏",
+ "v": "皮影戏"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "旅游": [{
+ "key": "order",
+ "name": "排序",
+ "value": [{
+ "n": "综合排序",
+ "v": "0"
+ },
+ {
+ "n": "最多点击",
+ "v": "click"
+ },
+ {
+ "n": "最新发布",
+ "v": "pubdate"
+ },
+ {
+ "n": "最多弹幕",
+ "v": "dm"
+ },
+ {
+ "n": "最多收藏",
+ "v": "stow"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+
+ "游泳": [{
+ "key": "tid",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": "泳姿"
+ },
+ {
+ "n": "蝶泳",
+ "v": "蝶泳"
+ },
+ {
+ "n": "仰泳",
+ "v": "仰泳"
+ },
+ {
+ "n": "蛙泳",
+ "v": "蛙泳"
+ },
+ {
+ "n": "自由泳",
+ "v": "自由泳"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [{
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/py/plugin/搭讪.py b/py/plugin/搭讪.py
new file mode 100644
index 0000000..60c3e7b
--- /dev/null
+++ b/py/plugin/搭讪.py
@@ -0,0 +1,268 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "多多搭讪"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "美女搭讪":"美女搭讪",
+ "搭讪技巧":"搭讪技巧",
+ "女追男":"女追男",
+ "男追女":"男追女",
+ "街头搭讪":"街头搭讪",
+ "夜店搭讪":"夜店搭讪",
+ "商超搭讪":"商超搭讪",
+ "校园搭讪":"校园搭讪",
+ "搭讪失败":"搭讪失败"
+
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ result = {
+ 'list':[]
+ }
+ return result
+ cookies = ''
+ def getCookie(self):
+ import requests
+ import http.cookies
+ # 这里填cookie
+ raw_cookie_line = "buvid3=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; LIVE_BUVID=AUTO4216125328906835; rpdid=|(umRum~uY~R0J'uYukYukkkY; balh_is_closed=; balh_server_inner=__custom__; PVID=4; video_page_version=v_old_home; i-wanna-go-back=-1; CURRENT_BLACKGAP=0; blackside_state=0; fingerprint=8965144a609d60190bd051578c610d72; buvid_fp_plain=undefined; CURRENT_QUALITY=120; hit-dyn-v2=1; nostalgia_conf=-1; buvid_fp=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; CURRENT_FNVAL=4048; DedeUserID=85342; DedeUserID__ckMd5=f070401c4c699c83; b_ut=5; hit-new-style-dyn=0; buvid4=15C64651-E8B7-100C-4B1F-C7CFD2DB473007906-022110820-jYQRaMeS%2BRXRfw14q70%2FLQ%3D%3D; b_nut=1667910208; b_lsid=3CE4AE79_184578915C0; is-2022-channel=1; innersign=0; SESSDATA=a5e4d58d%2C1683641322%2C2c39a%2Ab1; bili_jct=2f3126b5954e37f593130f2fef082cd8; sid=p7tjqv22; bp_video_offset_85342=726936847258746900"
+ simple_cookie = http.cookies.SimpleCookie(raw_cookie_line)
+ cookie_jar = requests.cookies.RequestsCookieJar()
+ cookie_jar.update(simple_cookie)
+ return cookie_jar
+ def get_dynamic(self,pg):
+ result = {}
+
+ url= 'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?timezone_offset=-480&type=all&page={0}'.format(pg)
+
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['items']
+ for vod in vodList:
+ if vod['type'] == 'DYNAMIC_TYPE_AV':
+ ivod = vod['modules']['module_dynamic']['major']['archive']
+ aid = str(ivod['aid']).strip()
+ title = ivod['title'].strip().replace("","").replace("","")
+ img = ivod['cover'].strip()
+ remark = str(ivod['duration_text']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def get_hot(self,pg):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/popular?ps=20&pn={0}'.format(pg)
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def get_rank(self):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = 1
+ result['pagecount'] = 1
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if tid == "热门":
+ return self.get_hot(pg=pg)
+ if tid == "排行榜" :
+ return self.get_rank()
+ if tid == '动态':
+ return self.get_dynamic(pg=pg)
+ url = 'https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword={0}&page={1}'.format(tid,pg)
+ if len(self.cookies) <= 0:
+ self.getCookie()
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] != 0:
+ rspRetry = self.fetch(url,cookies=self.getCookie())
+ content = rspRetry.text
+ jo = json.loads(content)
+ videos = []
+ vodList = jo['data']['result']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = tid + ":" + vod['title'].strip().replace("","").replace("","")
+ img = 'https:' + vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def cleanSpace(self,str):
+ return str.replace('\n','').replace('\t','').replace('\r','').replace(' ','')
+ def detailContent(self,array):
+ aid = array[0]
+ url = "https://api.bilibili.com/x/web-interface/view?aid={0}".format(aid)
+
+ rsp = self.fetch(url,headers=self.header,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ title = jo['title'].replace("","").replace("","")
+ pic = jo['pic']
+ desc = jo['desc']
+ typeName = jo['tname']
+ vod = {
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":typeName,
+ "vod_year":"",
+ "vod_area":"bilidanmu",
+ "vod_remarks":"",
+ "vod_actor":jo['owner']['name'],
+ "vod_director":jo['owner']['name'],
+ "vod_content":desc
+ }
+ ja = jo['pages']
+ playUrl = ''
+ for tmpJo in ja:
+ cid = tmpJo['cid']
+ part = tmpJo['part']
+ playUrl = playUrl + '{0}${1}_{2}#'.format(part,aid,cid)
+
+ vod['vod_play_from'] = 'B站'
+ vod['vod_play_url'] = playUrl
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ search = self.categoryContent(tid=key,pg=1,filter=None,extend=None)
+ result = {
+ 'list':search['list']
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ # https://www.555dianying.cc/vodplay/static/js/playerconfig.js
+ result = {}
+
+ ids = id.split("_")
+ url = 'https://api.bilibili.com:443/x/player/playurl?avid={0}&cid=%20%20{1}&qn=112'.format(ids[0],ids[1])
+ rsp = self.fetch(url,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ ja = jo['durl']
+
+ maxSize = -1
+ position = -1
+ for i in range(len(ja)):
+ tmpJo = ja[i]
+ if maxSize < int(tmpJo['size']):
+ maxSize = int(tmpJo['size'])
+ position = i
+
+ url = ''
+ if len(ja) > 0:
+ if position == -1:
+ position = 0
+ url = ja[position]['url']
+
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = url
+ result["header"] = {
+ "Referer":"https://www.bilibili.com",
+ "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
+ }
+ result["contentType"] = 'video/x-flv'
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
diff --git a/py/plugin/搭配.py b/py/plugin/搭配.py
new file mode 100644
index 0000000..751e0b2
--- /dev/null
+++ b/py/plugin/搭配.py
@@ -0,0 +1,277 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "多多搭配"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "内衣":"内衣",
+ "男生搭配":"男生搭配",
+ "女生搭配":"女生搭配",
+ "裙子":"裙子",
+ "紧身裤":"紧身裤",
+ "吊带衫":"吊带衫",
+ "娃娃衣":"娃娃衣",
+ "牛仔裙":"牛仔裙",
+ "丝袜":"丝袜",
+"雪纺":"雪纺",
+ "礼服":"礼服",
+"裤子":"裤子",
+"西装":"西装",
+ "领带":"领带",
+ "衬衫":"衬衫",
+ "卫衣":"卫衣",
+ "T恤":"T恤",
+ "Polo衫":"Polo衫"
+
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ result = {
+ 'list':[]
+ }
+ return result
+ cookies = ''
+ def getCookie(self):
+ import requests
+ import http.cookies
+ # 这里填cookie
+ raw_cookie_line = "buvid3=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; LIVE_BUVID=AUTO4216125328906835; rpdid=|(umRum~uY~R0J'uYukYukkkY; balh_is_closed=; balh_server_inner=__custom__; PVID=4; video_page_version=v_old_home; i-wanna-go-back=-1; CURRENT_BLACKGAP=0; blackside_state=0; fingerprint=8965144a609d60190bd051578c610d72; buvid_fp_plain=undefined; CURRENT_QUALITY=120; hit-dyn-v2=1; nostalgia_conf=-1; buvid_fp=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; CURRENT_FNVAL=4048; DedeUserID=85342; DedeUserID__ckMd5=f070401c4c699c83; b_ut=5; hit-new-style-dyn=0; buvid4=15C64651-E8B7-100C-4B1F-C7CFD2DB473007906-022110820-jYQRaMeS%2BRXRfw14q70%2FLQ%3D%3D; b_nut=1667910208; b_lsid=3CE4AE79_184578915C0; is-2022-channel=1; innersign=0; SESSDATA=a5e4d58d%2C1683641322%2C2c39a%2Ab1; bili_jct=2f3126b5954e37f593130f2fef082cd8; sid=p7tjqv22; bp_video_offset_85342=726936847258746900"
+ simple_cookie = http.cookies.SimpleCookie(raw_cookie_line)
+ cookie_jar = requests.cookies.RequestsCookieJar()
+ cookie_jar.update(simple_cookie)
+ return cookie_jar
+ def get_dynamic(self,pg):
+ result = {}
+
+ url= 'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?timezone_offset=-480&type=all&page={0}'.format(pg)
+
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['items']
+ for vod in vodList:
+ if vod['type'] == 'DYNAMIC_TYPE_AV':
+ ivod = vod['modules']['module_dynamic']['major']['archive']
+ aid = str(ivod['aid']).strip()
+ title = ivod['title'].strip().replace("","").replace("","")
+ img = ivod['cover'].strip()
+ remark = str(ivod['duration_text']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def get_hot(self,pg):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/popular?ps=20&pn={0}'.format(pg)
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def get_rank(self):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = 1
+ result['pagecount'] = 1
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if tid == "热门":
+ return self.get_hot(pg=pg)
+ if tid == "排行榜" :
+ return self.get_rank()
+ if tid == '动态':
+ return self.get_dynamic(pg=pg)
+ url = 'https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword={0}&page={1}'.format(tid,pg)
+ if len(self.cookies) <= 0:
+ self.getCookie()
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] != 0:
+ rspRetry = self.fetch(url,cookies=self.getCookie())
+ content = rspRetry.text
+ jo = json.loads(content)
+ videos = []
+ vodList = jo['data']['result']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = tid + ":" + vod['title'].strip().replace("","").replace("","")
+ img = 'https:' + vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def cleanSpace(self,str):
+ return str.replace('\n','').replace('\t','').replace('\r','').replace(' ','')
+ def detailContent(self,array):
+ aid = array[0]
+ url = "https://api.bilibili.com/x/web-interface/view?aid={0}".format(aid)
+
+ rsp = self.fetch(url,headers=self.header,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ title = jo['title'].replace("","").replace("","")
+ pic = jo['pic']
+ desc = jo['desc']
+ typeName = jo['tname']
+ vod = {
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":typeName,
+ "vod_year":"",
+ "vod_area":"bilidanmu",
+ "vod_remarks":"",
+ "vod_actor":jo['owner']['name'],
+ "vod_director":jo['owner']['name'],
+ "vod_content":desc
+ }
+ ja = jo['pages']
+ playUrl = ''
+ for tmpJo in ja:
+ cid = tmpJo['cid']
+ part = tmpJo['part']
+ playUrl = playUrl + '{0}${1}_{2}#'.format(part,aid,cid)
+
+ vod['vod_play_from'] = 'B站'
+ vod['vod_play_url'] = playUrl
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ search = self.categoryContent(tid=key,pg=1,filter=None,extend=None)
+ result = {
+ 'list':search['list']
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ # https://www.555dianying.cc/vodplay/static/js/playerconfig.js
+ result = {}
+
+ ids = id.split("_")
+ url = 'https://api.bilibili.com:443/x/player/playurl?avid={0}&cid=%20%20{1}&qn=112'.format(ids[0],ids[1])
+ rsp = self.fetch(url,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ ja = jo['durl']
+
+ maxSize = -1
+ position = -1
+ for i in range(len(ja)):
+ tmpJo = ja[i]
+ if maxSize < int(tmpJo['size']):
+ maxSize = int(tmpJo['size'])
+ position = i
+
+ url = ''
+ if len(ja) > 0:
+ if position == -1:
+ position = 0
+ url = ja[position]['url']
+
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = url
+ result["header"] = {
+ "Referer":"https://www.bilibili.com",
+ "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
+ }
+ result["contentType"] = 'video/x-flv'
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
diff --git a/py/plugin/歌手合集.py b/py/plugin/歌手合集.py
new file mode 100644
index 0000000..d1704ab
--- /dev/null
+++ b/py/plugin/歌手合集.py
@@ -0,0 +1,419 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "歌手专辑"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "周杰伦":"周杰伦",
+"Beyond":"Beyond",
+"陈奕迅":"陈奕迅",
+"许巍":"许巍",
+"刘德华":"刘德华",
+"张学友":"张学友",
+"郭富城":"郭富城",
+"黎明":"黎明",
+"朴树":"朴树",
+"迪克牛仔":"迪克牛仔",
+"李宗盛":"李宗盛",
+"邓丽君":"邓丽君",
+"林子祥":"林子祥",
+"张信哲":"张信哲",
+"任贤齐":"任贤齐",
+"孙楠":"孙楠",
+"张宇":"张宇",
+"周华健":"周华健",
+"蔡依林":"蔡依林",
+"薛之谦":"薛之谦",
+"许嵩":"许嵩",
+"初音未来":"初音未来",
+"洛天依":"洛天依",
+"戴佩妮":"戴佩妮",
+"邓紫棋":"邓紫棋",
+"蔡健雅":"蔡健雅",
+"张韶涵":"张韶涵",
+"莫文蔚":"莫文蔚",
+"刘若英":"刘若英",
+"周深":"周深",
+"毛不易":"毛不易",
+"汪苏泷":"汪苏泷",
+"李宇春":"李宇春",
+"徐佳莹":"徐佳莹",
+"杨宗纬":"杨宗纬",
+"胡彦斌":"胡彦斌",
+"杨千嬅":"杨千嬅",
+"张靓颖":"张靓颖",
+"李荣浩":"李荣浩",
+"杨丞琳":"杨丞琳",
+"林志炫":"林志炫",
+"陶喆":"陶喆",
+"胡夏":"胡夏",
+"弦子":"弦子",
+"陈小春":"陈小春",
+"萧亚轩":"萧亚轩",
+"鹿晗":"鹿晗",
+"纵贯线":"纵贯线",
+"林俊杰":"林俊杰",
+"谭咏麟":"谭咏麟",
+"赵雷":"赵雷",
+"凤凰传奇":"凤凰传奇",
+"容祖儿":"容祖儿",
+"周传雄":"周传雄",
+"SHE":"SHE",
+"苏打绿":"苏打绿",
+"五月天":"五月天",
+"张国荣":"张国荣",
+"梅艳芳":"梅艳芳",
+"孙燕姿":"孙燕姿",
+"李健":"李健",
+"华晨宇":"华晨宇",
+"袁娅维":"袁娅维",
+"大张伟":"大张伟",
+"TFBOYS":"TFBOYS",
+"易烊千玺":"易烊千玺",
+"王俊凯":"王俊凯",
+"王源":"王源",
+"田馥甄":"田馥甄",
+"小虎队":"小虎队",
+"张杰":"张杰",
+"伍佰":"伍佰",
+"王菲":"王菲",
+"刀郎":"刀郎",
+"草蜢":"草蜢",
+"潘玮柏":"潘玮柏",
+"梁静茹":"梁静茹",
+"林宥嘉":"林宥嘉",
+"蔡徐坤":"蔡徐坤",
+"周慧敏":"周慧敏",
+"李圣杰":"李圣杰",
+"张惠妹":"张惠妹",
+"萧敬腾":"萧敬腾",
+"周笔畅":"周笔畅",
+"焦迈奇":"焦迈奇",
+"尤长靖":"尤长靖",
+"郑中基":"郑中基",
+"谭维维":"谭维维",
+"陈慧娴":"陈慧娴",
+"张艺兴":"张艺兴",
+"王嘉尔":"王嘉尔",
+"刘宪华":"刘宪华",
+"张敬轩":"张敬轩",
+"李克勤":"李克勤",
+"阿杜":"阿杜",
+"郭静":"郭静",
+"崔健":"崔健",
+"庾澄庆":"庾澄庆",
+"汪峰":"汪峰",
+"那英":"那英",
+"杨坤":"杨坤",
+"叶倩文":"叶倩文",
+"王心凌":"王心凌",
+"张震岳":"张震岳",
+"韩红":"韩红",
+"齐秦":"齐秦",
+"张雨生":"张雨生",
+"黄品源":"黄品源",
+"林忆莲":"林忆莲",
+"丁当":"丁当",
+"郑智化":"郑智化",
+"李玟":"李玟",
+"谢霆锋":"谢霆锋",
+"黄小琥":"黄小琥",
+"徐小凤":"徐小凤",
+"任嘉伦":"任嘉伦",
+"卓依婷":"卓依婷",
+"逃跑计划":"逃跑计划",
+"青鸟飞鱼":"青鸟飞鱼",
+"飞儿乐队":"飞儿乐队",
+"花儿乐队":"花儿乐队",
+"南拳妈妈":"南拳妈妈",
+"水木年华":"水木年华",
+"动力火车":"动力火车",
+"筷子兄弟":"筷子兄弟",
+"鹿先森乐队":"鹿先森乐队",
+"信乐队":"信乐队",
+"旅行团乐队":"旅行团乐队",
+"By2":"By2",
+"郁可唯":"郁可唯",
+"宋亚森":"宋亚森",
+"费玉清":"费玉清",
+"费翔":"费翔",
+"金志文":"金志文",
+"方大同":"方大同",
+"吴克群":"吴克群",
+"罗大佑":"罗大佑",
+"光良":"光良",
+"凤飞飞":"凤飞飞",
+"田震":"田震",
+"谭晶":"谭晶",
+"王杰":"王杰",
+"羽泉":"羽泉",
+"金池":"金池",
+"屠洪刚":"屠洪刚",
+"戴荃":"戴荃",
+"郭采洁":"郭采洁",
+"罗志祥":"罗志祥",
+"王力宏":"王力宏",
+"林肯公园":"林肯公园",
+"迈克尔杰克逊":"迈克尔杰克逊",
+"泰勒·斯威夫特":"泰勒·斯威夫特",
+"阿黛尔":"阿黛尔",
+"BIGBANG":"BIGBANG",
+"贾斯丁比伯":"贾斯丁比伯",
+"Lady Gaga":"Lady Gaga",
+"中岛美雪":"中岛美雪",
+"后街男孩":"后街男孩",
+"仓木麻衣":"仓木麻衣",
+"布兰妮":"布兰妮",
+"夜愿乐队":"夜愿乐队"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ result = {
+ 'list':[]
+ }
+ return result
+ cookies = ''
+ def getCookie(self):
+ import requests
+ import http.cookies
+ # 这里填cookie
+ raw_cookie_line = "buvid3=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; LIVE_BUVID=AUTO4216125328906835; rpdid=|(umRum~uY~R0J'uYukYukkkY; balh_is_closed=; balh_server_inner=__custom__; PVID=4; video_page_version=v_old_home; i-wanna-go-back=-1; CURRENT_BLACKGAP=0; blackside_state=0; fingerprint=8965144a609d60190bd051578c610d72; buvid_fp_plain=undefined; CURRENT_QUALITY=120; hit-dyn-v2=1; nostalgia_conf=-1; buvid_fp=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; CURRENT_FNVAL=4048; DedeUserID=85342; DedeUserID__ckMd5=f070401c4c699c83; b_ut=5; hit-new-style-dyn=0; buvid4=15C64651-E8B7-100C-4B1F-C7CFD2DB473007906-022110820-jYQRaMeS%2BRXRfw14q70%2FLQ%3D%3D; b_nut=1667910208; b_lsid=3CE4AE79_184578915C0; is-2022-channel=1; innersign=0; SESSDATA=a5e4d58d%2C1683641322%2C2c39a%2Ab1; bili_jct=2f3126b5954e37f593130f2fef082cd8; sid=p7tjqv22; bp_video_offset_85342=726936847258746900"
+ simple_cookie = http.cookies.SimpleCookie(raw_cookie_line)
+ cookie_jar = requests.cookies.RequestsCookieJar()
+ cookie_jar.update(simple_cookie)
+ return cookie_jar
+ def get_dynamic(self,pg):
+ result = {}
+
+ url= 'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?timezone_offset=-480&type=all&page={0}'.format(pg)
+
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['items']
+ for vod in vodList:
+ if vod['type'] == 'DYNAMIC_TYPE_AV':
+ ivod = vod['modules']['module_dynamic']['major']['archive']
+ aid = str(ivod['aid']).strip()
+ title = ivod['title'].strip().replace("","").replace("","")
+ img = ivod['cover'].strip()
+ remark = str(ivod['duration_text']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def get_hot(self,pg):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/popular?ps=20&pn={0}'.format(pg)
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def get_rank(self):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = 1
+ result['pagecount'] = 1
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if tid == "热门":
+ return self.get_hot(pg=pg)
+ if tid == "排行榜" :
+ return self.get_rank()
+ if tid == '动态':
+ return self.get_dynamic(pg=pg)
+ url = 'https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword={0}&page={1}'.format(tid,pg)
+ if len(self.cookies) <= 0:
+ self.getCookie()
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] != 0:
+ rspRetry = self.fetch(url,cookies=self.getCookie())
+ content = rspRetry.text
+ jo = json.loads(content)
+ videos = []
+ vodList = jo['data']['result']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = tid + ":" + vod['title'].strip().replace("","").replace("","")
+ img = 'https:' + vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def cleanSpace(self,str):
+ return str.replace('\n','').replace('\t','').replace('\r','').replace(' ','')
+ def detailContent(self,array):
+ aid = array[0]
+ url = "https://api.bilibili.com/x/web-interface/view?aid={0}".format(aid)
+
+ rsp = self.fetch(url,headers=self.header,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ title = jo['title'].replace("","").replace("","")
+ pic = jo['pic']
+ desc = jo['desc']
+ typeName = jo['tname']
+ vod = {
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":typeName,
+ "vod_year":"",
+ "vod_area":"bilidanmu",
+ "vod_remarks":"",
+ "vod_actor":jo['owner']['name'],
+ "vod_director":jo['owner']['name'],
+ "vod_content":desc
+ }
+ ja = jo['pages']
+ playUrl = ''
+ for tmpJo in ja:
+ cid = tmpJo['cid']
+ part = tmpJo['part']
+ playUrl = playUrl + '{0}${1}_{2}#'.format(part,aid,cid)
+
+ vod['vod_play_from'] = 'B站'
+ vod['vod_play_url'] = playUrl
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ search = self.categoryContent(tid=key,pg=1,filter=None,extend=None)
+ result = {
+ 'list':search['list']
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ # https://www.555dianying.cc/vodplay/static/js/playerconfig.js
+ result = {}
+
+ ids = id.split("_")
+ url = 'https://api.bilibili.com:443/x/player/playurl?avid={0}&cid=%20%20{1}&qn=112'.format(ids[0],ids[1])
+ rsp = self.fetch(url,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ ja = jo['durl']
+
+ maxSize = -1
+ position = -1
+ for i in range(len(ja)):
+ tmpJo = ja[i]
+ if maxSize < int(tmpJo['size']):
+ maxSize = int(tmpJo['size'])
+ position = i
+
+ url = ''
+ if len(ja) > 0:
+ if position == -1:
+ position = 0
+ url = ja[position]['url']
+
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = url
+ result["header"] = {
+ "Referer":"https://www.bilibili.com",
+ "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
+ }
+ result["contentType"] = 'video/x-flv'
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]
diff --git a/py/plugin/高中教育.py b/py/plugin/高中教育.py
new file mode 100644
index 0000000..687f8dc
--- /dev/null
+++ b/py/plugin/高中教育.py
@@ -0,0 +1,287 @@
+#coding=utf-8
+#!/usr/bin/python
+import sys
+sys.path.append('..')
+from base.spider import Spider
+import json
+import time
+import base64
+
+class Spider(Spider): # 元类 默认的元类 type
+ def getName(self):
+ return "高中"
+ def init(self,extend=""):
+ print("============{0}============".format(extend))
+ pass
+ def isVideoFormat(self,url):
+ pass
+ def manualVideoCheck(self):
+ pass
+ def homeContent(self,filter):
+ result = {}
+ cateManual = {
+ "高一语文":"高一语文",
+ "高一数学":"高一数学",
+ "高一英语":"高一英语",
+ "高一历史":"高一历史",
+"高一地理":"高一地理",
+ "高一生物":"高一生物",
+ "高一思想政治":"高一思想政治",
+"高一物理":"高一物理",
+ "高一化学":"高一化学",
+"高二语文":"高二语文",
+ "高二数学":"高二数学",
+ "高二英语":"高二英语",
+ "高二历史":"高二历史",
+"高二地理":"高二地理",
+ "高二生物":"高二生物",
+ "高二思想政治":"高二思想政治",
+"高二物理":"高二物理",
+ "高二化学":"高二化学",
+"高三语文":"高三语文",
+ "高三数学":"高三数学",
+ "高三英语":"高三英语",
+ "高三历史":"高三历史",
+"高三地理":"高三地理",
+ "高三生物":"高三生物",
+ "高三思想政治":"高三思想政治",
+"高三物理":"高三物理",
+ "高三化学":"高三化学",
+"高中信息技术":"高中信息技术",
+ "高中信息技术":"高中信息技术"
+ }
+ classes = []
+ for k in cateManual:
+ classes.append({
+ 'type_name':k,
+ 'type_id':cateManual[k]
+ })
+ result['class'] = classes
+ if(filter):
+ result['filters'] = self.config['filter']
+ return result
+ def homeVideoContent(self):
+ result = {
+ 'list':[]
+ }
+ return result
+ cookies = ''
+ def getCookie(self):
+ import requests
+ import http.cookies
+ # 这里填cookie
+ raw_cookie_line = "buvid3=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; LIVE_BUVID=AUTO4216125328906835; rpdid=|(umRum~uY~R0J'uYukYukkkY; balh_is_closed=; balh_server_inner=__custom__; PVID=4; video_page_version=v_old_home; i-wanna-go-back=-1; CURRENT_BLACKGAP=0; blackside_state=0; fingerprint=8965144a609d60190bd051578c610d72; buvid_fp_plain=undefined; CURRENT_QUALITY=120; hit-dyn-v2=1; nostalgia_conf=-1; buvid_fp=CFF74DA7-E79E-4B53-BB96-FC74AB8CD2F3184997infoc; CURRENT_FNVAL=4048; DedeUserID=85342; DedeUserID__ckMd5=f070401c4c699c83; b_ut=5; hit-new-style-dyn=0; buvid4=15C64651-E8B7-100C-4B1F-C7CFD2DB473007906-022110820-jYQRaMeS%2BRXRfw14q70%2FLQ%3D%3D; b_nut=1667910208; b_lsid=3CE4AE79_184578915C0; is-2022-channel=1; innersign=0; SESSDATA=a5e4d58d%2C1683641322%2C2c39a%2Ab1; bili_jct=2f3126b5954e37f593130f2fef082cd8; sid=p7tjqv22; bp_video_offset_85342=726936847258746900"
+ simple_cookie = http.cookies.SimpleCookie(raw_cookie_line)
+ cookie_jar = requests.cookies.RequestsCookieJar()
+ cookie_jar.update(simple_cookie)
+ return cookie_jar
+ def get_dynamic(self,pg):
+ result = {}
+
+ url= 'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?timezone_offset=-480&type=all&page={0}'.format(pg)
+
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['items']
+ for vod in vodList:
+ if vod['type'] == 'DYNAMIC_TYPE_AV':
+ ivod = vod['modules']['module_dynamic']['major']['archive']
+ aid = str(ivod['aid']).strip()
+ title = ivod['title'].strip().replace("","").replace("","")
+ img = ivod['cover'].strip()
+ remark = str(ivod['duration_text']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+
+ def get_hot(self,pg):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/popular?ps=20&pn={0}'.format(pg)
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def get_rank(self):
+ result = {}
+ url= 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] == 0:
+ videos = []
+ vodList = jo['data']['list']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = vod['title'].strip().replace("","").replace("","")
+ img = vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = 1
+ result['pagecount'] = 1
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def categoryContent(self,tid,pg,filter,extend):
+ result = {}
+ if tid == "热门":
+ return self.get_hot(pg=pg)
+ if tid == "排行榜" :
+ return self.get_rank()
+ if tid == '动态':
+ return self.get_dynamic(pg=pg)
+ url = 'https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword={0}&page={1}'.format(tid,pg)
+ if len(self.cookies) <= 0:
+ self.getCookie()
+ rsp = self.fetch(url,cookies=self.getCookie())
+ content = rsp.text
+ jo = json.loads(content)
+ if jo['code'] != 0:
+ rspRetry = self.fetch(url,cookies=self.getCookie())
+ content = rspRetry.text
+ jo = json.loads(content)
+ videos = []
+ vodList = jo['data']['result']
+ for vod in vodList:
+ aid = str(vod['aid']).strip()
+ title = tid + ":" + vod['title'].strip().replace("","").replace("","")
+ img = 'https:' + vod['pic'].strip()
+ remark = str(vod['duration']).strip()
+ videos.append({
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":img,
+ "vod_remarks":remark
+ })
+ result['list'] = videos
+ result['page'] = pg
+ result['pagecount'] = 9999
+ result['limit'] = 90
+ result['total'] = 999999
+ return result
+ def cleanSpace(self,str):
+ return str.replace('\n','').replace('\t','').replace('\r','').replace(' ','')
+ def detailContent(self,array):
+ aid = array[0]
+ url = "https://api.bilibili.com/x/web-interface/view?aid={0}".format(aid)
+
+ rsp = self.fetch(url,headers=self.header,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ title = jo['title'].replace("","").replace("","")
+ pic = jo['pic']
+ desc = jo['desc']
+ typeName = jo['tname']
+ vod = {
+ "vod_id":aid,
+ "vod_name":title,
+ "vod_pic":pic,
+ "type_name":typeName,
+ "vod_year":"",
+ "vod_area":"bilidanmu",
+ "vod_remarks":"",
+ "vod_actor":jo['owner']['name'],
+ "vod_director":jo['owner']['name'],
+ "vod_content":desc
+ }
+ ja = jo['pages']
+ playUrl = ''
+ for tmpJo in ja:
+ cid = tmpJo['cid']
+ part = tmpJo['part']
+ playUrl = playUrl + '{0}${1}_{2}#'.format(part,aid,cid)
+
+ vod['vod_play_from'] = 'B站'
+ vod['vod_play_url'] = playUrl
+
+ result = {
+ 'list':[
+ vod
+ ]
+ }
+ return result
+ def searchContent(self,key,quick):
+ search = self.categoryContent(tid=key,pg=1,filter=None,extend=None)
+ result = {
+ 'list':search['list']
+ }
+ return result
+ def playerContent(self,flag,id,vipFlags):
+ # https://www.555dianying.cc/vodplay/static/js/playerconfig.js
+ result = {}
+
+ ids = id.split("_")
+ url = 'https://api.bilibili.com:443/x/player/playurl?avid={0}&cid=%20%20{1}&qn=112'.format(ids[0],ids[1])
+ rsp = self.fetch(url,cookies=self.getCookie())
+ jRoot = json.loads(rsp.text)
+ jo = jRoot['data']
+ ja = jo['durl']
+
+ maxSize = -1
+ position = -1
+ for i in range(len(ja)):
+ tmpJo = ja[i]
+ if maxSize < int(tmpJo['size']):
+ maxSize = int(tmpJo['size'])
+ position = i
+
+ url = ''
+ if len(ja) > 0:
+ if position == -1:
+ position = 0
+ url = ja[position]['url']
+
+ result["parse"] = 0
+ result["playUrl"] = ''
+ result["url"] = url
+ result["header"] = {
+ "Referer":"https://www.bilibili.com",
+ "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
+ }
+ result["contentType"] = 'video/x-flv'
+ return result
+
+ config = {
+ "player": {},
+ "filter": {}
+ }
+ header = {}
+
+ def localProxy(self,param):
+ return [200, "video/MP2T", action, ""]