更新线路

整体线路:20250816
南风线路:20250816
潇洒线路: v08.16(14)
This commit is contained in:
Liu
2025-08-16 22:54:04 +08:00
parent f3ea98de75
commit 67b003c6c3
14 changed files with 872 additions and 1235 deletions

View File

@@ -1,5 +1,5 @@
# tvboxtg
#
整体更新25.08.13
整体更新25.08.16
#
The resources are sourced from the internet and are only used for learning purposes. Please delete them yourself 24 hours after using them for learning.

View File

@@ -4,7 +4,7 @@
"sites":[
{"key":"Tg|豆瓣","name":"🔍Tg豆瓣┃本接口免费-🈲贩卖","type":3,"api":"csp_TgYunDouBanPan","searchable":1,"changeable":0,"ext":{"siteUrl":"http://127.0.0.1:9999","count":4,"channelUsername":"bdwpzhpd,bdwpzhpd,alyp_TV,ucquark,wp123zy,oneonefivewpfx,tyypzhpd,cloudtianyi,ydypzyfx,yunpan139,guaguale115,Mbox115,shares_115,zaihuayun,PanjClub,NewQuark,yunpanpan,kuake_movie,Quark_Movies,alyp_4K_Movies,alyp_TV,yunpanshare,shareAliyun,alyp_1,BaiduCloudDisk","commonConfig":"./json/peizhi.json","filter":"./json/douban.json"}},
{"key":"弹幕","name":"🅿弹幕|搜索","type":3,"api":"csp_Huban","jar":"https://jihulab.com/yoursmile66/TVBox/-/raw/main/HubanTC.jar"},
{"key":"弹幕","name":"🅿弹幕|搜索","type":3,"api":"csp_Huban","jar":"https://jihulab.com/yoursmile6/TVBox/-/raw/main/HubanTC.jar"},
{"key":"ConfigCenter","name":"🅿网盘配置中心","type":3,"api":"csp_ConfigCenter","searchable":0,"changeable":0,"ext":{"commonConfig":"./json/peizhi.json"}},
{"key":"csp_Gz360","name":"🍉瓜子","type":3,"api":"csp_Gz360","searchable":1,"quickSearch":1,"filterable":1},
{"key":"csp_LiteApple","name":"🍎苹果","type":3,"api":"csp_LiteApple","searchable":1,"quickSearch":1,"filterable":1},
@@ -33,7 +33,6 @@
{"key":"影视大全","name":"🎞影视大全","type":3,"api":"csp_XBPQ","ext":{"分类url":"https://www.iysdq.cc/vodshow/{cateId}-{area}-------{catePg}---.html","分类":"电影$1#电视剧$2#综艺$3#动漫$4#短剧$5"}},
{"key":"永乐","name":"🍰永乐","type":3,"api":"csp_XBPQ","searchable":1,"quickSearch":1,"filterable":1,"ext":{"请求头":"User-Agent$MOBILE_UA","编码":"UTF-8","分类":"电影$1#电视剧$2#综艺$3#动漫$4","类型":"动作片$6#喜剧片$7#爱情片$8#科幻片$9#奇幻片$10#恐怖片$11#剧情片$12#战争片$20#动画片$26#悬疑片$22#冒险片$23#犯罪片$24#惊悚片$45#歌舞片$46#灾难片$47#网络片$48||国产剧$13#港台剧$14#日剧$15#韩剧$33#欧美剧$16#泰剧$34#新马剧$35#其他剧$25||内地综艺$27#港台综艺$28#日本综艺$29#韩国综艺$36#欧美综艺$30#新马泰综艺$37#其他综艺$38||国产动漫$31#日本动漫$32#韩国动漫$39#港台动漫$40#新马泰动漫$41#欧美动漫$42#其他动漫$43","分类url":"https://www.ylys.tv/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html"}},
{"key":"面包","name":"🎁面包","type":3,"api":"csp_XBPQ","searchable":1,"quickSearch":1,"filterable":1,"ext":{"请求头":"User-Agent$MOBILE_UA","编码":"UTF-8","分类url":"https://v.aiwule.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html","分类":"电影$20#电视剧$21#动漫$23#综艺$22#短剧$47","简介":"简介:&&"}},
{"key":"西瓜","name":"🍉西瓜","type":3,"api":"csp_XBPQ","searchable":1,"quickSearch":1,"filterable":1,"ext":{"主页url":"https://sszzyy.com/","分类url":"https://sszzyy.com/index.php/vod/show/id/{cateId}/page/{catePg}.html","分类":"电影$20#剧集$37","标题":"title=\"*\">&&</div>","图片":"data-original=\"&&\"","链接":"href=\"&&\"","播放数组":"content_playlist&&</ul>","播放列表":"<a&&</a>","播放标题":">&&</a>","跳转播放链接":"src=\"&&\"","线路数组":"class=\"titleName cr3 swiper-slide&&</a>","线路标题":">&&</a>"}},
{"key":"ZXZJ","name":"🏠在线","api":"csp_Zxzj","type":3,"searchable":1,"quickSearch":1,"filterable":1,"ext":"7lj763gg402i7942463j9j9jgg449698khhh845ki38473"},
{"key":"csp_Jiaozi","name":"🥣饺子","type":3,"api":"csp_Jiaozi","searchable":1,"quickSearch":1,"filterable":1},
{"key":"csp_Ddys","name":"📺低端","type":3,"api":"csp_Ddys","searchable":1,"quickSearch":1,"filterable":1},
@@ -65,7 +64,7 @@
{"key":"多多","name":"🌟多多","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"./json/peizhi.json","siteUrl":"https://tv.yydsys.top","filter":"./json/wogg.json"}},
{"key":"星剧社","name":"⭐️星剧社","type":3,"api":"csp_Star2","searchable":1,"filterable":0,"switchable":0,"ext":{"siteUrl":"https://1.star2.cn","commonConfig":"./json/peizhi.json"}},
{"key":"csp_PanSearch","name":"📀盘搜索","type":3,"api":"csp_PanSearch","searchable":1,"changeable":0,"ext":{"commonConfig":"./json/peizhi.json"}},
{"key":"木偶","name":"🧸木偶","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"./json/peizhi.json","siteUrl":"https://123.91muou.icu/","filter":"./json/wogg.json"}},
{"key":"木偶","name":"🧸木偶","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"./json/peizhi.json","siteUrl":"http://123.666291.xyz/","filter":"./json/wogg.json"}},
{"key":"闪电","name":"⚡闪电","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"./json/peizhi.json","siteUrl":"http://1.95.79.193","filter":"./json/wogg.json"}},
{"key":"盘Ta","name":"🍥盘Ta","type":3,"api":"csp_PanTa","searchable":1,"filterable":0,"switchable":0,"ext":{"siteUrl":"https://www.91panta.cn/","commonConfig":"./json/peizhi.json"}},
{"key":"AList","name":"🅰AList","type":3,"api":"csp_AList","searchable":1,"changeable":0,"ext":"./json/alist.json"},

View File

@@ -179,6 +179,13 @@
"filterable": 1,
"ext": "https://www.wwgz.cn"
},
{
"key": "csp_FreeOk",
"name": "👌Frek┃影视",
"type": 3,
"quickSearch": 0,
"api": "csp_FreeOk"
},
{
"key": "斗量",
"name": "🎃南瓜┃APP",
@@ -194,7 +201,7 @@
"type": 3,
"api": "csp_AppSy",
"quickSearch": 0,
"ext": "AUQ6gwosItxIVIl5lW4mhEtvhUCPptryd1HJ1YWlyhMUjanBk/MQ/w1C7FSy6t+ixWAXOVu69YmFiPrBGvM6iAGDIL6ietolI05Xt9wOc/k="
"ext": "Qrf5S6Si5oF7dQyuv+Srh3uh0lT3z1Y7u59ip9hRVeWtPAwa8PAzOjbdregJfgecQjmbgYlvm+1rK87EwCqgaovlgh315Qrh90D+nl+f08o="
},
{
"key": "热热",
@@ -237,15 +244,42 @@
"apisignkey": "lvdoutv-1.0.0"
}
},
{
"key": "菲菲",
"name": "🐱加菲┃影视",
"type": 3,
"quickSearch": 0,
"searchable": 1,
"api": "csp_AppQi",
"ext": "BciM/oLDYQqSU++RAsI5xz2Dmz98Blyw0pp0T+0QPiq/bSU1IhcLmPsn25NijfG6B3fLoAmVGEL0/tWb+o0nZYn1u5i3pWNxWaYYmNV1x0c="
},
{
"key": "比迪",
"name": "🐕比迪┃影视",
"type": 3,
"quickSearch": 0,
"playerType": 1,
"searchable": 1,
"api": "csp_AppQi",
"ext": "HM+RJliOAzVbMKoUegXt5SVTp6lV507+wK0S5QCxiEEA9zs/swmgAb3z+F5RUY21tC1US86Wo/2RunTWZsPUxuLk0B4X5G0RneEJEfEV4CWzDmIx8mdFYBlSJiwJcoNYioDEVsg76bXpsGDfXTT4Mb092SQ1oS22g2A1GUtEcn8="
},
{
"key": "咖啡",
"name": "☕咖啡┃影视",
"type": 3,
"quickSearch": 0,
"searchable": 1,
"api": "csp_AppGet",
"api": "csp_AppQi",
"ext": "iCAfNu0lnzDbPNyRZNPADkQjEsRXYXbhzP+dNzKN1SEfbPPIOKvEKGUJbNHH/Enk8UofJl+f8LL+N/h69EZDaFMMPeCDLq9N1TV0aTDfIY89NkrX+nhIaX9d//xiiVns"
},
{
"key": "鲸鱼影视",
"name": "🐟鲸鱼┃APP",
"type": 3,
"api": "csp_AppQi",
"quickSearch": 0,
"ext": "rP+4azM8YFgp3eAhyeALtUUEFpbkqmzGj2V5VZryxRbpkSjlsHbarRCZPOInvId4s3WK9rZ2YJsDy8NvMqQKQd58LGascWuvwraVoz2iK+s="
},
{
"key": "大豆",
"name": "✅大豆┃影视",
@@ -267,37 +301,12 @@
"ext": "7lj763gg402i79425739i7jghj118797l4hj840gi18633331l4708g2h7145403549g44l8ii56i187681hkjj3hhgh1ih3l32j250lk1k786lj20j468hk3hli4l46gig4i3g7g2722328j0136h01i7g5183k22k7gg3i72hk81gl8k9839kl7i0707"
},
{
"key": "huomaoys",
"name": "🎬️火猫┃影视",
"type": 3,
"searchable": 1,
"key": "金牌APP",
"name": "💣爆炸┃影视",
"quickSearch": 0,
"api": "csp_Muou",
"jar": "./jars/巧技.jar",
"playerType": 2,
"ext": "7lj763gg0939790i413gi484k8058896highi4414h68l7g6hk8qiaojig9k2k289l9ik807i213k5j602"
},
{
"key": "酒客",
"name": "🍺️酒猫┃影视",
"type": 3,
"searchable": 1,
"quickSearch": 0,
"api": "csp_Muou",
"jar": "./jars/巧技.jar",
"playerType": 2,
"ext": "7lj763gg402i7942593ki4jkhl458k99highi4qiaoji41456iikg49i839k2k289l9ik807i213k6j60h"
},
{
"key": "金牌app",
"name": "🎬️爆炸┃影视",
"type": 3,
"searchable": 1,
"quickSearch": 0,
"api": "csp_Muou",
"jar": "./jars/巧技.jar",
"playerType": 2,
"ext": "7lj763gg402i79425i3l85i6h848i295l5hiji5l828g3l3jjhg6kg7410lhjkqiaojij3ig1lg475178k7h0il4ig3h753h7hi516758699jh2g5h433li30gk11g73l90312h4g7"
"api": "csp_AppMuou",
"ext": "ewogICJTaXRlVXJsIjogImh0dHBzOi8vbXVvdS53bGJicS54eXoiLAogICJFeHQiOiAiaXA5K1dadnQ5ODNzUzAwOGtyTktobno4Q2Fzb2d3QjlLYkp2U0FmNGJRZEg5aUlGVHE4Y0tGM3Y4RFBicnphUiIsCiAgIkluZm8iOiAiaHR0cHM6Ly9tdW91aHQuZ2d0dmIuY2MiCn0="
},
{
"key": "公公",
@@ -368,15 +377,6 @@
"api": "csp_Czsapp",
"ext": "https://www.czzymovie.com"
},
{
"key": "测试",
"name": "🐓剧霸┃影视",
"type": 3,
"searchable": 0,
"quickSearch": 1,
"api": "./api/jubaba.py",
"ext": ""
},
{
"key": "csp_MiSou",
"name": "🔍米搜┃盘搜",

View File

@@ -1,315 +0,0 @@
# -*- coding: utf-8 -*-
# by @嗷呜
import json
import random
import re
import sys
import time
from base64 import b64decode, b64encode
import concurrent.futures
import requests
from Crypto.Hash import MD5
from pyquery import PyQuery as pq
sys.path.append('..')
from base.spider import Spider
class Spider(Spider):
def init(self, extend=""):
self.host=self.gethost()
self.headers.update({
'referer': f'{self.host}/',
'origin': self.host,
})
self.session = requests.Session()
self.session.headers.update(self.headers)
self.session.get(self.host)
pass
def getName(self):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def destroy(self):
pass
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="134", "Google Chrome";v="134"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'sec-fetch-dest': 'document',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
}
config={
"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":"儿童"},{"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":"2025","v":"2025"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"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"}]}],
"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":"网剧"},{"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":"2025","v":"2025"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"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"}]}],
"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":"日韩"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2025","v":"2025"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"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"}]}],
"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":"2025","v":"2025"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"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 homeContent(self, filter):
data=self.getpq()
result = {}
classes = []
for k in data('ul.swiper-wrapper').eq(0)('li').items():
i=k('a').attr('href')
if i and 'type' in i:
classes.append({
'type_name': k.text(),
'type_id': re.findall(r'\d+', i)[0],
})
result['class'] = classes
result['list'] = self.getlist(data('.tab-content.ewave-pannel_bd li'))
result['filters'] = self.config
return result
def homeVideoContent(self):
pass
def categoryContent(self, tid, pg, filter, extend):
path=f"/vodshow/{tid}-{extend.get('area','')}-{extend.get('by','')}-{extend.get('class','')}-----{pg}---{extend.get('year','')}.html"
data=self.getpq(path)
result = {}
result['list'] = self.getlist(data('ul.ewave-vodlist.clearfix li'))
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def detailContent(self, ids):
data=self.getpq(f"/voddetail/{ids[0]}.html")
v=data('.ewave-content__detail')
c=data('p')
vod = {
'type_name':c.eq(0)('a').text(),
'vod_year': v('.data.hidden-sm').text(),
'vod_remarks': v('h1').text(),
'vod_actor': c.eq(1)('a').text(),
'vod_director': c.eq(2)('a').text(),
'vod_content': c.eq(-1).text(),
'vod_play_from': '',
'vod_play_url': ''
}
nd=list(data('ul.nav-tabs.swiper-wrapper li').items())
pd=list(data('ul.ewave-content__playlist').items())
n,p=[],[]
for i,x in enumerate(nd):
n.append(x.text())
p.append('#'.join([f"{j.text()}${j('a').attr('href')}" for j in pd[i]('li').items()]))
vod['vod_play_url']='$$$'.join(p)
vod['vod_play_from']='$$$'.join(n)
return {'list':[vod]}
def searchContent(self, key, quick, pg="1"):
if pg=="1":
p=f"-------------.html?wd={key}"
else:
p=f"{key}----------{pg}---.html"
data=self.getpq(f"/vodsearch/{p}")
return {'list':self.getlist(data('ul.ewave-vodlist__media.clearfix li')),'page':pg}
def playerContent(self, flag, id, vipFlags):
try:
data=self.getpq(id)
jstr = json.loads(data('.ewave-player__video script').eq(0).text().split('=', 1)[-1])
jxpath='/bbplayer/api.php'
data=self.session.post(f"{self.host}{jxpath}",data={'vid':jstr['url']}).json()['data']
if re.search(r'\.m3u8|\.mp4',data['url']):
url=data['url']
elif data['urlmode'] == 1:
url=self.decode1(data['url'])
elif data['urlmode'] == 2:
url=self.decode2(data['url'])
elif re.search(r'\.m3u8|\.mp4',jstr['url']):
url=jstr['url']
else:
url=None
if not url:raise Exception('未找到播放地址')
p,c=0,''
except Exception as e:
self.log(f"解析失败: {e}")
p,url,c=1,f"{self.host}{id}",'document.querySelector("#playleft iframe").contentWindow.document.querySelector("#start").click()'
return {'parse': p, 'url': url, 'header': {'User-Agent':'okhttp/3.12.1'},'click': c}
def localProxy(self, param):
wdict=json.loads(self.d64(param['wdict']))
url=f"{wdict['jx']}{wdict['id']}"
data=pq(self.fetch(url,headers=self.headers).text)
html=data('script').eq(-1).text()
url = re.search(r'src="(.*?)"', html).group(1)
return [302,'text/html',None,{'Location':url}]
def liveContent(self, url):
pass
def gethost(self):
data=pq(self.fetch('https://13826.kstore.space/jubba.py/jbb1.html',headers=self.headers).text)
hlist=list(data('.content-top ul li').items())[:2]
hsots=[j('a').attr('href') for i in hlist for j in i('a').items()]
return self.host_late(hsots)
def host_late(self, urls):
with concurrent.futures.ThreadPoolExecutor() as executor:
future_to_url = {
executor.submit(self.test_host, url): url
for url in urls
}
results = {}
for future in concurrent.futures.as_completed(future_to_url):
url = future_to_url[future]
try:
results[url] = future.result()
except Exception as e:
results[url] = float('inf')
min_url = min(results.items(), key=lambda x: x[1])[0] if results else None
if all(delay == float('inf') for delay in results.values()) or not min_url:
return urls[0]
return min_url
def test_host(self, url):
try:
start_time = time.monotonic()
response = requests.head(
url,
timeout=1.0,
allow_redirects=False,
headers=self.headers
)
response.raise_for_status()
return (time.monotonic() - start_time) * 1000
except Exception as e:
print(f"测试{url}失败: {str(e)}")
return float('inf')
def getpq(self, path='',min=0,max=3):
data = self.session.get(f"{self.host}{path}")
data=data.text
try:
if '人机验证' in data:
print(f"{min}次尝试人机验证")
jstr=pq(data)('script').eq(-1).html()
token,tpath,stt=self.extract(jstr)
body={'value':self.encrypt(self.host,stt),'token':self.encrypt(token,stt)}
cd=self.session.post(f"{self.host}{tpath}",data=body)
if min>max:raise Exception('人机验证失败')
return self.getpq(path,min+1,max)
return pq(data)
except:
return pq(data.encode('utf-8'))
def encrypt(self, input_str,staticchars):
encodechars = ""
for char in input_str:
num0 = staticchars.find(char)
if num0 == -1:
code = char
else:
code = staticchars[(num0 + 3) % 62]
num1 = random.randint(0, 61)
num2 = random.randint(0, 61)
encodechars += staticchars[num1] + code + staticchars[num2]
return self.e64(encodechars)
def extract(self, js_code):
token_match = re.search(r'var token = encrypt\("([^"]+)"\);', js_code)
token_value = token_match.group(1) if token_match else None
url_match = re.search(r'var url = \'([^\']+)\';', js_code)
url_value = url_match.group(1) if url_match else None
staticchars_match = re.search(r'var\s+staticchars\s*=\s*["\']([^"\']+)["\'];', js_code)
staticchars = staticchars_match.group(1) if staticchars_match else None
return token_value, url_value,staticchars
def decode1(self, val):
url = self._custom_str_decode(val)
parts = url.split("/")
result = "/".join(parts[2:])
key1 = json.loads(self.d64(parts[1]))
key2 = json.loads(self.d64(parts[0]))
decoded = self.d64(result)
return self._de_string(key1, key2, decoded)
def _custom_str_decode(self, val):
decoded = self.d64(val)
key = self.md5("test")
result = ""
for i in range(len(decoded)):
result += chr(ord(decoded[i]) ^ ord(key[i % len(key)]))
return self.d64(result)
def _de_string(self, key_array, value_array, input_str):
result = ""
for char in input_str:
if re.match(r'^[a-zA-Z]$', char):
if char in key_array:
index = key_array.index(char)
result += value_array[index]
continue
result += char
return result
def decode2(self, url):
key = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN"
url=self.d64(url)
result = ""
i = 1
while i < len(url):
try:
index = key.find(url[i])
if index == -1:
char = url[i]
else:
char = key[(index + 59) % 62]
result += char
except IndexError:
break
i += 3
return result
def getlist(self, data):
videos = []
for k in data.items():
j = k('.ewave-vodlist__thumb')
h=k('.text-overflow a')
if not h.attr('href'):h=j
videos.append({
'vod_id': re.findall(r'\d+', h.attr('href'))[0],
'vod_name': j.attr('title'),
'vod_pic': j.attr('data-original'),
'vod_remarks': k('.pic-text').text(),
})
return videos
def e64(self, text):
try:
text_bytes = text.encode('utf-8')
encoded_bytes = b64encode(text_bytes)
return encoded_bytes.decode('utf-8')
except Exception as e:
print(f"Base64编码错误: {str(e)}")
return ""
def d64(self,encoded_text):
try:
encoded_bytes = encoded_text.encode('utf-8')
decoded_bytes = b64decode(encoded_bytes)
return decoded_bytes.decode('utf-8')
except Exception as e:
print(f"Base64解码错误: {str(e)}")
return ""
def md5(self, text):
h = MD5.new()
h.update(text.encode('utf-8'))
return h.hexdigest()

