更新央视筛选

This commit is contained in:
晚风拂柳颜 2024-01-14 13:39:00 +08:00
parent 80d8ec0566
commit 5b4fb26453
3 changed files with 59 additions and 33 deletions

View File

@ -1 +1 @@
3.9.49beta24
3.9.49beta25

View File

@ -12,6 +12,7 @@ except ImportError:
import json
import time
import base64
import datetime
import re
from urllib import request, parse
from pathlib import Path
@ -229,6 +230,24 @@ class Spider(BaseSpider): # 元类 默认的元类 type
ext_file = os.path.join(os.path.dirname(__file__), './' + ext + '.json')
init_file(ext_file)
# ==================== 栏目大全加载年月筛选 ======================
lanmu_list = self.config['filter']['栏目大全']
lanmu_keys_list = [lanmu['key'] for lanmu in lanmu_list]
if 'year' not in lanmu_keys_list:
currentYear = datetime.date.today().year
yearList = [{"n": "全部", "v": ""}]
for year in range(currentYear, currentYear - 10, -1):
yearList.append({"n": year, "v": year})
yearDict = {"key": "year", "name": "年份", "value": yearList}
lanmu_list.append(yearDict)
if 'month' not in lanmu_keys_list:
monthList = [{"n": "全部", "v": ""}]
for month in range(1, 13):
text = str(month).rjust(2, '0')
monthList.append({"n": text, "v": text})
monthDict = {"key": "month", "name": "月份", "value": monthList}
lanmu_list.append(monthDict)
# 装载模块,这里只要一个就够了
if isinstance(extend, list):
for lib in extend:
@ -279,6 +298,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
channel = '' # 频道
datafl = '' # 类型
letter = '' # 字母
year_prefix = '' # 栏目大全的年月筛选过滤
pagecount = 24
if tid == '动画片':
id = urllib.parse.quote(tid)
@ -332,6 +352,10 @@ class Spider(BaseSpider): # 元类 默认的元类 type
fl = '' # 字母
if 'fl' in extend.keys():
fl = extend['fl']
year = extend.get('year') or ''
month = extend.get('month') or ''
if year:
year_prefix = year + month
url = 'https://api.cntv.cn/lanmu/columnSearch?&fl={0}&fc={1}&cid={2}&p={3}&n=20&serviceId=tvcctv&t=json&cb=ko'.format(
fl, fc, cid, pg)
pagecount = 20
@ -349,7 +373,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
index = htmlText.rfind(');')
if index > -1:
htmlText = htmlText[3:index]
videos = self.get_list1(html=htmlText, tid=tid)
videos = self.get_list1(html=htmlText, tid=tid, year_prefix=year_prefix)
elif tid == '4K专区':
index = htmlText.rfind(');')
if index > -1:
@ -369,7 +393,12 @@ class Spider(BaseSpider): # 元类 默认的元类 type
def detailContent(self, array):
result = {}
aid = array[0].split('||')
year_prefix = ''
did = array[0]
if '$$$' in did:
year_prefix = did.split('$$$')[0]
did = did.split('$$$')[1]
aid = did.split('||')
tid = aid[0]
logo = aid[3]
lastVideo = aid[2]
@ -385,10 +414,23 @@ class Spider(BaseSpider): # 元类 默认的元类 type
# htmlTxt = self.webReadFile(urlStr=lastUrl, header=self.header)
htmlTxt = self.fetch(lastUrl).text
topicId = json.loads(htmlTxt)['ctid']
Url = "https://api.cntv.cn/NewVideo/getVideoListByColumn?id={0}&d=&p=1&n=100&sort=desc&mode=0&serviceId=tvcctv&t=json".format(
topicId)
# htmlTxt = self.webReadFile(urlStr=Url, header=self.header)
htmlTxt = self.fetch(Url).text
url = 'https://api.cntv.cn/NewVideo/getVideoListByColumn'
# params = {
# 'p': '1',
# 'n': '100',
# 't': 'json',
# 'mode': '0',
# 'sort': 'desc',
# 'serviceId': 'tvcctv',
# 'd': year_prefix,
# 'id': topicId
# }
# htmlTxt = self.fetch(url,data=params).text
Url = "{0}?id={1}&d=&p=1&n=100&sort=desc&mode=0&serviceId=tvcctv&t=json&d={2}".format(
url, topicId, year_prefix)
elif tid == "4K专区":
Url = 'https://api.cntv.cn/NewVideo/getVideoListByAlbumIdNew?id={0}&serviceId=cctv4k&p=1&n=100&mode=0&pub=1'.format(
id)
@ -571,17 +613,6 @@ class Spider(BaseSpider): # 元类 默认的元类 type
{"n": "Z", "v": "Z"}, {"n": "0-9", "v": "0-9"}]}
],
"纪录片": [
{"key": "datapd-channel", "name": "频道",
"value": [{"n": "全部", "v": ""}, {"n": "CCTV{1 综合", "v": "CCTV{1 综合"},
{"n": "CCTV{2 财经", "v": "CCTV{2 财经"}, {"n": "CCTV{3 综艺", "v": "CCTV{3 综艺"},
{"n": "CCTV{4 中文国际", "v": "CCTV{4 中文国际"}, {"n": "CCTV{5 体育", "v": "CCTV{5 体育"},
{"n": "CCTV{6 电影", "v": "CCTV{6 电影"}, {"n": "CCTV{7 国防军事", "v": "CCTV{7 国防军事"},
{"n": "CCTV{8 电视剧", "v": "CCTV{8 电视剧"}, {"n": "CCTV{9 纪录", "v": "CCTV{9 纪录"},
{"n": "CCTV{10 科教", "v": "CCTV{10 科教"}, {"n": "CCTV{11 戏曲", "v": "CCTV{11 戏曲"},
{"n": "CCTV{12 社会与法", "v": "CCTV{12 社会与法"},
{"n": "CCTV{13 新闻", "v": "CCTV{13 新闻"}, {"n": "CCTV{14 少儿", "v": "CCTV{14 少儿"},
{"n": "CCTV{15 音乐", "v": "CCTV{15 音乐"},
{"n": "CCTV{17 农业农村", "v": "CCTV{17 农业农村"}]},
{"key": "datafl-sc", "name": "类型",
"value": [{"n": "全部", "v": ""}, {"n": "人文历史", "v": "人文历史"}, {"n": "人物", "v": "人物"},
{"n": "军事", "v": "军事"}, {"n": "探索", "v": "探索"}, {"n": "社会", "v": "社会"},
@ -604,17 +635,6 @@ class Spider(BaseSpider): # 元类 默认的元类 type
{"n": "Z", "v": "Z"}, {"n": "0-9", "v": "0-9"}]}
],
"特别节目": [
{"key": "datapd-channel", "name": "频道",
"value": [{"n": "全部", "v": ""}, {"n": "CCTV{1 综合", "v": "CCTV{1 综合"},
{"n": "CCTV{2 财经", "v": "CCTV{2 财经"}, {"n": "CCTV{3 综艺", "v": "CCTV{3 综艺"},
{"n": "CCTV{4 中文国际", "v": "CCTV{4 中文国际"}, {"n": "CCTV{5 体育", "v": "CCTV{5 体育"},
{"n": "CCTV{6 电影", "v": "CCTV{6 电影"}, {"n": "CCTV{7 国防军事", "v": "CCTV{7 国防军事"},
{"n": "CCTV{8 电视剧", "v": "CCTV{8 电视剧"}, {"n": "CCTV{9 纪录", "v": "CCTV{9 纪录"},
{"n": "CCTV{10 科教", "v": "CCTV{10 科教"}, {"n": "CCTV{11 戏曲", "v": "CCTV{11 戏曲"},
{"n": "CCTV{12 社会与法", "v": "CCTV{12 社会与法"},
{"n": "CCTV{13 新闻", "v": "CCTV{13 新闻"}, {"n": "CCTV{14 少儿", "v": "CCTV{14 少儿"},
{"n": "CCTV{15 音乐", "v": "CCTV{15 音乐"},
{"n": "CCTV{17 农业农村", "v": "CCTV{17 农业农村"}]},
{"key": "datafl-sc", "name": "类型",
"value": [{"n": "全部", "v": ""}, {"n": "全部", "v": "全部"}, {"n": "新闻", "v": "新闻"},
{"n": "经济", "v": "经济"}, {"n": "综艺", "v": "综艺"}, {"n": "体育", "v": "体育"},
@ -810,7 +830,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
})
return videos
def get_list1(self, html, tid):
def get_list1(self, html, tid, year_prefix=None):
jRoot = json.loads(html)
videos = []
data = jRoot['response']
@ -832,7 +852,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
guid = "||".join(guids)
# print(vod_id)
videos.append({
"vod_id": guid,
"vod_id": year_prefix + '$$$' + guid if year_prefix else guid,
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc.split('')[1].strip() if '' in desc else desc.strip()
@ -915,7 +935,8 @@ if __name__ == '__main__':
spider = Spider()
t4_spider_init(spider)
print(spider.homeVideoContent())
# print(spider.homeContent(True))
# print(spider.homeVideoContent())
# spider.init_api_ext_file()
# url = 'https://api.cntv.cn/lanmu/columnSearch?&fl=&fc=%E6%96%B0%E9%97%BB&cid=&p=1&n=20&serviceId=tvcctv&t=jsonp&cb=Callback'
# url = 'https://api.cntv.cn/lanmu/columnSearch?&fl=&fc=&cid=&p=1&n=20&serviceId=tvcctv&t=json&cb=ko'

View File

@ -8,6 +8,8 @@
import os.path
import sys
import requests
sys.path.append('..')
try:
# from base.spider import Spider as BaseSpider
@ -449,7 +451,10 @@ if __name__ == '__main__':
# spider.log('====文本内容====')
# print(spider.homeContent(True))
# print(spider.homeVideoContent())
print(spider.categoryContent('0', 1, False, None))
r = requests.head(
'http://192.168.31.49:5707/api/v1/vod/%E5%93%94%E6%BB%B4%E5%BD%B1%E8%A7%86?proxy=1&do=py&url=https://www.bde4.cc/10E79044B82A84F70BE1308FFA5232E4DC3D0CA9EC2BF6B1D4EF56B2CE5B67CF238965CCAE17F859665B7E166720986D.m3u8')
print(r.headers, r.content)
# print(spider.categoryContent('0', 1, False, None))
# print(spider.detailContent([24420]))
# spider.searchContent('斗罗大陆')
# print(spider.playerContent('至尊线路', 'vip://https://www.bdys03.com/api/v1/playurl/174296?type=1', None))