Binary file not shown.

View File

@@ -45,7 +45,7 @@
],
"url_key": "woog",
"threadinfo": {
"chunksize": 203,
"chunksize": 258,
"threads": 16
}
}
@@ -74,7 +74,7 @@
],
"url_key": "UC",
"threadinfo": {
"chunksize": 205,
"chunksize": 287,
"threads": 60
}
}
@@ -105,7 +105,7 @@
],
"url_key": "woog2",
"threadinfo": {
"chunksize": 272,
"chunksize": 273,
"threads": 16
}
}

68
欧歌/api/gbk.js Normal file

File diff suppressed because one or more lines are too long

BIN
欧歌/jars/config.jar Normal file

Binary file not shown.

BIN
欧歌/jars/csp_woog.jar Normal file

Binary file not shown.

BIN
欧歌/jars/csp_woog2.jar Normal file

Binary file not shown.

BIN
欧歌/jars/豆瓣1.jar Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -72,6 +72,19 @@
"url": "http://v.lkuys.cn"
}
},
{
"key": "追忆",
"name": "追忆APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppSy",
"ext": {
"url": "http://110.42.37.69:1866",
"key1": "aassddwwxxllsx1x",
"key2": "73f330328cc0fe67",
"key3": "73f330328cc0fe67"
}
},
{
"key": "星河",
"name": "星河APP",
@@ -98,6 +111,143 @@
"key3": "1e765e9b09b4dbba"
}
},
{
"key": "加菲",
"name": "加菲丨APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "",
"site": "https://aysappto.oss-cn-chengdu.aliyuncs.com/qj1.txt",
"dataKey": "dksvndkaAjekakcE",
"dataIv": "dksvndkaAjekakcE",
"deviceId": "",
"version": "",
"ua": ""
}
},
{
"key": "咖啡",
"name": "咖啡丨APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "",
"site": "https://daen-1256234123.cos.ap-shanghai.myqcloud.com/MuQi/mqxh.txt",
"dataKey": "37kj83zs1q16jk6t",
"dataIv": "37kj83zs1q16jk6t",
"deviceId": "",
"version": "101",
"ua": ""
}
},
{
"key": "哔滴",
"name": "哔滴丨APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "",
"site": "https://ooxooxooxooxoo-1259561579.cos.ap-chengdu.myqcloud.com/ip.json",
"dataKey": "5ae8ee4bb95ea0ce",
"dataIv": "5ae8ee4bb95ea0ce",
"deviceId": "",
"version": "120",
"ua": "okhttp/3.10.0 BDYS/109.0.0.8"
}
},
{
"key": "云云",
"name": "云云APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "",
"site": "https://staraugust123456.oss-cn-hangzhou.aliyuncs.com/1.txt",
"dataKey": "staraugust123456",
"dataIv": "staraugust123456",
"deviceId": "",
"version": "120"
}
},
{
"key": "若雪",
"name": "若雪丨APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "https://appcms.rx4k.top",
"site": "",
"dataKey": "ZX10ysTYZWtIJCTU",
"dataIv": "ZX10ysTYZWtIJCTU",
"deviceId": "",
"version": "120"
}
},
{
"key": "蓝鹰",
"name": "蓝鹰APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "",
"site": "https://lanyinghz.oss-cn-hangzhou.aliyuncs.com/lanyingxmy.txt",
"dataKey": "ca94b06ca359d80e",
"dataIv": "ca94b06ca359d80e",
"deviceId": "",
"version": "120"
}
},
{
"key": "仓鼠",
"name": "仓鼠APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "",
"site": "https://ceshi307386.oss-cn-beijing.aliyuncs.com/csurl.txt",
"dataKey": "Z98KXaLtO2wC1Pte",
"dataIv": "Z98KXaLtO2wC1Pte",
"deviceId": "",
"version": "120"
}
},
{
"key": "鲸鱼",
"name": "鲸鱼APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppQi",
"ext": {
"url": "",
"site": "https://jingyu4k-1312635929.cos.ap-nanjing.myqcloud.com/1.json",
"dataKey": "AAdgrdghjfgswerA",
"dataIv": "AAdgrdghjfgswerA",
"deviceId": "",
"version": ""
}
},
{
"key": "光影",
"name": "光影APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGet",
"ext": {
"url": "https://www.guangyingmi.com",
"dataKey": "230fnsodfsdhfon2",
"dataIv": "230fnsodfsdhfon2",
"deviceId": "",
"version": ""
}
},
{
"key": "狂人",
"name": "狂人 I APP",
@@ -157,50 +307,6 @@
"version": "120"
}
},
{
"key": "云云",
"name": "云云APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGet2",
"ext": {
"url": "",
"site": "https://staraugust123456.oss-cn-hangzhou.aliyuncs.com/1.txt",
"dataKey": "staraugust123456",
"dataIv": "staraugust123456",
"deviceId": "",
"version": "120"
}
},
{
"key": "光影",
"name": "光影APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGet",
"ext": {
"url": "https://www.guangyingmi.com",
"dataKey": "230fnsodfsdhfon2",
"dataIv": "230fnsodfsdhfon2",
"deviceId": "",
"version": ""
}
},
{
"key": "若雪",
"name": "若雪丨APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGet2",
"ext": {
"url": "https://appcms.rx4k.top",
"site": "",
"dataKey": "ZX10ysTYZWtIJCTU",
"dataIv": "ZX10ysTYZWtIJCTU",
"deviceId": "",
"version": "120"
}
},
{
"key": "丫丫",
"name": "丫丫APP",
@@ -243,51 +349,6 @@
"version": "119"
}
},
{
"key": "蓝鹰",
"name": "蓝鹰APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGet2",
"ext": {
"url": "",
"site": "https://lanyinghz.oss-cn-hangzhou.aliyuncs.com/lanyingxmy.txt",
"dataKey": "ca94b06ca359d80e",
"dataIv": "ca94b06ca359d80e",
"deviceId": "",
"version": "120"
}
},
{
"key": "仓鼠",
"name": "仓鼠APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGet2",
"ext": {
"url": "",
"site": "https://ceshi307386.oss-cn-beijing.aliyuncs.com/csurl.txt",
"dataKey": "Z98KXaLtO2wC1Pte",
"dataIv": "Z98KXaLtO2wC1Pte",
"deviceId": "",
"version": "120"
}
},
{
"key": "鲸鱼",
"name": "鲸鱼APP",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGet2",
"ext": {
"url": "",
"site": "https://jingyu4k-1312635929.cos.ap-nanjing.myqcloud.com/1.json",
"dataKey": "AAdgrdghjfgswerA",
"dataIv": "AAdgrdghjfgswerA",
"deviceId": "",
"version": ""
}
},
{
"key": "米诺",
"name": "米诺APP",

Binary file not shown.