2023.03.08

This commit is contained in:
jdk 2023-03-08 18:24:42 +08:00
parent da7f780384
commit bfab4a0246
129 changed files with 46656 additions and 0 deletions

BIN
0307fty/0307fty.jar Normal file

Binary file not shown.

4395
0307fty/Bili/bilibili.json Normal file

File diff suppressed because it is too large Load Diff

703
0307fty/Bili/biliych.json Normal file
View File

@ -0,0 +1,703 @@
{
"classes": [{
"type_name": "演唱会筛选",
"type_id": "演唱会超清"
},
{
"type_name": "粤语",
"type_id": "粤语歌曲超清"
},
{
"type_name": "热榜",
"type_id": "2022年热们歌曲超清"
},
{
"type_name": "抖音神曲",
"type_id": "抖音神曲超清"
},
{
"type_name": "经典老歌",
"type_id": "经典老歌超清"
},
{
"type_name": "DJ",
"type_id": "DJ歌曲超清"
},
{
"type_name": "网红翻唱",
"type_id": "网红翻唱歌曲超清"
},
{
"type_name": "韩国女团",
"type_id": "韩国女团演唱会超清"
}
],
"cookie": "innersign=0; buvid3=2E536ADC-CD6D-46AB-A9FF-904395151EE369713infoc; b_nut=1669016569; i-wanna-go-back=-1; b_ut=7; _uuid=761F7F106-C575-884D-6C10A-92BC10A10D10FBC68934infoc; buvid4=5B25B999-AE15-E09A-A0CC-3661981B71BF70255-122112115-JOyWSaNZfI2kZmT1KYmcQA%3D%3D; fingerprint=6d9ef93c89a567d22b6a9c4104e6cc50; buvid_fp_plain=undefined; buvid_fp=6d9ef93c89a567d22b6a9c4104e6cc50; SESSDATA=2d6f63c8%2C1684568607%2C19eb6%2Ab1; bili_jct=21d538b01566c26afc81ff68c2ac7dca; DedeUserID=3493083203242585; DedeUserID__ckMd5=7b86f3894ed7f8c0; sid=ng0uyvaz; b_lsid=97FB69A2_1869DE8E2C5; bg_view_44176=720227",
"filter": {
"演唱会超清": [{
"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": "A阿杜",
"v": "阿杜演唱会超清"
},
{
"n": "A阿黛尔",
"v": "阿黛尔演唱会超清"
},
{
"n": "BBeyond",
"v": "Beyond演唱会超清"
},
{
"n": "BBy2",
"v": "By2演唱会超清"
},
{
"n": "BBIGBANG",
"v": "BIGBANG演唱会超清"
},
{
"n": "B布兰妮",
"v": "布兰妮演唱会超清"
},
{
"n": "B坂井泉水",
"v": "坂井泉水演唱会超清"
},
{
"n": "C陈奕迅",
"v": "陈奕迅演唱会超清"
},
{
"n": "C蔡依林",
"v": "蔡依林演唱会超清"
},
{
"n": "C初音未来",
"v": "初音未来演唱会超清"
},
{
"n": "C蔡健雅",
"v": "蔡健雅演唱会超清"
},
{
"n": "C陈小春",
"v": "陈小春演唱会超清"
},
{
"n": "C草蜢",
"v": "草蜢演唱会超清"
},
{
"n": "C陈慧娴",
"v": "陈慧娴演唱会超清"
},
{
"n": "C崔健",
"v": "崔健演唱会超清"
},
{
"n": "C仓木麻衣",
"v": "仓木麻衣演唱会超清"
},
{
"n": "D戴荃",
"v": "戴荃演唱会超清"
},
{
"n": "D动力火车",
"v": "动力火车演唱会超清"
},
{
"n": "D邓丽君",
"v": "邓丽君演唱会超清"
},
{
"n": "D丁当",
"v": "丁当演唱会超清"
},
{
"n": "D刀郎",
"v": "刀郎演唱会超清"
},
{
"n": "D邓紫棋",
"v": "邓紫棋演唱会超清"
},
{
"n": "D戴佩妮",
"v": "戴佩妮演唱会超清"
},
{
"n": "D邓丽君",
"v": "邓丽君演唱会超清"
},
{
"n": "F飞儿乐队",
"v": "飞儿乐队演唱会超清"
},
{
"n": "F费玉清",
"v": "费玉清演唱会超清"
},
{
"n": "F费翔",
"v": "费翔演唱会超清"
},
{
"n": "F方大同",
"v": "方大同演唱会超清"
},
{
"n": "F房东的猫",
"v": "房东的猫演唱会超清"
},
{
"n": "F凤飞飞",
"v": "凤飞飞演唱会超清"
},
{
"n": "F凤凰传奇",
"v": "凤凰传奇演唱会超清"
},
{
"n": "G郭采洁",
"v": "郭采洁演唱会超清"
},
{
"n": "G光良",
"v": "光良演唱会超清"
},
{
"n": "G郭静",
"v": "郭静演唱会超清"
},
{
"n": "G郭富城",
"v": "郭富城演唱会超清"
},
{
"n": "H胡彦斌",
"v": "胡彦斌演唱会超清"
},
{
"n": "H胡夏",
"v": "胡夏演唱会超清"
},
{
"n": "H韩红",
"v": "韩红演唱会超清"
},
{
"n": "H黄品源",
"v": "黄品源演唱会超清"
},
{
"n": "H黄小琥",
"v": "黄小琥演唱会超清"
},
{
"n": "H花儿乐队",
"v": "花儿乐队演唱会超清"
},
{
"n": "H黄家强",
"v": "黄家强演唱会超清"
},
{
"n": "H后街男孩",
"v": "后街男孩演唱会超清"
},
{
"n": "J经典老歌",
"v": "经典老歌演唱会超清"
},
{
"n": "J贾斯丁比伯",
"v": "贾斯丁比伯演唱会超清"
},
{
"n": "J金池",
"v": "金池演唱会超清"
},
{
"n": "J金志文",
"v": "金志文演唱会超清"
},
{
"n": "J焦迈奇",
"v": "焦迈奇演唱会超清"
},
{
"n": "K筷子兄弟",
"v": "筷子兄弟演唱会超清"
},
{
"n": "L李玟",
"v": "李玟演唱会超清"
},
{
"n": "L林忆莲",
"v": "林忆莲演唱会超清"
},
{
"n": "L李克勤",
"v": "李克勤演唱会超清"
},
{
"n": "L刘宪华",
"v": "刘宪华演唱会超清"
},
{
"n": "L李圣杰",
"v": "李圣杰演唱会超清"
},
{
"n": "L林宥嘉",
"v": "林宥嘉演唱会超清"
},
{
"n": "L梁静茹",
"v": "梁静茹演唱会超清"
},
{
"n": "L李健",
"v": "李健演唱会超清"
},
{
"n": "L林俊杰",
"v": "林俊杰演唱会超清"
},
{
"n": "L李玉刚",
"v": "李玉刚演唱会超清"
},
{
"n": "L林志炫",
"v": "林志炫演唱会超清"
},
{
"n": "L李荣浩",
"v": "李荣浩演唱会超清"
},
{
"n": "L李宇春",
"v": "李宇春演唱会超清"
},
{
"n": "L洛天依",
"v": "洛天依演唱会超清"
},
{
"n": "L林子祥",
"v": "林子祥演唱会超清"
},
{
"n": "L李宗盛",
"v": "李宗盛演唱会超清"
},
{
"n": "L黎明",
"v": "黎明演唱会超清"
},
{
"n": "L刘德华",
"v": "刘德华演唱会超清"
},
{
"n": "L罗大佑",
"v": "罗大佑演唱会超清"
},
{
"n": "L林肯公园",
"v": "林肯公园演唱会超清"
},
{
"n": "LLadyGaga",
"v": "LadyGaga演唱会超清"
},
{
"n": "L旅行团乐队",
"v": "旅行团乐队演唱会超清"
},
{
"n": "M莫文蔚",
"v": "莫文蔚演唱会超清"
},
{
"n": "M毛不易",
"v": "毛不易演唱会超清"
},
{
"n": "M梅艳芳",
"v": "梅艳芳演唱会超清"
},
{
"n": "M迈克尔杰克逊",
"v": "迈克尔杰克逊演唱会超清"
},
{
"n": "N南拳妈妈",
"v": "南拳妈妈演唱会超清"
},
{
"n": "P朴树",
"v": "朴树演唱会超清"
},
{
"n": "Q齐秦",
"v": "齐秦演唱会超清"
},
{
"n": "Q青鸟飞鱼",
"v": "青鸟飞鱼演唱会超清"
},
{
"n": "R容祖儿",
"v": "容祖儿演唱会超清"
},
{
"n": "R任贤齐",
"v": "任贤齐演唱会超清"
},
{
"n": "S水木年华",
"v": "水木年华演唱会超清"
},
{
"n": "S孙燕姿",
"v": "孙燕姿演唱会超清"
},
{
"n": "S苏打绿",
"v": "苏打绿演唱会超清"
},
{
"n": "SSHE",
"v": "SHE演唱会超清"
},
{
"n": "S孙楠",
"v": "孙楠演唱会超清"
},
{
"n": "T陶喆",
"v": "陶喆演唱会超清"
},
{
"n": "T谭咏麟",
"v": "谭咏麟演唱会超清"
},
{
"n": "T田馥甄",
"v": "田馥甄演唱会超清"
},
{
"n": "T谭维维",
"v": "谭维维演唱会超清"
},
{
"n": "T逃跑计划",
"v": "逃跑计划演唱会超清"
},
{
"n": "T田震",
"v": "田震演唱会超清"
},
{
"n": "T谭晶",
"v": "谭晶演唱会超清"
},
{
"n": "T屠洪刚",
"v": "屠洪刚演唱会超清"
},
{
"n": "T泰勒·斯威夫特",
"v": "泰勒·斯威夫特演唱会超清"
},
{
"n": "W王力宏",
"v": "王力宏演唱会超清"
},
{
"n": "W王杰",
"v": "王杰演唱会超清"
},
{
"n": "W吴克群",
"v": "吴克群演唱会超清"
},
{
"n": "W王心凌",
"v": "王心凌演唱会超清"
},
{
"n": "W王靖雯",
"v": "好声音王靖雯演唱会超清"
},
{
"n": "W汪峰",
"v": "汪峰演唱会超清"
},
{
"n": "W伍佰",
"v": "伍佰演唱会超清"
},
{
"n": "W王菲",
"v": "王菲演唱会超清"
},
{
"n": "W五月天",
"v": "五月天演唱会超清"
},
{
"n": "W汪苏泷",
"v": "汪苏泷演唱会超清"
},
{
"n": "X徐佳莹",
"v": "徐佳莹演唱会超清"
},
{
"n": "X弦子",
"v": "弦子演唱会超清"
},
{
"n": "X萧亚轩",
"v": "萧亚轩演唱会超清"
},
{
"n": "X许巍",
"v": "许巍演唱会超清"
},
{
"n": "X薛之谦",
"v": "薛之谦演唱会超清"
},
{
"n": "X许嵩",
"v": "许嵩演唱会超清"
},
{
"n": "X小虎队",
"v": "小虎队演唱会超清"
},
{
"n": "X萧敬腾",
"v": "萧敬腾演唱会超清"
},
{
"n": "X谢霆锋",
"v": "谢霆锋演唱会超清"
},
{
"n": "X徐小凤",
"v": "徐小凤演唱会超清"
},
{
"n": "X信乐队",
"v": "信乐队演唱会超清"
},
{
"n": "Y夜愿乐队",
"v": "夜愿乐队演唱会超清"
},
{
"n": "Y羽泉",
"v": "羽泉演唱会超清"
},
{
"n": "Y郁可唯",
"v": "郁可唯演唱会超清"
},
{
"n": "Y叶倩文",
"v": "叶倩文演唱会超清"
},
{
"n": "Y杨坤",
"v": "杨坤演唱会超清"
},
{
"n": "Y庾澄庆",
"v": "庾澄庆演唱会超清"
},
{
"n": "Y尤长靖",
"v": "尤长靖演唱会超清"
},
{
"n": "Y易烊千玺",
"v": "易烊千玺演唱会超清"
},
{
"n": "Y袁娅维",
"v": "袁娅维演唱会超清"
},
{
"n": "Y杨丞琳",
"v": "杨丞琳演唱会超清"
},
{
"n": "Y杨千嬅",
"v": "杨千嬅演唱会超清"
},
{
"n": "Y杨宗纬",
"v": "杨宗纬演唱会超清"
},
{
"n": "Z郑秀文",
"v": "郑秀文演唱会超清"
},
{
"n": "Z周杰伦",
"v": "周杰伦演唱会超清"
},
{
"n": "Z张学友",
"v": "张学友演唱会超清"
},
{
"n": "Z张信哲",
"v": "张信哲演唱会超清"
},
{
"n": "Z张宇",
"v": "张宇演唱会超清"
},
{
"n": "Z周华健",
"v": "周华健演唱会超清"
},
{
"n": "Z张韶涵",
"v": "张韶涵演唱会超清"
},
{
"n": "Z周深",
"v": "周深演唱会超清"
},
{
"n": "Z纵贯线",
"v": "纵贯线演唱会超清"
},
{
"n": "Z赵雷",
"v": "赵雷演唱会超清"
},
{
"n": "Z周传雄",
"v": "周传雄演唱会超清"
},
{
"n": "Z张国荣",
"v": "张国荣演唱会超清"
},
{
"n": "Z周慧敏",
"v": "周慧敏演唱会超清"
},
{
"n": "Z张惠妹",
"v": "张惠妹演唱会超清"
},
{
"n": "Z周笔畅",
"v": "周笔畅演唱会超清"
},
{
"n": "Z郑中基",
"v": "郑中基演唱会超清"
},
{
"n": "Z张艺兴",
"v": "张艺兴演唱会超清"
},
{
"n": "Z张震岳",
"v": "张震岳演唱会超清"
},
{
"n": "Z张雨生",
"v": "张雨生演唱会超清"
},
{
"n": "Z郑智化",
"v": "郑智化演唱会超清"
},
{
"n": "Z卓依婷",
"v": "卓依婷演唱会超清"
},
{
"n": "Z中岛美雪",
"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"
}
]
}
]
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,764 @@
{
"cookie": "innersign=0; buvid3=2E536ADC-CD6D-46AB-A9FF-904395151EE369713infoc; b_nut=1669016569; i-wanna-go-back=-1; b_ut=7; _uuid=761F7F106-C575-884D-6C10A-92BC10A10D10FBC68934infoc; buvid4=5B25B999-AE15-E09A-A0CC-3661981B71BF70255-122112115-JOyWSaNZfI2kZmT1KYmcQA%3D%3D; fingerprint=6d9ef93c89a567d22b6a9c4104e6cc50; buvid_fp_plain=undefined; buvid_fp=6d9ef93c89a567d22b6a9c4104e6cc50; SESSDATA=2d6f63c8%2C1684568607%2C19eb6%2Ab1; bili_jct=21d538b01566c26afc81ff68c2ac7dca; DedeUserID=3493083203242585; DedeUserID__ckMd5=7b86f3894ed7f8c0; sid=ng0uyvaz; b_lsid=97FB69A2_1869DE8E2C5; bg_view_44176=720227",
"classes": [{
"type_name": "1年级语文",
"type_id": "1年级语文"
}, {
"type_name": "1年级数学",
"type_id": "1年级数学"
}, {
"type_name": "1年级英语",
"type_id": "1年级英语"
}, {
"type_name": "2年级语文",
"type_id": "2年级语文"
}, {
"type_name": "2年级数学",
"type_id": "2年级数学"
}, {
"type_name": "2年级英语",
"type_id": "2年级英语"
}, {
"type_name": "3年级语文",
"type_id": "3年级语文"
}, {
"type_name": "3年级数学",
"type_id": "3年级数学"
}, {
"type_name": "3年级英语",
"type_id": "3年级英语"
}, {
"type_name": "4年级语文",
"type_id": "4年级语文"
}, {
"type_name": "4年级数学",
"type_id": "4年级数学"
}, {
"type_name": "4年级英语",
"type_id": "4年级英语"
}, {
"type_name": "5年级语文",
"type_id": "5年级语文"
}, {
"type_name": "5年级数学",
"type_id": "5年级数学"
}, {
"type_name": "5年级英语",
"type_id": "5年级英语"
}, {
"type_name": "6年级语文",
"type_id": "6年级语文"
}, {
"type_name": "6年级数学",
"type_id": "6年级数学"
}, {
"type_name": "6年级英语",
"type_id": "6年级英语"
}],
"filter": {
"1年级语文": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版1年级语文"
}, {
"n": "人教版",
"v": "人教版1年级语文"
}, {
"n": "北师大版",
"v": "北师大版1年级语文"
}, {
"n": "苏教版",
"v": "苏教版1年级语文"
}]
}, {
"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"
}]
}],
"1年级英语": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版1年级英语"
}, {
"n": "人教版",
"v": "人教版1年级英语"
}, {
"n": "北师大版",
"v": "北师大版1年级英语"
}, {
"n": "苏教版",
"v": "苏教版1年级英语"
}]
}, {
"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"
}]
}],
"1年级数学": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版1年级数学"
}, {
"n": "人教版",
"v": "人教版1年级数学"
}, {
"n": "北师大版",
"v": "北师大版1年级数学"
}, {
"n": "苏教版",
"v": "苏教版1年级数学"
}]
}, {
"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"
}]
}],
"2年级语文": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版2年级语文"
}, {
"n": "人教版",
"v": "人教版2年级语文"
}, {
"n": "北师大版",
"v": "北师大版2年级语文"
}, {
"n": "苏教版",
"v": "苏教版2年级语文"
}]
}, {
"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"
}]
}],
"2年级英语": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版2年级英语"
}, {
"n": "人教版",
"v": "人教版2年级英语"
}, {
"n": "北师大版",
"v": "北师大版2年级英语"
}, {
"n": "苏教版",
"v": "苏教版2年级英语"
}]
}, {
"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"
}]
}],
"2年级数学": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版2年级数学"
}, {
"n": "人教版",
"v": "人教版2年级数学"
}, {
"n": "北师大版",
"v": "北师大版2年级数学"
}, {
"n": "苏教版",
"v": "苏教版2年级数学"
}]
}, {
"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"
}]
}],
"3年级语文": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版3年级语文"
}, {
"n": "人教版",
"v": "人教版3年级语文"
}, {
"n": "北师大版",
"v": "北师大版3年级语文"
}, {
"n": "苏教版",
"v": "苏教版3年级语文"
}]
}, {
"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"
}]
}],
"3年级英语": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版3年级英语"
}, {
"n": "人教版",
"v": "人教版3年级英语"
}, {
"n": "北师大版",
"v": "北师大版3年级英语"
}, {
"n": "苏教版",
"v": "苏教版3年级英语"
}]
}, {
"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"
}]
}],
"3年级数学": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版3年级数学"
}, {
"n": "人教版",
"v": "人教版3年级数学"
}, {
"n": "北师大版",
"v": "北师大版3年级数学"
}, {
"n": "苏教版",
"v": "苏教版3年级数学"
}]
}, {
"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"
}]
}],
"4年级语文": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版4年级语文"
}, {
"n": "人教版",
"v": "人教版4年级语文"
}, {
"n": "北师大版",
"v": "北师大版4年级语文"
}, {
"n": "苏教版",
"v": "苏教版4年级语文"
}]
}, {
"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"
}]
}],
"4年级英语": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版4年级英语"
}, {
"n": "人教版",
"v": "人教版4年级英语"
}, {
"n": "北师大版",
"v": "北师大版4年级英语"
}, {
"n": "苏教版",
"v": "苏教版4年级英语"
}]
}, {
"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"
}]
}],
"4年级数学": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版4年级数学"
}, {
"n": "人教版",
"v": "人教版4年级数学"
}, {
"n": "北师大版",
"v": "北师大版4年级数学"
}, {
"n": "苏教版",
"v": "苏教版4年级数学"
}]
}, {
"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"
}]
}],
"5年级语文": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版5年级语文"
}, {
"n": "人教版",
"v": "人教版5年级语文"
}, {
"n": "北师大版",
"v": "北师大版5年级语文"
}, {
"n": "苏教版",
"v": "苏教版5年级语文"
}]
}, {
"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"
}]
}],
"5年级英语": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版5年级英语"
}, {
"n": "人教版",
"v": "人教版5年级英语"
}, {
"n": "北师大版",
"v": "北师大版5年级英语"
}, {
"n": "苏教版",
"v": "苏教版5年级英语"
}]
}, {
"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"
}]
}],
"5年级数学": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版5年级数学"
}, {
"n": "人教版",
"v": "人教版5年级数学"
}, {
"n": "北师大版",
"v": "北师大版5年级数学"
}, {
"n": "苏教版",
"v": "苏教版5年级数学"
}]
}, {
"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"
}]
}],
"6年级语文": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版6年级语文"
}, {
"n": "人教版",
"v": "人教版6年级语文"
}, {
"n": "北师大版",
"v": "北师大版6年级语文"
}, {
"n": "苏教版",
"v": "苏教版6年级语文"
}]
}, {
"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"
}]
}],
"6年级英语": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版6年级英语"
}, {
"n": "人教版",
"v": "人教版6年级英语"
}, {
"n": "北师大版",
"v": "北师大版6年级英语"
}, {
"n": "苏教版",
"v": "苏教版6年级英语"
}]
}, {
"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"
}]
}],
"6年级数学": [{
"key": "tid",
"name": "分类",
"value": [{
"n": "全部",
"v": "0"
}, {
"n": "沪教版",
"v": "沪教版6年级数学"
}, {
"n": "人教版",
"v": "人教版6年级数学"
}, {
"n": "北师大版",
"v": "北师大版6年级数学"
}, {
"n": "苏教版",
"v": "苏教版6年级数学"
}]
}, {
"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"
}]
}]
}
}

View File

@ -0,0 +1,477 @@
{
"cookie": "innersign=0; buvid3=2E536ADC-CD6D-46AB-A9FF-904395151EE369713infoc; b_nut=1669016569; i-wanna-go-back=-1; b_ut=7; _uuid=761F7F106-C575-884D-6C10A-92BC10A10D10FBC68934infoc; buvid4=5B25B999-AE15-E09A-A0CC-3661981B71BF70255-122112115-JOyWSaNZfI2kZmT1KYmcQA%3D%3D; fingerprint=6d9ef93c89a567d22b6a9c4104e6cc50; buvid_fp_plain=undefined; buvid_fp=6d9ef93c89a567d22b6a9c4104e6cc50; SESSDATA=2d6f63c8%2C1684568607%2C19eb6%2Ab1; bili_jct=21d538b01566c26afc81ff68c2ac7dca; DedeUserID=3493083203242585; DedeUserID__ckMd5=7b86f3894ed7f8c0; sid=ng0uyvaz; b_lsid=97FB69A2_1869DE8E2C5; bg_view_44176=720227",
"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": "睡前故事"
},
{
"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": "学而思"
}],
"filter": {
"儿童早教": [
{
"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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}}

File diff suppressed because it is too large Load Diff

1258
0307fty/Hlsp/黑料.json Normal file

File diff suppressed because it is too large Load Diff

301
0307fty/Nmys/nmys.json Normal file
View File

@ -0,0 +1,301 @@
{
"author": "春风",
"ua": "Mozilla/5.0 (Linux; Android 10; LYA-AL00; HMSCore 6.4.0.312; GMSCore 20.15.16) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.4.300 Mobile Safari/537.36",
"homeUrl": "https://v.xiangdao.me",
"dcVipFlag": "true",
"dcPlayUrl": "true",
"cateManual": {
"电影": "1",
"连续剧": "2",
"动漫": "4",
"综艺": "3"
},
"homeVodNode": "//section/section[position()>2]//ul[@class='resize_list']/li/a",
"homeVodName": "/@title",
"homeVodId": "/@href",
"homeVodIdR": "/(S+).html",
"homeVodImg": "//@data-echo",
"homeVodImgR": "",
"homeVodMark": "/div/span[2]/span/text()",
"cateUrl": "https://v.xiangdao.me/index.php?m=vod-list-id-{cateId}-pg-{catePg}.html",
"cateVodNode": "//ul[@class='resize_list']/li/a",
"cateVodName": "/@title",
"cateVodId": "/@href",
"cateVodIdR": "/(S+).html",
"cateVodImg": "//@data-echo",
"cateVodImgR": "",
"cateVodMark": "/div/span[2]/span/em/text()",
"dtUrl": "https://v.xiangdao.me/{vid}.html",
"dtNode": "//body",
"dtName": "//section[@class='page-hd']/a/@title",
"dtNameR": "",
"dtImg": "//section[@class='page-hd']/a/img/@src",
"dtImgR": "",
"dtCate": "",
"dtCateR": "",
"dtYear": "//span[contains(text(), '年代')]/following-sibling::a/text()",
"dtYearR": "",
"dtArea": "",
"dtAreaR": "",
"dtDirector": "//span[contains(text(), '导演')]/following-sibling::a/text()",
"dtDirectorR": "",
"dtActor": "//span[contains(text(), '主演')]/following-sibling::a/text()",
"dtActorR": "",
"dtDesc": "//article[@class='detail-con']/p/text()",
"dtDescR": "",
"dtFromNode": "//div[@class='hd']/ul/li/a",
"dtFromName": "/text()",
"dtFromNameR": "",
"dtUrlNode": "//div[@class='numList']/ul",
"dtUrlSubNode": "/li/a",
"dtUrlId": "@href",
"dtUrlIdR": "/(S+).html",
"dtUrlName": "/text()",
"dtUrlNameR": "",
"playUrl": "https://v.xiangdao.me/{playUrl}.html",
"playUa": "",
"searchUrl": "https://v.xiangdao.me/index.php?m=vod-search&wd={wd}",
"scVodNode": "//ul[@class='ulPicTxt clearfix']/li",
"scVodName": "//span[@class='sTit']/text()",
"scVodId": "//span[@class='sBtn']/a/@href",
"scVodIdR": "/(S+).html",
"scVodImg": "//img/@data-src",
"scVodMark": "//span[@class='sDes'][2]/text()",
"filter":{
"1": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"1"},
{"n":"动作片","v":"5"},
{"n":"喜剧片","v":"6"},
{"n":"爱情片","v":"7"},
{"n":"科幻片","v":"8"},
{"n":"恐怖片","v":"9"},
{"n":"剧情片","v":"10"},
{"n":"战争片","v":"11"},
{"n":"惊悚片","v":"16"},
{"n":"奇幻片","v":"17"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
],
"2": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"2"},
{"n":"国产剧","v":"12"},
{"n":"港台剧","v":"13"},
{"n":"日韩剧","v":"14"},
{"n":"欧美剧","v":"15"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
],
"3": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"3"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
],
"4": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"4"},
{"n":"动漫剧","v":"18"},
{"n":"动漫片","v":"19"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
]
}
}

362
0307fty/XBPQ/爱看.json Normal file
View File

@ -0,0 +1,362 @@
{
"作者": "菜妮丝https://cainisi.cf",
"站名": "爱看影视",
"主页url": "https://ikan6.vip",
"分类": "电影&连续剧&综艺&动漫&日韩剧&美剧",
"分类值": "1&2&3&4&15&16",
"分类url": "https://ikan6.vip/vodshow/{cateId}-{area}-{by}-{class}-----{catePg}---{year}/",
"副标题": "text-right\">&&</span>",
"搜索模式": "0",
"搜索后缀": "/voddetail/",
"影片年代": "年份:&&</p>",
"影片地区": "地区:&&<span",
"影片类型": "分类:&&<span",
"导演": "导演:&&</p>",
"主演": "主演:&&</p>",
"简介": "display: none;\">&&</span>",
"线路数组": "<a href=\"#playlist&&</li>",
"线路标题": ">&&</a>",
"播放数组": "<div id=\"playlist&&</ul>",
"筛选":{
"1":[
{"key":"cateId","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":"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":"悬疑"},
{"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":"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":"cateId","name":"类型","value":[
{"n":"全部","v":"2"},
{"n":"国产剧","v":"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":"内地"},
{"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":"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":"欧美"}]},
{"key":"year","name":"年份","value":[
{"n":"全部","v":""},
{"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":"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"}]}],
"15":[
{"key":"year","name":"年份","value":[
{"n":"全部","v":""},
{"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"}]}],
"16":[
{"key":"year","name":"年份","value":[
{"n":"全部","v":""},
{"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"}]}]}
}

View File

@ -0,0 +1,18 @@
{
"作者": "菜妮丝https://cainisi.cf",
"站名": "短视频",
"主页url": "http://www.sharenice.net",
"直接播放": "1",
"嗅探词": ".m3u8#m3u8?#.mp4#mp4?#ixigua#.czspp#.flv#.mp3#.m4a#?item/video#is_play_url=1#play/?#qianpailive",
"分类": "抖音&快手&微视&火山&场库&美拍&秒拍&全民&梨&好兔&开眼&美女&搞笑&社会&音乐&娱乐&影视&正能量&生活&动漫&萌系&美食&体育&游戏&明星&旅游&时尚",
"分类值": "douyin&kuaishou&weishi&huoshan&changku&meipai&miaopai&quanmin&lishipin&haotu&kaiyan&t-576O5aWz&t-5pCe56yR&t-56S+5Lya&t-6Z+z5LmQ&t-5aix5LmQ&t-5b2x6KeG&t-5q2j6IO96YeP&t-55Sf5rS7&t-5Yqo5ryr&t-6JCM57O7&t-576O6aOf&t-5L2T6IKy&t-5ri45oiP&t-5piO5pif&t-5peF5ri4&t-5pe25bCa",
"分类url": "http://www.sharenice.net/{cateId}?page={catePg}",
"二次截取": "class=\"item-box\">&&</ul>",
"数组": "<li&&</li>",
"图片": "data-original=\"&&\"",
"标题": "title=\"&&\"",
"链接": "href=\"&&\""
}

View File

@ -0,0 +1,70 @@
{
"author": "",
"ua": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.186.400 QQBrowser/11.3.5195.400",
"homeUrl": "http://www.jrskan.com/",
//"homeUrl": "http://jrsbxj.com/",
//"homeUrl": "http://jrsyyds.com/",
"cateManual": {
"JRS赛事直播": "@666"
},
// {cateId} id {catePg}
"cateUrl2": "http://www.jrskan.com/",
// homeVod
"cateVodNode": "//ul[@data-stype='zqlq']",
//"cateVodName": "/li[@class='lab_events']/span/text()",
"cateVodName": "concat(/li[@class='lab_time']/text(),'-',/li[@class='lab_events']/span/text(),'dj')",
"cateVodId": "/li[@class='lab_channel']/a[1]/@href",
"cateVodIdR": "http://play.sportsteam357.com/play/steam(\\d+).html",
//"cateVodIdR": "\\S+/(\\d+).html",
"cateVodImg": "/li[@class='lab_team_home']/span/img/@src",
"cateVodMark": "concat(//li[@class='lab_team_home']/strong/text(),'-',//li[@class='lab_team_away']/strong/text())",
//"cateVodMark": "{vid}",
"cate": "dj",
//
//"dtUrl": "{vid}",
"dtUrl": "http://play.sportsteam357.com/play/steam{vid}.html",
//
"dtNode": "//ul[@data-stype='zqlq']",
//
"dtName": "/li[1]/span/text()",
//
"dtImg": "/li[3]/span/img/@src",
//
"dtCate": "/li[1]/span/text()",
//
"dtActor": "/li[1]/span/text()",
//
"dtDirector": "concat('勇士总冠军')",
"dtDirectorR": "",
//
"dtDesc": "concat(/li[3]/strong/text(),' VS ',/li[5]/strong/text())",
//
"dtFromNode": "//div[@class='sub_channel']",
//
"dtFromName": "concat('【推荐优先选择中文超清或中文高清直播源观看】')",
"dtFromNameR": "",
//
"dtUrlNode": "//div[@class='sub_channel']",
//
"dtUrlSubNode": "/a",
"dtUrlSub": "/ff",
//
"dtUrlId": "@data-play",
"dtUrlIdR": "/play/(\\S+)",
//"dtUrlIdR": "\\S+/(\\d+)&id2=",
//
"dtUrlName": "/strong/text()",
"dtUrlNameR": "",
// {playUrl} dtUrlId
//"playUrl":"http://play.sportsteam333.com/play/{playUrl}#ff",
"playUrl":"http://play.sportsteam357.com/play/{playUrl}"
//"playUrl": "http://play.sportsteam365.com/play/{playUrl}"
//"playUa": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
//"playUa": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
}

View File

@ -0,0 +1,72 @@
{
"author": "率性而活",
"ua":"Mozilla/5.0 (Linux; Android 8.1.0; OPPO R11t Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.19 SP-engine/2.15.0 baiduboxapp/11.19.5.10 (Baidu; P1 8.1.0)",
//125.88.199.34 m.live.qq.com
//"dcVipFlag": "true",
//"dcPlayUrl": "true",
"homeUrl": "https://m.live.qq.com/directory/game/Basketball",
"cateManual": {
"篮球": "@directory/game/Basketball",
"足球":"@directory/game/Football",
"搏击":"@directory/game/Fight",
"网球排球":"@directory/game/Tennis",
"英文原声":"@directory/game/English",
"台球":"@directory/game/Billiards",
"棒球/橄榄球/冰球":"@directory/game/MLB",
"NBA":"@directory/game/NBA",
"CBA":"@directory/game/CBA",
"颜值":"@directory/game/YZ",
"棋牌/游戏":"@directory/game/Game"
},
"homeVodNode": "//a[contains(@href,'/10')]","homeVodName": "/div/following-sibling::p[1]/text()","homeVodId": "/@href","homeVodIdR": "/(\\S+)","homeVodImg": "//div[contains(@style,'http')]/@style","homeVodImgR": "(http.*?jpg)","homeVodMark": "",
"cateUrl2": "https://m.live.qq.com/{cateId}",
"cateVodNode": "//a[contains(@href,'/10')]",
"cateVodName": "/div/following-sibling::p[1]/text()",
"cateVodId": "/@href",
"cateVodIdR": "/(\\S+)",
"cateVodImg": "//div[contains(@style,'http')]/@style",
"cateVodImgR": "(http.*?jpg)",
"cateVodMark": "",
//
"dtUrl": "https://m.live.qq.com/{vid}",
"dtNode": "//body",
"dtName": "//p[contains(@class,'p-title')]/text()",
"dtNameR": "(“.*?”)",
"dtImg": "//div[contains(@class,'share-bar')]/@data-pic",
"dtImgR": "",
"dtCate": "",
"dtCateR": "",
"dtYear": "",
"dtYearR": "",
"dtArea": "",
"dtAreaR": "",
"dtDirector": "",
"dtDirectorR": "",
"dtActor": "",
"dtActorR": "",
"dtDesc": "",
"dtDescR": "",
"dtFromNode": "//p[contains(@class,'p-title')]",
"dtFromName": "/text()",
"dtFromNameR": "(\\企鹅体育)",
"dtUrlNode": "//div[contains(@class,'wenzi')]",
"dtUrlSubNode": "/a",
"dtUrlId": "/text()",
"dtUrlIdR": "m.live.qq.com/(\\S+)",
"dtUrlName": "/text()",
"dtUrlNameR": "(\\d+)",
"playUrl": "https://m.live.qq.com/{playUrl}",
"playUa":"{\"User-Agent\":\"okhttp/3.12.11\"}"
}

View File

@ -0,0 +1,57 @@
//biubiuxpath
//githubhttps://github.com/Tangsan99999/TvJarXBiubiu.java
{
//
"title": "310直播",
//
"author": "聆听优美旋律",
//UA,okhttp/3.12.11MOBILE_UAPC_UA使UA
//UAPCUA
"UserAgent":"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",
//RefererWebViewReferer
//
"Referer":"",
//01
"homeContent":"0",
//,
"firstpage": "1",
//,{cateId}{catePg}, [firstPage=]
"class_url": "http://www.310.tv/{cateId}",
//1&2&3
"class_name": "310直播",
//1&2&3&id=0&id=1
"class_value": "",
//jsonxpath
"filterdata":{},
//
"cat_YN_twice": "1",
//
"cat_twice_pre": "<div class=\"list_content",
//
"cat_twice_suf": "<div class=\"indexbtn",
//
"cat_arr_pre": "<a class = \"clearfix",
//
"cat_arr_suf": "</a>",
//&&
"cat_pic": "img src=\"&&\"",
//&&
"cat_title": "zhudui_wuyd\">&&</section",
//&&
"cat_subtitle": "eventtime\">&&</p",
//&&
"cat_url": "href=\"&&\"",
//
"cat_prefix": "",
//
"cat_suffix": "",
"force_play": "1",
//01
"ManualSniffer":"1",
//#
"VideoFormat":"",
//,#
"VideoFilter":".html#=http"
}

View File

@ -0,0 +1,89 @@
//biubiuxpath
//githubhttps://github.com/Tangsan99999/TvJarXBiubiu.java
{
//
"title": "斗鱼直播",
//
"author": "聆听优美旋律",
//UA,okhttp/3.12.11MOBILE_UAPC_UA使UA
//UAPCUA
"UserAgent":"MOBILE_UA",
//RefererWebViewReferer
//
"Referer":"",
//01
"homeContent":"0",
//,
"firstpage": "1",
//,{cateId}{catePg}, [firstPage=]
"class_url": "https://m.douyu.com/api/room/list?page={catePg}&type={cateId}",
//1&2&3
"class_name": "英雄联盟&王者荣耀&LOL手游&主机游戏&热门游戏&和平精英&刺客信条:英灵殿&暗区突围&穿越火线&幻塔&火影忍者&CFHD&使命召唤&COD手游&哈利波特:魔法觉醒&lol电竞经理&DNF手游&金铲铲之战&天刀手游&原神&航海王热血航线&万国觉醒&马里奥制造&鸿图之下&DNF&欢乐麻将&逃离塔科夫&DOTA2&王者模拟战&炉石传说&二次元&中国象棋&命运2&CS:GO&天谕手游&一起看&巅峰坦克&新游中心&墲人之境&VALORANT&lol云顶之弈&颜值(横屏)&音乐&热门手游&APEX手游&Evil Dead&Among Us&魔兽争霸&户外&梦幻手游&恐怖游戏&魔兽怀旧服&QQ飞车&荒野大镖客&九劫曲&自走棋&美食&第五人格&欢乐斗地主&荒野乱斗&灵魂筹码&传奇&原创IP&互动交友&跑跑卡丁车&阴阳师&骑马与砍杀&网易游戏&星际争霸&音遇恋人&狼人杀&只狼&格斗游戏&舞蹈&JJ斗地主&街霸对决&人类跌落梦境&机动都市阿尔法&一人之下&饥荒&全境封锁&怀旧游戏&趣生活&多多自走棋&战地风云&隐形守护者&守望先锋&电台新声&崩坏3&ATLAS&DOTA&娱乐推荐&风云岛行动&进击的巨人&魔兽世界&云游戏&NBA2K&八方旅人&跑跑手游&血污:夜之仪式&剑网3&率土之滨&人类一败涂地&我的世界&灌篮高手&挺进地牢&超激斗梦境&冒险岛&三国杀&环世界&梦幻西游&皇室战争&古墓丽影&天涯明月刀&王牌战士&街头篮球&颜值&战歌竞技场&波西亚时光&NBA2KOL2&忍者必须死3&鬼泣&QQ飞车端游&神武4手游&战地之王&军事游戏&梦幻模拟战&往日不再&文化&棋牌娱乐&实况足球&仙剑奇侠传&企鹅直播&FIFA ONLINE 4&剑与远征&神秘海域&热门网游&航海王:燃烧意志&诛仙世界&千古风流&塞尔达系列&数码科技&APEX&百闻牌&僵尸世界大战&社会人文&流放之路POE&球球大作战&汽车&剑网3缘起&逆水寒&英雄杀&足球游戏&科普&风暴英雄&魔域口袋版&橙光&逆战&梦幻三维版&莎木&纪录片&口袋新旅程&圣歌&斗鱼购物&坦克世界&战舰世界&巫师之昆特牌&了不起的修仙模拟器&成年教育&反恐精英Online&剑网3指尖江湖&女神异闻录&星星点灯&暗黑破坏神3&部落冲突&剑与家园&斯普拉遁&梦三国2&新笑傲江湖&超级马里奥&校园&传奇世界&猫和老鼠&三国志系列&方舟:生存进化&猎人手游&星际公民&刀塔霸业&明日之后&最终幻想&神武4电脑版&影之诗&中土世界:战争之影&群雄逐鹿&流放者柯南&堡垒之夜&决战平安京",
//1&2&3&id=0&id=1
"class_value": "LOL&wzry&LOLM&TVgame&rmyx&hpjy&AC&aqtw&CF&ht&hyrz&CFHD&COD&smzhsy&HarryPotter&EGAME&mdnf&JGAME&tdsy&yuanshen&HHWRXHX&wgjx&Mario&htzx&DNF&HLMJ&EFT&DOTA2&wzrpg&How&ecy&ZGXQ&MY2&CSGO&tysy&yqk&DFTK&xyzx&wu&VALORANT&ydzhy&XX&music&phone&APEXM&EvilDead&AmongUs&mszb&HW&mhxy&Horror&wowclassic&qqfcsy&hydbk&jjq&dota2rpg&ms&dwrg&hlddz&hyld&lhcm&cq&ip&jyhd&Popkart&yys&qmyks&wyyx&SC&yinyu&LRS&ZL&FTG&dance&jj&jbdj&rlybtdsjb&jddsaef&yrzx&DontStarve&qjfs&classic&QSH&zzq&BF&yxshz&Overwatch&dtxs&bhxl&ATLAS&DOTA&yltj&fydxd&AoT&WOW&cloudgame&NBA2K&OT&PPKDCSY&Blood&JX3&stzb&Human&MC&glgs&Enter&cjdmj&g_mxd1&sanguosha&RimWorld&MHXYOL&hszz&gmly&tianya&wpzs&jtlq&yz&ChessRush&bxysg&NBA2KOL2&rzbxs3&DMC&qqfcdy&sw3&AVA&jsyx&mhmnz&WRBZ&wh&qipai&skzq&PAL&qezb&FOL4&jyyz&Uncharted&rmwy&hhwrsyz&zxsj&qgflpc&TLoZ&smkj&APEX&BWP&WWZ&shrw&PathofExile&qqdzz&car&JW3YQ&nsh&yxs&zq&kepu&HOTS&mykdb&cg&NZ&MHXX3D&Shenmue&jlp&KDXLC&sg&DYGW&TKSJ&wfws&wszktp&ACS&jiaoyu&CS&jw3zjjh&P5&xxdd&DIABLO3&blct&jyjy&Splatoon&msg2&xxajh&SMO&xy&cqsj&mhls&Sangokushi&fzscjh&lrlr&StarCitizen&DotaUnderlords&mrzh&FF&swdnb&yzs&MiddleEarth&qxzl&Conan&blzy&jzpaj",
//jsonxpath
"filterdata":{},
"cat_mode": "0",
"catjsonlist": "data.list",
//json
"catjsonpic": "roomSrc",
//json
"catjsonname": "roomName",
//json
"catjsonid": "rid",
//json
"catjsonstitle":"nickname",
//
"cat_prefix": "",
//
"cat_suffix": "",
//{wd}post;post
//POST http://www.lezhutv.com/index.php?m=vod-search;post
"search_url": "https://m.douyu.com/api/search/liveRoom;post",
//POSTbodysearchwordwdPOST
"sea_PtBody":{"sk":"{wd}","offset":0,"limit":20,"did":"bf1f5579c0b2f6066af0bee200051531"},
//,0jsonlist
"search_mode": "0",
"jsonlist": "data.list",
//json
"jsonpic": "roomSrc",
//json
"jsonname": "roomName",
//json
"jsonid": "roomId",
//json
"jsonstitle":"nickname",
//
"search_prefix": "",
//json
"search_suffix": "",
//&&
"sea_subtitle": "",
//012
//3
"force_play": "1",
//
"play_prefix": "https://m.douyu.com/",
//#isVideo=true#
"play_suffix": "",
//#
"play_header": "",
//
//<script type="text/javascript">var player_aaaa={"flag":"play","encrypt
//0
"Anal_MacPlayer":"0",
//01
"ManualSniffer":"0",
//#
"VideoFormat":".mp4#.m3u8#.flv",
//,#
"VideoFilter":".html#=http"
}

View File

@ -0,0 +1,159 @@
//biubiuxpath
//githubhttps://github.com/Tangsan99999/TvJarXBiubiu.java
{
//
"title": "酷奇MV",
//
"author": "聆听优美旋律",
//UA,okhttp/3.12.11MOBILE_UAPC_UA使UA
//UAPCUA
"UserAgent":"PC_UA",
//RefererWebViewReferer
//
"Referer":"WebView",
"PicNeedProxy":"1",
//01
"homeContent":"0",
//,
"firstpage": "1",
//,{cateId}{catePg}, [firstPage=]
"class_url": "https://www.kuqimv.com/play/{cateId}_{catePg}.html",
//1&2&3
"class_name": "华语高清&日韩精选&欧美MV&高清现场&影视MV&夜店视频&车模视频&热舞视频&美女写真&美女打碟",
//1&2&3&id=0&id=1
"class_value": "1&2&3&4&5&6&7&8&9&10",
//jsonxpath
"filterdata":{},
//
"cat_YN_twice": "1",
//
"cat_twice_pre": "class=\"mv_list",
//
"cat_twice_suf": "class=\"lei_copy",
//
"cat_arr_pre": "<li",
//
"cat_arr_suf": "/li>",
//&&
"cat_pic": "<img src=\"&&\"",
//&&
"cat_title": "title=\"&&\"",
//&&
"cat_subtitle": "class=\"time\">&&<",
//&&
"cat_url": "href=\"&&\"",
//
"cat_prefix": "https://www.kuqimv.com",
//
"cat_suffix": "",
//{wd}post;post
//POST http://www.lezhutv.com/index.php?m=vod-search;post
"search_url": "空",
//POSTbodysearchwordwdPOST
"sea_PtBody":"空",
//,0jsonlist
"search_mode": "0",
//json
"jsonpic": "pic",
//json
"jsonname": "name",
//json
"jsonid": "id",
//json
"jsonstitle":"",
//
"sea_YN_twice": "0",
//
"sea_twice_pre": "空",
//
"sea_twice_suf": "空",
//
"sea_arr_pre": "空",
//
"sea_arr_suf": "空",
//&&
"sea_pic": "data-original=\"&&\"",
//&&
"sea_title": "title=\"&&\"",
//&&
"sea_url": "href=\"&&\"",
//
"search_prefix": "http://www.lezhutv.com",
//json
"search_suffix": "",
//&&
"sea_subtitle": "",
//10
"force_play": "1",
//
"play_prefix": "",
//#isVideo=true#
"play_suffix": "",
//#
"play_header": "",
//&&
"proj_actor": "主演:</span>&&</p>",
//&&
"proj_plot": "简介:</span>&&</p>",
//线tab_titletab_arr_pre
//线
"tab_YN_twice": "0",
//线
"tab_twice_pre": "",
//线
"tab_twice_suf": "",
//线
"tab_arr_pre": "空",
//线
"tab_arr_suf": "空",
//线&&
"tab_title": "空",
//
"list_YN_twice": "0",
//
"list_twice_pre": "空",
//
"list_twice_suf": "空",
//
"list_arr_pre": "空",
//
"list_arr_suf": "空",
//
"epi_YN_twice": "0",
//
"epi_twice_pre": "空",
//
"epi_twice_suf": "空",
//
"epi_arr_pre": "",
//
"epi_arr_suf": "",
//&&
"epi_title": "",
//&&
"epi_url": "",
//
"epiurl_prefix": "",
//
"epiurl_suffix": "",
//
//<script type="text/javascript">var player_aaaa={"flag":"play","encrypt
//0
"Anal_MacPlayer":"0",
//01
"ManualSniffer":"0",
//#
"VideoFormat":"playlist.m3u8#.mp4#.m3u8#.flv"
}

View File

@ -0,0 +1,87 @@
{
"规则名": "有声小说吧",
"规则作者": "香雅情",
"请求头参数": "User-Agent$手机",
"网页编码格式": "gb2312",
"图片是否需要代理": "0",
"是否开启获取首页数据": "1",
"首页推荐链接": "http://m.ysxs8.vip",
"首页列表数组规则": "body&&.list-ul",
"首页片单列表数组规则": ".list-li",
"首页片单是否Jsoup写法": "1",
"首页片单标题": ".list-name&&Text",
"首页片单链接": "a&&href!..",
"首页片单图片": "img&&data-original",
"首页片单副标题": ".module-slide-author&&Text",
"首页片单链接加前缀": "http://m.ysxs8.vip",
"首页片单链接加后缀": "",
"分类起始页码": "1",
"分类链接": "http://m.ysxs8.vip/downlist/r{cateId}_{catePg}.html",
"分类名称": "网络玄幻&恐怖悬疑&评书下载&儿童读物&管理营销&相声戏曲&传统武侠&都市言情&官场刑侦&历史军事&人物传记&广播剧&百家讲坛&外语读物&有声文学&探险盗墓&职场商战",
"分类名称替换词": "52&17&3&4&6&7&12&13&14&15&16&18&32&35&41&45&81",
"筛选数据": {},
//"筛选数据": "ext",
//{cateId}
"筛选子分类名称": "",
"筛选子分类替换词": "",
//{class}
"筛选类型名称": "",
"筛选类型替换词": "*",
//{area}
"筛选地区名称": "",
"筛选地区替换词": "*",
//{year}
"筛选年份名称": "",
"筛选年份替换词": "*",
//{lang}
"筛选语言名称": "",
"筛选语言替换词": "*",
//{by}
"筛选排序名称": "",
"筛选排序替换词": "",
"分类截取模式": "1",
"分类列表数组规则": "body&&.book-li",
"分类片单是否Jsoup写法": "1",
"分类片单标题": ".book-title&&Text",
"分类片单链接": "a&&href!..",
"分类片单图片": "img&&data-original",
"分类片单副标题": ".book-meta&&Text",
"分类片单链接加前缀": "http://m.ysxs8.vip",
"分类片单链接加后缀": "",
"搜索请求头参数": "User-Agent$手机",
"搜索链接": "http://m.ysxs8.vip/search.asp?page=1&searchword={wd}&searchtype=-1",
"POST请求数据": "",
"搜索截取模式": "1",
"搜索列表数组规则": "body&&.book-li",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": "img&&data-original",
"搜索片单标题": "h4&&Text",
"搜索片单链接": "a&&href!..",
"搜索片单副标题": ".book-meta&&Text",
"搜索片单链接加前缀": "http://m.ysxs8.vip",
"搜索片单链接加后缀": "",
"链接是否直接播放": "0",
"直接播放链接加前缀": "",
"直接播放链接加后缀": "",
"直接播放直链视频请求头": "",
"详情是否Jsoup写法": "1",
"类型详情": "",
"年代详情": "",
"地区详情": "",
"演员详情": "",
"简介详情": ".book-des&&Text",
"线路列表数组规则": "body&&.js_module_list",
"线路标题": "h2&&Text",
"播放列表数组规则": "body&&#playlist",
"选集列表数组规则": "li",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "http://m.ysxs8.vip",
"选集链接加后缀": "",
"分析MacPlayer": "0",
"是否开启手动嗅探": "1",
"手动嗅探视频链接关键词": ".mp3#.m4a",
"手动嗅探视频链接过滤词": ".html#=http"
}

View File

@ -0,0 +1,70 @@
{
"规则名": "pipiya",
"规则作者": "xx",
"请求头参数": "User-Agent$PC_UA",
"网页编码格式": "UTF-8",
"是否开启获取首页数据": "1",
"首页推荐链接": "https://www.pipiya.cc/",
"首页列表数组规则": "body&&.list-vod",
"首页片单列表数组规则": ".public-list-box",
"首页片单是否Jsoup写法": "1",
"首页片单标题": "a&&title",
"首页片单链接": "a&&href",
"首页片单图片": ".lazy&&data-original",
"首页片单副标题": ".public-list-prb&&Text",
"首页片单链接加前缀": "https://www.pipiya.cc",
"分类起始页码": "1",
"分类链接": "https://www.pipiya.cc/vodtype/{cateId}/area/{area}/class/{class}/year/{year}.html",
"分类名称": "电影&国产剧&美剧&日韩剧&泰剧&其他剧&动漫",
"分类名称替换词": "20&26&21&28&24&27&25",
"筛选数据": "ext",
"筛选地区名称": "大陆&香港&台湾&美国&韩国&日本&法国&英国&德国&泰国&印度&西班牙&意大利&加拿大&其他",
"筛选地区替换词": "*",
"筛选年份名称": "2023&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004",
"筛选排序名称": "时间&人气&评分",
"筛选排序替换词": "time&hits&score",
"分类截取模式": "1",
"分类列表数组规则": "body&&.list-vod&&.public-list-box",
"分类片单是否Jsoup写法": "1",
"分类片单标题": "a&&title",
"分类片单链接": "a&&href",
"分类片单图片": ".lazy&&data-original",
"分类片单副标题": ".public-list-prb&&Text",
"分类片单链接加前缀": "https://www.pipiya.cc",
"搜索请求头参数": "User-Agent$PC_UA",
"搜索链接": "https://www.pipiya.cc/vodsearch.html?wd={wd}",
"POST请求数据": "",
"搜索截取模式": "1",
"搜索列表数组规则": "body&&.search-box.flex.rel",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": ".lazy&&data-original",
"搜索片单标题": ".thumb-txt.cor4.hide&&Text",
"搜索片单链接": ".public-list-exp&&href",
"搜索片单副标题": ".public-list-prb.hide.ft2&&Text",
"搜索片单链接加前缀": "https://www.pipiya.cc",
"搜索片单链接加后缀": "",
"链接是否直接播放": "0",
"直接播放链接加前缀": "https://www.pipiya.cc",
"直接播放链接加后缀": "#isVideo=true#",
"直接播放直链视频请求头": "",
"详情是否Jsoup写法": "1",
"类型详情": ".slide-info,3&&Text!类型 :",
"年代详情": ".slide-info,0&&.slide-info-remarks,1&&Text",
"地区详情": ".slide-info,0&&.slide-info-remarks,2&&Text",
"演员详情": ".slide-info,2&&Text!演员 :",
"简介详情": "#height_limit&&Text",
"线路列表数组规则": "body&&.nav-swiper&&a",
"线路标题": "Text!",
"播放列表数组规则": "body&&.anthology-list-play",
"选集列表数组规则": "li",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "https://www.pipiya.cc",
"选集链接加后缀": "",
"分析MacPlayer": "0",
"是否开启手动嗅探": "1",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#.m3u8?#vkey=",
"手动嗅探视频链接过滤词": ".html#=http#=https"
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,74 @@
{
"规则名": "野马影视",
"规则作者": "xx",
"请求头参数": "电脑",
"网页编码格式": "UTF-8",
"图片是否需要代理": "0",
"是否开启获取首页数据": "1",
"首页推荐链接": "http://v.yemays.tk",
"首页列表数组规则": "body&&.myui-vodlist",
"首页片单列表数组规则": "li",
"首页片单是否Jsoup写法": "1",
"分类起始页码": "1",
"分类链接": "http://v.yemays.tk/vodshow/{cateId}-{area}-{by}-{class}-----{catePg}---{year}.htmll",
"分类名称": "电影&电视剧&综艺&动漫",
"分类名称替换词": "1&2&3&4",
"筛选数据": "ext",
"筛选子分类名称": "动作片&爱情片&科幻片&恐怖片&战争片&喜剧片&剧情片||港台剧&欧美剧&韩剧",
"筛选子分类替换词": "6&7&8&9&10&11&12||14&15&16",
"筛选类型名称": "动作&喜剧&爱情&科幻&剧情&悬疑&惊悚&恐怖&犯罪&谍战&冒险&奇幻&灾难&战争&动画&歌舞&历史&传记&其他||武侠&喜剧&爱情&剧情&青春&悬疑&科幻&军事&警匪&谍战&奇幻&偶像&年代&乡村&都市&家庭&古装&历史&神话&其他||脱口秀&真人秀&搞笑&访谈&生活&晚会&美食&游戏&亲子&旅游&文化&体育&时尚&纪实&益智&演艺&歌舞&播报&音乐&其他||热血&格斗&恋爱&少女&校园&搞笑&神魔&机战&科幻&真人&青春&魔法&神话&冒险&运动&竞技&童话&亲子&教育&励志&剧情&其他",
"筛选类型替换词": "*",
"筛选地区名称": "大陆&香港&台湾&美国&韩国&日本&法国&英国&德国&泰国&印度&西班牙&意大利&加拿大&其他",
"筛选地区替换词": "*",
"筛选年份名称": "2023&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004",
"筛选年份替换词": "*",
"筛选语言名称": "普通话&英语&粤语&闽南语&韩语&日语&其他",
"筛选语言替换词": "*",
"筛选排序名称": "更新时间&人气排序&评分排序",
"筛选排序替换词": "time&hits&score",
"分类截取模式": "1",
"分类列表数组规则": ".myui-vodlist&&li",
"分类片单是否Jsoup写法": "1",
"分类片单标题": "h4&&a&&Text",
"分类片单链接": "h4&&a&&href",
"分类片单图片": ".lazyload&&data-original",
"分类片单副标题": ".pic-text&&Text",
"分类片单链接加前缀": "http://v.yemays.tk",
"分类片单链接加后缀": "",
"搜索请求头参数": "User-Agent$电脑",
"搜索链接": "http://v.yemays.tk/vodsearch/{wd}----------1---.html",
"POST请求数据": "",
"搜索截取模式": "1",
"搜索列表数组规则": ".myui-vodlist__media&&li",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": ".lazyload&&data-original",
"搜索片单标题": "h4&&a&&Text",
"搜索片单链接": "h4&&a&&href",
"搜索片单副标题": ".pic-text&&Text",
"搜索片单链接加前缀": "http://v.yemays.tk",
"搜索片单链接加后缀": "",
"链接是否直接播放": "0",
"直接播放链接加前缀": "https://live.52sf.ga/huya/",
"直接播放链接加后缀": "#isVideo=true#",
"直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online",
"详情是否Jsoup写法": "0",
"类型详情": "剧情:</span>&&</p",
"年代详情": "更新:</span>&&</p",
"地区详情": "地区:</span>&&</p",
"演员详情": "主演:</span>&&</p",
"简介详情": "<span class=\"data\" style=\"display: none;\"><p>&&</p>",
"线路列表数组规则": ".nav-tabs&&li",
"线路标题": "Text",
"播放列表数组规则": "body&&.myui-content__list",
"选集列表数组规则": "li",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "http://v.yemays.tk",
"选集链接加后缀": "",
"分析MacPlayer": "",
"是否开启手动嗅探": "1",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#upmso.com",
"手动嗅探视频链接过滤词": ".html#=http"
}

1
0307fty/ali/token.txt Normal file
View File

@ -0,0 +1 @@
b9ef8bd2e30648b2ba5f41abc3699cfc

30
0307fty/js/88看球.js Normal file
View File

@ -0,0 +1,30 @@
var rule = {
title:'88看球',
// host:'http://www.88kanqiu.cc',
host:'http://www.88kanqiu.live',
url:'/match/fyclass/live',
searchUrl:'',
searchable:0,
quickSearch:0,
class_parse:'.nav-pills li;a&&Text;a&&href;/match/(\\d+)/live',
headers:{
'User-Agent':'PC_UA'
},
timeout:5000,
play_parse:true,
lazy:'',
limit:6,
double:false,
推荐:'*',
一级:'.list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href',
二级:{
"title":".game-info-container&&Text;.customer-navbar-nav li&&Text",
"img":"img&&src",
"desc":";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text",
"content":"div.game-time&&Text",
"tabs":"js:TABS=['88看球']",
// "lists":"js:LISTS=[];input=input+'-url';let html=request(input);let data=JSON.parse(html);TABS.forEach(function(tab){let m3u=data;let d=m3u.map(function(it){return it.name+'$'+play_url+it.url});LISTS.push(d)});"
"lists":"js:LISTS=[];input=input+'-url';let html=request(input);let data=JSON.parse(html);TABS.forEach(function(tab){let m3u=data;let d=m3u.map(function(it){return it.name+'$'+it.url});LISTS.push(d)});"
},
搜索:'',
}

36
0307fty/js/drpy.js Normal file

File diff suppressed because one or more lines are too long

1
0307fty/js/drpy.min.js vendored Normal file

File diff suppressed because one or more lines are too long

26
0307fty/js/兔小贝.js Normal file
View File

@ -0,0 +1,26 @@
var rule = {
title:'兔小贝',
host:'https://www.tuxiaobei.com',
homeUrl:'',
url:'/list/mip-data?typeId=fyclass&page=fypage&callback=',
detailUrl:'/play/fyid',
searchUrl:'/search/index?key=**',
searchable:2,
headers:{
'User-Agent':'MOBILE_UA'
},
timeout:5000,
class_url:'2&3&4&25',
class_name:'儿歌&故事&国学&启蒙',
//class_name:'#page-viewport&&ul&&li;.text&&Text;a&&href;/(.*)',
cate_exclude:'应用',
推荐:'.pic-list.list-box;.items;.text&&Text;mip-img&&src;.all&&Text;a&&href',
double:true,
limit:5,
play_parse:true,
lazy:'js:fetch_params.headers["user-agent"] = IOS_UA;let html=fetch(input,fetch_params);let src = jsp.pdfh(html,"body&&#videoWrap&&video-src");input=src;',
// 一级:'json:data.items;name;image;collect_num;category_id+video_id',
一级:'json:data.items;name;image;duration_string;video_id',
二级:'*',
搜索:'.list-con&&.items;.text&&Text;mip-img&&src;.time&&Text;a&&href',
}

274
0307fty/js/模板.js Normal file
View File

@ -0,0 +1,274 @@
if (typeof Object.assign != 'function') {
Object.assign = function () {
var target = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
function getMubans() {
var mubanDict = { // 模板字典
mxpro: {
title: '',
host: '',
// homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".module-tab-item",
"lists": ".module-play-list:eq(#id) a"
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
"title": "h1&&Text;.tag-link&&Text",
"img": ".module-item-pic&&img&&data-src",
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
"content": ".vod_content&&Text",
"tabs": ".module-tab-item",
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
"img": ".myui-content__thumb .lazyload&&data-original",
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
"content": ".content&&Text",
"tabs": ".nav-tabs:eq(0) li",
"lists": ".myui-content__list:eq(#id) li"
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
// "Cookie": ""
},
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
"img": ".stui-content__thumb .lazyload&&data-original",
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
"content": ".detail&&Text",
"tabs": ".stui-vodlist__head h3",
"lists": ".stui-content__playlist:eq(#id) li"
},
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
默认: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/-------------.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: '',
limit: 6,
double: true, // 推荐内容是否双层定位
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
"img": ".fed-list-info&&a&&data-original",
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
"content": ".fed-part-esan&&Text",
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
double: true,
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
"img": ".hl-lazy&&data-original",
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
"content": ".hl-content-text&&Text",
"tabs": ".hl-tabs&&a",
"lists": ".hl-plays-list:eq(#id)&&li"
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
double: true,
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
"title": "h2&&Text;.deployment&&Text",
"img": ".lazy&&data-original",
"desc": ".deployment&&Text",
"content": ".ec-show&&Text",
"tabs": "#tag&&a",
"lists": ".play_list_box:eq(#id)&&li"
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
短视: {
title: '',
host: '',
// homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
"img": ".img&&img&&data-src",
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
"content": ".zkjj_a&&Text",
"tabs": ".py-tabs&&option",
"lists": ".player:eq(#id) li"
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
}
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};

2734
0307fty/live.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
0307fty/localxd_0307fty.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
使用方法:
1、复制以下本地配置地址
2、app端操作点开“配置地址”/“配置文件填写",有“存储权限”的点一下,保持此界面不动;
3、浏览器操作本机/同局域网打开步骤1显示的地址点配置上传本地包自动解压
步骤3等效操作将本地包中tvboxhh解压放到根目录
4、继续在步骤3的页面中"请输入自定义配置接口地址"处粘贴步骤1复制的本地配置地址点"确定"
5、回到步骤2界面确认步骤4粘贴内容已显示在"确定"左侧,点“确定”。返回主页即可享用。
本地配置地址:
影视TV用
file://tvboxhh/0307fty/localxd_0307fty.bmp
TVBox用
clan://localhost/tvboxhh/0307fty/localxd_0307fty.json
频道https://t.me/TVBox_local
local by xhh
本地化模式:全本地,相对路径

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -0,0 +1 @@
clan://localhost/tvboxhh/0307fty/localxd_0307fty.json

BIN
0307yyds/100.jar Normal file

Binary file not shown.

121
0307yyds/AList/Alist1.json Normal file
View File

@ -0,0 +1,121 @@
{
"drives": [
{
"name": "👧小丫",
"server": "https://pan.d1.mk"
},
{
"name": "⭕️歐逼",
"server": "https://alistcn.repl.co"
},
{
"name": "🌊云哲小站",
"server": "http://202.81.231.111:50526"
},
{
"name": "🐮98NB",
"server": "https://a.98nb.ga"
},
{
"name": "🍆神器云",
"server": "https://al.chirmyram.com"
},
{
"name": "🎢arhome",
"server": "https://xn--ar-4g8e.tk"
},
{
"name": "💢姹莱坞",
"server": "https://a.aa01.ml",
"passwd": "agree"
},
{
"name": "🧬杜比",
"server": "https://dubi.tk"
},
{
"name": "🥼帥盘",
"server": "https://hi.shuaipeng.wang"
},
{
"name": "🌤晴园宝藏",
"server": "https://alist.52qy.repl.co"
},
{
"name": "🐭米奇妙妙屋",
"server": "https://anime.mqmmw.ga"
},
{
"name": "💂小兵网盘",
"server": "https://6vv.app"
},
{
"name": "🐋一只鱼",
"server": "https://alist.youte.ml"
},
{
"name": "🐉神族九帝",
"server": "https://alist.shenzjd.com"
},
{
"name": "☃姬路白雪",
"server": "https://pan.jlbx.xyz"
},
{
"name": "🕵好汉吧",
"server": "https://8023.haohanba.cn"
},
{
"name": "🎡資源小站",
"server": "https://960303.xyz"
},
{
"name": "🎧听闻网盘",
"server": "https://wangpan.sangxuesheng.com"
},
{
"name": "💾DISK",
"server": "http://124.222.140.243:8080"
},
{
"name": "🌨云播放",
"server": "https://quanzi.laoxianghuijia.cn"
},
{
"name": "✨星梦",
"server": "https://pan.bashroot.top"
},
{
"name": "💫触光",
"server": "https://pan.ichuguang.com"
},
{
"name": "🥒SB盘",
"server": "http://sbpan.tk"
},
{
"name": "🧔老刘备",
"server": "https://ali.liucn.repl.co"
},
{
"name": "🌨秋雨分享",
"server": "https://share.laowang.me"
},
{
"name": "🌼菊花盘",
"server": "https://pan.142856.xyz"
},
{
"name": " 👀梓澪",
"server": "https://zi0.cc"
},
{
"name": "💦讯维",
"server": "https://pan.xwbeta.com"
},
{
"name": "🦀9T(Adult)",
"server": "https://drive.9t.ee"
}
]
}

4394
0307yyds/Bili/bili.json Normal file

File diff suppressed because it is too large Load Diff

301
0307yyds/Nmys/Nmys.json Normal file
View File

@ -0,0 +1,301 @@
{
"author": "春风",
"ua": "Mozilla/5.0 (Linux; Android 10; LYA-AL00; HMSCore 6.4.0.312; GMSCore 20.15.16) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.4.300 Mobile Safari/537.36",
"homeUrl": "https://v.xiangdao.me",
"dcVipFlag": "true",
"dcPlayUrl": "true",
"cateManual": {
"电影": "1",
"连续剧": "2",
"动漫": "4",
"综艺": "3"
},
"homeVodNode": "//section/section[position()>2]//ul[@class='resize_list']/li/a",
"homeVodName": "/@title",
"homeVodId": "/@href",
"homeVodIdR": "/(S+).html",
"homeVodImg": "//@data-echo",
"homeVodImgR": "",
"homeVodMark": "/div/span[2]/span/text()",
"cateUrl": "https://v.xiangdao.me/index.php?m=vod-list-id-{cateId}-pg-{catePg}.html",
"cateVodNode": "//ul[@class='resize_list']/li/a",
"cateVodName": "/@title",
"cateVodId": "/@href",
"cateVodIdR": "/(S+).html",
"cateVodImg": "//@data-echo",
"cateVodImgR": "",
"cateVodMark": "/div/span[2]/span/em/text()",
"dtUrl": "https://v.xiangdao.me/{vid}.html",
"dtNode": "//body",
"dtName": "//section[@class='page-hd']/a/@title",
"dtNameR": "",
"dtImg": "//section[@class='page-hd']/a/img/@src",
"dtImgR": "",
"dtCate": "",
"dtCateR": "",
"dtYear": "//span[contains(text(), '年代')]/following-sibling::a/text()",
"dtYearR": "",
"dtArea": "",
"dtAreaR": "",
"dtDirector": "//span[contains(text(), '导演')]/following-sibling::a/text()",
"dtDirectorR": "",
"dtActor": "//span[contains(text(), '主演')]/following-sibling::a/text()",
"dtActorR": "",
"dtDesc": "//article[@class='detail-con']/p/text()",
"dtDescR": "",
"dtFromNode": "//div[@class='hd']/ul/li/a",
"dtFromName": "/text()",
"dtFromNameR": "",
"dtUrlNode": "//div[@class='numList']/ul",
"dtUrlSubNode": "/li/a",
"dtUrlId": "@href",
"dtUrlIdR": "/(S+).html",
"dtUrlName": "/text()",
"dtUrlNameR": "",
"playUrl": "https://v.xiangdao.me/{playUrl}.html",
"playUa": "",
"searchUrl": "https://v.xiangdao.me/index.php?m=vod-search&wd={wd}",
"scVodNode": "//ul[@class='ulPicTxt clearfix']/li",
"scVodName": "//span[@class='sTit']/text()",
"scVodId": "//span[@class='sBtn']/a/@href",
"scVodIdR": "/(S+).html",
"scVodImg": "//img/@data-src",
"scVodMark": "//span[@class='sDes'][2]/text()",
"filter":{
"1": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"1"},
{"n":"动作片","v":"5"},
{"n":"喜剧片","v":"6"},
{"n":"爱情片","v":"7"},
{"n":"科幻片","v":"8"},
{"n":"恐怖片","v":"9"},
{"n":"剧情片","v":"10"},
{"n":"战争片","v":"11"},
{"n":"惊悚片","v":"16"},
{"n":"奇幻片","v":"17"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
],
"2": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"2"},
{"n":"国产剧","v":"12"},
{"n":"港台剧","v":"13"},
{"n":"日韩剧","v":"14"},
{"n":"欧美剧","v":"15"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
],
"3": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"3"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
],
"4": [
{
"name":"类型",
"key":"cateId",
"value":[
{"n":"全部","v":"4"},
{"n":"动漫剧","v":"18"},
{"n":"动漫片","v":"19"}
]},
{
"name":"年份",
"key":"year",
"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"}
]},
{
"name":"地区",
"key":"area",
"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":"加拿大"}
]},
{
"name":"排序",
"key":"by",
"value":[
{"n":"全部","v":""},
{"n":"时间","v":"time"},
{"n":"人气","v":"hits"},
{"n":"评分","v":"score"}
]}
]
}
}

72
0307yyds/XPath/qie.json Normal file
View File

@ -0,0 +1,72 @@
{
"author": "率性而活",
"ua":"Mozilla/5.0 (Linux; Android 8.1.0; OPPO R11t Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.19 SP-engine/2.15.0 baiduboxapp/11.19.5.10 (Baidu; P1 8.1.0)",
//125.88.199.34 m.live.qq.com
//"dcVipFlag": "true",
//"dcPlayUrl": "true",
"homeUrl": "https://m.live.qq.com/directory/game/Basketball",
"cateManual": {
"篮球": "directory/game/Basketball",
"足球":"directory/game/Football",
"搏击":"directory/game/Fight",
"网球排球":"directory/game/Tennis",
"英文原声":"directory/game/English",
"台球":"directory/game/Billiards",
"棒球/橄榄球/冰球":"directory/game/MLB",
"NBA":"directory/game/NBA",
"CBA":"directory/game/CBA",
"颜值":"directory/game/YZ",
"棋牌/游戏":"directory/game/Game"
},
"homeVodNode": "//a[contains(@href,'/10')]","homeVodName": "/div/following-sibling::p[1]/text()","homeVodId": "/@href","homeVodIdR": "/(\\S+)","homeVodImg": "//div[contains(@style,'http')]/@style","homeVodImgR": "(http.*?jpg)","homeVodMark": "",
"cateUrl": "https://m.live.qq.com/{cateId}",
"cateVodNode": "//a[contains(@href,'/10')]",
"cateVodName": "/div/following-sibling::p[1]/text()",
"cateVodId": "/@href",
"cateVodIdR": "/(\\S+)",
"cateVodImg": "//div[contains(@style,'http')]/@style",
"cateVodImgR": "(http.*?jpg)",
"cateVodMark": "",
//
"dtUrl": "https://m.live.qq.com/{vid}",
"dtNode": "//body",
"dtName": "//p[contains(@class,'p-title')]/text()",
"dtNameR": "(“.*?”)",
"dtImg": "//div[contains(@class,'share-bar')]/@data-pic",
"dtImgR": "",
"dtCate": "",
"dtCateR": "",
"dtYear": "",
"dtYearR": "",
"dtArea": "",
"dtAreaR": "",
"dtDirector": "",
"dtDirectorR": "",
"dtActor": "",
"dtActorR": "",
"dtDesc": "",
"dtDescR": "",
"dtFromNode": "//p[contains(@class,'p-title')]",
"dtFromName": "/text()",
"dtFromNameR": "(\\企鹅体育)",
"dtUrlNode": "//div[contains(@class,'wenzi')]",
"dtUrlSubNode": "/a",
"dtUrlId": "/text()",
"dtUrlIdR": "m.live.qq.com/(\\S+)",
"dtUrlName": "/text()",
"dtUrlNameR": "(\\d+)",
"playUrl": "https://m.live.qq.com/{playUrl}",
"playUa":"{\"User-Agent\":\"okhttp/3.12.11\"}"
}

View File

@ -0,0 +1,41 @@
{
"ua": "",
"homeUrl": "https://dm84.tv",
"cateNode": "//ul[contains(@class,'nav_row')]/li/a[contains(@href, '.html')]",
"cateName": "/text()",
"cateId": "/@href",
"cateIdR": "/list-(\\d+).html",
"cateManual": {},
"homeVodNode": "//ul[@class='v_list']/li/div[@class='item']",
"homeVodName": "/a[@class='title']/@title",
"homeVodId": "/a[@class='title']/@href",
"homeVodIdR": "/v/(\\w+).html",
"homeVodImg": "/a/@data-bg",
"homeVodMark": "/span[@class='desc']/text()",
"cateUrl": "https://dm84.tv/list-{cateId}-{catePg}.html",
"cateVodNode": "//ul[@class='v_list']/li/div[@class='item']",
"cateVodName": "/a[@class='title']/@title",
"cateVodId": "/a[@class='title']/@href",
"cateVodIdR": "/v/(\\w+).html",
"cateVodImg": "/a/@data-bg",
"cateVodMark": "/span[@class='desc']/text()",
"dtUrl": "https://dm84.tv/v/{vid}.html",
"dtNode": "//div[contains(@class,'v_content')]",
"dtName": "/parent::*/h1[@class='v_title']/a/text()",
"dtImg": "/div[@class='cover']/img/@src",
"dtFromNode": "//ul[contains(@class,'play_from')]/li",
"dtFromName": "/text()",
"dtUrlNode": "//ul[contains(@class,'play_list')]",
"dtUrlSubNode": "/li/a",
"dtUrlId": "@href",
"dtUrlIdR": "/p/(\\S+).html",
"dtUrlName": "/text()",
"playUrl": "https://dm84.tv/p/{playUrl}.html",
"searchUrl": "https://dm84.tv/s----------.html?wd={wd}",
"scVodNode": "//ul[@class='v_list']/li/div[@class='item']",
"scVodName": "/a[@class='title']/@title",
"scVodId": "/a[@class='title']/@href",
"scVodIdR": "/v/(\\w+).html",
"scVodImg": "/a/@data-bg",
"scVodMark": "/span[@class='desc']/text()"
}

View File

@ -0,0 +1,41 @@
{
"ua": "",
"homeUrl": "https://dm84.tv",
"cateNode": "//ul[contains(@class,'nav_row')]/li/a[contains(@href, '.html')]",
"cateName": "/text()",
"cateId": "/@href",
"cateIdR": "/list-(\\d+).html",
"cateManual": {},
"homeVodNode": "//ul[@class='v_list']/li/div[@class='item']",
"homeVodName": "/a[@class='title']/@title",
"homeVodId": "/a[@class='title']/@href",
"homeVodIdR": "/v/(\\w+).html",
"homeVodImg": "/a/@data-bg",
"homeVodMark": "/span[@class='desc']/text()",
"cateUrl": "https://dm84.tv/list-{cateId}-{catePg}.html",
"cateVodNode": "//ul[@class='v_list']/li/div[@class='item']",
"cateVodName": "/a[@class='title']/@title",
"cateVodId": "/a[@class='title']/@href",
"cateVodIdR": "/v/(\\w+).html",
"cateVodImg": "/a/@data-bg",
"cateVodMark": "/span[@class='desc']/text()",
"dtUrl": "https://dm84.tv/v/{vid}.html",
"dtNode": "//div[contains(@class,'v_content')]",
"dtName": "/parent::*/h1[@class='v_title']/a/text()",
"dtImg": "/div[@class='cover']/img/@src",
"dtFromNode": "//ul[contains(@class,'play_from')]/li",
"dtFromName": "/text()",
"dtUrlNode": "//ul[contains(@class,'play_list')]",
"dtUrlSubNode": "/li/a",
"dtUrlId": "@href",
"dtUrlIdR": "/p/(\\S+).html",
"dtUrlName": "/text()",
"playUrl": "https://dm84.tv/p/{playUrl}.html",
"searchUrl": "https://dm84.tv/s----------.html?wd={wd}",
"scVodNode": "//ul[@class='v_list']/li/div[@class='item']",
"scVodName": "/a[@class='title']/@title",
"scVodId": "/a[@class='title']/@href",
"scVodIdR": "/v/(\\w+).html",
"scVodImg": "/a/@data-bg",
"scVodMark": "/span[@class='desc']/text()"
}

View File

@ -0,0 +1,67 @@
{
"ua": "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",
"homeUrl": "https://www.yinfans.me",
"dcPlayUrl": "true",
"cateNode": "//a[contains(@href,'/s/')]",
"cateName": "concat(//span[contains(@class,'nav-link-title')]/text(),//a[contains(@class,'dropdown-item')]/text())",
"cateId": "/@href",
"cateIdR": "/s/(\\w+)",
"cateManual": {
"首页推荐": "page",
"蓝光原盘电影": "topic/bluray-movie/movie/page",
"蓝光原盘纪录片": "topic/bluray-movie/documentry/page",
"4K": "topic/4k/page"
},
"homeVodNode": "//div[contains(@class,'mainleft')]/ul/li/div[contains(@class,'thumbnail')]",
"homeVodName": "/a/@title",
"homeVodId": "/a/@href",
"homeVodIdR": "https://www.yinfans.me/movie/(\\S+)",
"homeVodImg": "/a/img/@src",
"homeVodImgR": "\\S+(http\\S+)",
"homeVodMark": "../div[contains(@class,'info')]/span[2]/a/text()",
"cateUrl": "https://www.yinfans.me/{cateId}/{catePg}",
"cateVodNode": "//div[contains(@class,'mainleft')]/ul/li/div[contains(@class,'thumbnail')]",
"cateVodName": "/a/@title",
"cateVodId": "/a/@href",
"cateVodIdR": "https://www.yinfans.me/movie/(\\S+)",
"cateVodImg": "/a/img/@src",
"cateVodImgR": "\\S+(http\\S+)",
"cateVodMark": "../div[contains(@class,'info')]/span[2]/a/text()",
"dtUrl": "https://www.yinfans.me/movie/{vid}",
"dtNode": "//div[@class='mainleft']",
"dtName": "/div[1]/h1/text()",
"dtNameR": "",
"dtImg": "/div[1]//div[@class='context']/div[1]/p[1]/a/@href",
"dtImgR": "",
"dtCate": "/div[1]//div[@class='context']/div[1]/p[2]/text()[5]",
"dtArea": "/div[1]//div[@class='context']/div[1]/p[2]/text()[4]",
"dtAreaR": "",
"dtYear": "/div[1]//div[@class='context']/div[1]/p[2]/text()[7]",
"dtYearR": "",
"dtActor": "/div[1]//div[@class='context']/div[1]/p[2]/text()[14]",
"dtDirector": "/div[1]//div[@class='context']/div[1]/p[2]/text()[13]",
"dtDesc": "/div[1]//div[@class='context']/div[1]/p[4]/text()",
"dtFromNode": "//div[@class='tab-pane active']",
"dtFromName": "//div[@class='btn-group']/label[1]/text()",
"dtUrlNode": "//table[@id='cili']/tbody",
"dtUrlSubNode": "/tr[1]/td/a",
"dtUrlId": "@href",
"dtUrlIdR": "",
"dtUrlName": "concat(//span/span[1]/text(),'--', //span[@class='label label-warning']/text())",
"playUrl": "",
"playUa": "",
"searchUrl": "",
"scVodNode": "json:list",
"scVodName": "name",
"scVodId": "id",
"scVodIdR": "",
"scVodImg": "pic",
"scVodMark": ""
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,386 @@
{
"author":"takagen99",
"ua": "",
//"homeUrl": "https://www.duboku.tv/",
"homeUrl": "https://u.duboku.io/",
"dcVipFlag": "true",
"dcPlayUrl": "true",
"cateNode": "//ul[contains(@class,'nav-menu')]/li/a[contains(@href, 'vodtype')]",
"cateName": "/text()",
"cateId": "/@href",
"cateIdR": "/vodtype/(\\w+).html",
"cateManual": {
"国产剧": "13",
"日韩剧": "15",
"短剧": "21",
"英美剧": "16",
"台泰剧": "14",
"港剧": "20",
"综艺": "3",
"动漫": "4"
},
// Home Summary ================================================
"homeVodNode": "//ul[contains(@class,'myui-vodlist')]/li/div/a",
"homeVodName": "/@title",
"homeVodId": "/@href",
"homeVodIdR": "/voddetail/(\\w+).html",
"homeVodImg": "/@data-original",
"homeVodImgR": "\\S+(http\\S+)",
"homeVodMark": "//span[contains(@class,'pic-text')]/text()",
// Category Summary ================================================
"cateUrl": "https://u.duboku.io/vodshow/{cateId}-{area}-{by}------{catePg}---{year}.html",
"cateVodNode": "//ul[contains(@class,'myui-vodlist')]/li/div/a",
"cateVodName": "/@title",
"cateVodId": "/@href",
"cateVodIdR": "/voddetail/(\\w+).html",
"cateVodImg": "/@data-original",
"cateVodImgR": "\\S+(http\\S+)",
"cateVodMark": "//span[contains(@class,'pic-text')]/text()",
// Category Details ================================================
"dtUrl": "https://my.duboku.vip/voddetail/{vid}.html",
"dtNode": "//body",
"dtName": "//div[contains(@class,'myui-content__thumb')]/a/@title",
"dtNameR": "",
"dtImg": "//div[contains(@class,'myui-content__thumb')]/a/img/@data-original",
"dtImgR": "",
"dtCate": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '分类')]/following-sibling::a/text()",
"dtYear": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '年份')]/following-sibling::a/text()",
"dtArea": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '地区')]/following-sibling::a/text()",
"dtMark": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '更新')]/following-sibling::a/text()",
"dtDirector": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '导演')]/following-sibling::a/text()",
"dtActor": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '主演')]/following-sibling::a/text()",
"dtDesc": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '简介')]/following-sibling::a/text()",
// Playlist =====================================================
"dtFromNode": "//ul[contains(@class,'nav-tabs')]/li/a",
"dtFromName": "/text()",
"dtFromNameR": "",
"dtUrlNode": "//ul[contains(@class,'myui-content__list')]",
"dtUrlSubNode": "/li/a",
"dtUrlId": "/@href",
"dtUrlIdR": "/vodplay/(\\S+).html",
"dtUrlName": "/text()",
"dtUrlNameR": "",
"playUrl": "https://my.duboku.vip/vodplay/{playUrl}.html",
"playUa": "",
// Search Results ================================================
"searchUrl": "https://my.duboku.vip/index.php/ajax/suggest?mid=1&wd={wd}&limit=10",
"scVodNode": "json:list",
"scVodName": "name",
"scVodId": "id",
"scVodIdR": "",
"scVodImg": "pic",
"scVodMark": "",
// Filters =======================================================
"filter": {
"13": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"20": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"14": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"16": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"15": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"2": [
{
"key": "cateId",
"name": "类型",
"value": [
{"n": "全部","v": ""},
{"n": "陆剧","v": "13"},
{"n": "日韩剧","v": "15"},
{"n": "英美剧","v": "16"},
{"n": "台泰剧","v": "14"},
{"n": "港剧","v": "20"}
]
},
{
"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": "荷兰"}
]
},
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"3": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"4": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"20": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
],
"21": [
{
"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"}
]
},
{
"key": "by",
"name": "排序",
"value": [
{"n": "排序","v": ""},
{"n": "时间","v": "time"},
{"n": "人气","v": "hits"},
{"n": "评分","v": "score"}
]
}
]
}
}

View File

@ -0,0 +1,70 @@
{
"title": "分享短视频",
"author": "香雅情",
"UserAgent":"",
"firstpage": "1",
"class_url": "http://www.sharenice.net/{cateId}?page={catePg}[firstPage=http://www.sharenice.net/{cateId}]",
"class_name": "抖音&快手&微视&火山&场库&体育&美拍&秒拍&全民&梨&好兔&美女&正能量&搞笑&社会&游戏&娱乐&旅游&萌系&生活&音乐&美食&明星&动漫&影视&时尚",
"class_value": "douyin&kuaishou&weishi&huoshan&changku&tags/t-5L2T6IKy.html&meipai&miaopai&quanmin&lishipin&haotu&tags/t-576O5aWz.html&tags/t-5q2j6IO96YeP.html&tags/t-5pCe56yR.html&tags/t-56S+5Lya.html&tags/t-5ri45oiP.html&tags/t-5aix5LmQ.html&tags/t-5peF5ri4.html&tags/t-6JCM57O7.html&tags/t-55Sf5rS7.html&tags/t-6Z+z5LmQ.html&tags/t-576O6aOf.html&tags/t-5piO5pif.html&tags/t-5Yqo5ryr.html&tags/t-5b2x6KeG.html&tags/t-5pe25bCa.html",
"filterdata":{},
"cat_YN_twice": "1",
"cat_twice_pre": "class=\"main-container\">",
"cat_twice_suf": "<div class=\"page",
"cat_arr_pre": "<li",
"cat_arr_suf": "</li>",
"cat_pic": "original=\"&&\"",
"cat_title": "title=\"&&\"",
"cat_subtitle": "",
"cat_url": "href=\"&&\"",
"cat_prefix": "",
"cat_suffix": "",
"search_url": "",
"search_mode": "0",
"jsonpic": "pic",
"jsonname": "name",
"jsonid": "id",
"jsonstitle":"",
"sea_YN_twice": "",
"sea_twice_pre": "",
"sea_twice_suf": "",
"sea_arr_pre": "",
"sea_arr_suf": "",
"sea_pic": "",
"sea_title": "",
"sea_url": "",
"search_prefix": "",
"search_suffix": "",
"sea_subtitle": "",
"force_play": "1",
"play_prefix": "",
"play_suffix": "",
"play_header": "空",
"proj_actor": "空",
"proj_plot": "",
"tab_YN_twice": "0",
"tab_twice_pre": "",
"tab_twice_suf": "",
"tab_arr_pre": "",
"tab_arr_suf": "",
"tab_title": "",
"list_YN_twice": "0",
"list_twice_pre": "空",
"list_twice_suf": "空",
"list_arr_pre": "",
"list_arr_suf": "",
"epi_YN_twice": "0",
"epi_twice_pre": "空",
"epi_twice_suf": "空",
"epi_arr_pre": "",
"epi_arr_suf": "",
"epi_title": "",
"epi_url": "",
"epiurl_prefix": "",
"epiurl_suffix": "",
//
"ManualSniffer":"1",
//#
"VideoFormat":".mp4#.m3u8#.flv#is_play_url=1#item/video#kaiyanapp#qianpailive"
}

View File

@ -0,0 +1,119 @@
//biubiuxpath
//githubhttps://github.com/Tangsan99999/TvJarXBiubiu.java
//
{
//
"title": "网易CC直播",
//
"author": "聆听优美旋律",
//UA,okhttp/3.12.11MOBILE_UAPC_UA使UA
//UAPCUA
"UserAgent":"",
//RefererWebViewReferer
//
"Referer":"",
//Referer01
"PicNeedProxy":"0",
//01
"homeContent":"0",
//,
"firstpage": "1",
//,{cateId}{catePg}, [firstPage=]
"class_url": "http://api.cc.163.com/v1/wapcc/liveinfo?gametype={cateId}&page={catePg}",
//1&2&3
"class_name": "梦幻西游电脑版&星秀&梦幻西游手游&永劫无间&大话西游2经典版&明日之后&大话西游手游&新倩女幽魂&第五人格&倩女幽魂手游&荒野行动&大话西游2免费版&荒野行动PC模拟器&阴阳师&暗黑破坏神:不朽&率土之滨&天下3&主机单机&我的世界&游戏文化&二次元&哈利波特:魔法觉醒&宝可梦大探险&一梦江湖&光·遇&守望先锋&神都夜行录&决战!平安京&猫和老鼠&天谕手游&超激斗梦境&镇魔曲手游&王牌竞速&逆水寒&其他游戏&流星群侠传&梦幻西游三维版&魔兽世界怀旧服&风华正茂&星战前夜:无烬星河&机动都市阿尔法&忘川风华录&FPS综合游戏&非人学园&实况足球&泰亚史诗&游戏王:决斗链接&战争怒吼&漫威超级战争&大唐无双零&梦幻西游网页版&武魂2&天谕&镇魔曲&乱斗西游2&命运2&魔兽世界&暗黑破坏神&炉石传说&风暴英雄&《天下》手游&劲舞团&光明大陆&暴雪经典&三少爷的剑&迷雾世界&终结战场&战意&永远的7日之都&新游中心&狼人杀&影之诗&魂之轨迹&三国如龙传&量子特攻&堡垒前线:破坏与创造&猎魂觉醒&终结战场PC版&轩辕剑龙舞云山&实况:王者集结&权力与纷争&花与剑&易次元&Apex英雄&遇见逆水寒&阴阳师:百闻牌&青璃&阴阳师:妖怪屋&重装上阵&猎手之王&无主之地3&第九所&Badlanders&风云岛行动&一起优诺&隐世录&EVE Online&全面战争:竞技场&正能量&我的世界中国版&暴雪游戏&魔兽争霸&洪荒文明&密特拉之星&阴阳师: 妖怪小班&无尽的拉格朗日&漫威对决&月神的迷宫&有杀气童话2&零号任务&蛋仔派对&绝对演绎&绿茵信仰&大话女儿国&逆水寒手游&古风国色&巨好看&大航海之路&大富翁9&永恒文明&大唐无双手游&语音",
//1&2&3&id=0&id=1
"class_value": "3&65005&25&9133&6&9050&28&4&9045&30&9035&20&9041&9010&9144&90013&2&9022&9006&9118&65008&9109&9097&9049&9063&1007&9053&9031&9077&9085&9105&9020&9123&9051&0&9072&9075&9099&9079&9136&9061&9129&9124&9043&9055&9027&9084&9047&9089&8&9&14&21&23&24&31&1001&1004&1005&1006&9009&9012&9019&9021&9024&9025&9028&9030&9032&99999&9034&9036&9038&9039&9042&9046&9052&9054&9056&9060&9065&9069&9078&9087&9091&9092&9093&9096&9098&9100&9102&9104&9107&9108&9112&9113&9115&9119&9120&65006&9122&9127&9128&9131&9132&9134&9137&9138&9139&9140&9141&9142&9143&9146&9148&65003&65004&90014&90015&90017&90018&95599",
//clan://(bug)httpjsonxpath
"filterdata":{},
//0json1
"cat_mode": "0",
//json3
"catjsonlist": "data.live_list",
//json
"catjsonpic": "cover",
//json
"catjsonname": "title",
//json
"catjsonid": "channelid",
//json
"catjsonstitle":"nickname",
//
"cat_prefix": "https://cc.163.com/live/channel/?channelids=",
//
"cat_suffix": "",
//012
//3
"force_play": "0",
//
"play_prefix": "",
//#isVideo=true#
"play_suffix": "#isVideo=true#",
//#
"play_header": "",
//&&
"proj_actor": "",
//&&
"proj_plot": "",
//线tab_titletab_arr_pre
//线
"tab_YN_twice": "0",
//线
"tab_twice_pre": "",
//线
"tab_twice_suf": "",
//线
"tab_arr_pre": "空",
//线
"tab_arr_suf": "空",
//线&&
"tab_title": "空",
//
"list_YN_twice": "0",
//
"list_twice_pre": "空",
//
"list_twice_suf": "空",
//
"list_arr_pre": "data\": [",
//
"list_arr_suf": "follower_num",
//
"epi_YN_twice": "0",
//
"epi_twice_pre": "空",
//
"epi_twice_suf": "空",
//
"epi_arr_pre": "quickplay",
//
"epi_arr_suf": "gamename",
//&&
"epi_title": "nickname\": \"&&\"",
//&&
"epi_url": "sharefile\": \"&&\"",
//
"epiurl_prefix": "",
//
"epiurl_suffix": "",
//
//<script type="text/javascript">var player_aaaa={"flag":"play","encrypt
//0
"Anal_MacPlayer":"0",
//01
"ManualSniffer":"0",
//#
"VideoFormat":".mp4#.m3u8#.flv",
//,#
"VideoFilter":".html#=http"
}

View File

@ -0,0 +1,159 @@
//biubiuxpath
//githubhttps://github.com/Tangsan99999/TvJarXBiubiu.java
{
//
"title": "酷奇MV",
//
"author": "聆听优美旋律",
//UA,okhttp/3.12.11MOBILE_UAPC_UA使UA
//UAPCUA
"UserAgent":"PC_UA",
//RefererWebViewReferer
//
"Referer":"WebView",
"PicNeedProxy":"1",
//01
"homeContent":"0",
//,
"firstpage": "1",
//,{cateId}{catePg}, [firstPage=]
"class_url": "https://www.kuqimv.com/play/{cateId}_{catePg}.html",
//1&2&3
"class_name": "华语高清&日韩精选&欧美MV&高清现场&影视MV&夜店视频&车模视频&热舞视频&美女写真&美女打碟",
//1&2&3&id=0&id=1
"class_value": "1&2&3&4&5&6&7&8&9&10",
//jsonxpath
"filterdata":{},
//
"cat_YN_twice": "1",
//
"cat_twice_pre": "class=\"mv_list",
//
"cat_twice_suf": "class=\"lei_copy",
//
"cat_arr_pre": "<li",
//
"cat_arr_suf": "/li>",
//&&
"cat_pic": "<img src=\"&&\"",
//&&
"cat_title": "title=\"&&\"",
//&&
"cat_subtitle": "class=\"time\">&&<",
//&&
"cat_url": "href=\"&&\"",
//
"cat_prefix": "https://www.kuqimv.com",
//
"cat_suffix": "",
//{wd}post;post
//POST http://www.lezhutv.com/index.php?m=vod-search;post
"search_url": "空",
//POSTbodysearchwordwdPOST
"sea_PtBody":"空",
//,0jsonlist
"search_mode": "0",
//json
"jsonpic": "pic",
//json
"jsonname": "name",
//json
"jsonid": "id",
//json
"jsonstitle":"",
//
"sea_YN_twice": "0",
//
"sea_twice_pre": "空",
//
"sea_twice_suf": "空",
//
"sea_arr_pre": "空",
//
"sea_arr_suf": "空",
//&&
"sea_pic": "data-original=\"&&\"",
//&&
"sea_title": "title=\"&&\"",
//&&
"sea_url": "href=\"&&\"",
//
"search_prefix": "http://www.lezhutv.com",
//json
"search_suffix": "",
//&&
"sea_subtitle": "",
//10
"force_play": "1",
//
"play_prefix": "",
//#isVideo=true#
"play_suffix": "",
//#
"play_header": "",
//&&
"proj_actor": "主演:</span>&&</p>",
//&&
"proj_plot": "简介:</span>&&</p>",
//线tab_titletab_arr_pre
//线
"tab_YN_twice": "0",
//线
"tab_twice_pre": "",
//线
"tab_twice_suf": "",
//线
"tab_arr_pre": "空",
//线
"tab_arr_suf": "空",
//线&&
"tab_title": "空",
//
"list_YN_twice": "0",
//
"list_twice_pre": "空",
//
"list_twice_suf": "空",
//
"list_arr_pre": "空",
//
"list_arr_suf": "空",
//
"epi_YN_twice": "0",
//
"epi_twice_pre": "空",
//
"epi_twice_suf": "空",
//
"epi_arr_pre": "",
//
"epi_arr_suf": "",
//&&
"epi_title": "",
//&&
"epi_url": "",
//
"epiurl_prefix": "",
//
"epiurl_suffix": "",
//
//<script type="text/javascript">var player_aaaa={"flag":"play","encrypt
//0
"Anal_MacPlayer":"0",
//01
"ManualSniffer":"0",
//#
"VideoFormat":"playlist.m3u8#.mp4#.m3u8#.flv"
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,86 @@
{
"规则名": "野马影院",
"规则作者": "dd",
"请求头参数": "User-Agent$Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36#Referer$http://v.yemays.tk/",
"网页编码格式": "UTF-8",
"图片是否需要代理": "0",
"是否开启获取首页数据": "1",
"首页推荐链接": "http://v.yemays.tk",
"首页列表数组规则": ".myui-vodlist.clearfix&&li",
"首页片单列表数组规则": ".myui-vodlist__box",
"首页片单是否Jsoup写法": "1",
"首页片单标题": "a&&title",
"首页片单链接": "a&&href",
"首页片单图片": "a&&data-original",
"首页片单副标题": ".pic-text&&Text",
"首页片单链接加前缀": "http://v.yemays.tk",
"首页片单链接加后缀": "",
"分类起始页码": "1",
"分类链接": "http://v.yemays.tk/vodshow/{cateId}-{area}-{by}-{class}-----{catePg}---{year}.html",
"分类名称": "电影&电视剧&综艺&动漫&港台剧&欧美剧&日韩剧",
"分类名称替换词": "1&2&3&4&14&15&16",
"筛选数据": "ext",
//{cateId}
"筛选子分类名称": "动作片&爱情片&科幻片&恐怖片&战争片&喜剧片&剧情片||港台剧&欧美剧&韩剧",
"筛选子分类替换词": "6&7&8&9&10&11&12||14&15&16",
//{class}
"筛选类型名称": "动作&喜剧&爱情&科幻&剧情&悬疑&惊悚&恐怖&犯罪&谍战&冒险&奇幻&灾难&战争&动画&歌舞&历史&传记&其他||武侠&喜剧&爱情&剧情&青春&悬疑&科幻&军事&警匪&谍战&奇幻&偶像&年代&乡村&都市&家庭&古装&历史&神话&其他||脱口秀&真人秀&搞笑&访谈&生活&晚会&美食&游戏&亲子&旅游&文化&体育&时尚&纪实&益智&演艺&歌舞&播报&音乐&其他||热血&格斗&恋爱&少女&校园&搞笑&神魔&机战&科幻&真人&青春&魔法&神话&冒险&运动&竞技&童话&亲子&教育&励志&剧情&其他",
"筛选类型替换词": "*",
//{area}
"筛选地区名称": "大陆&香港&台湾&美国&韩国&日本&法国&英国&德国&泰国&印度&西班牙&意大利&加拿大&其他",
"筛选地区替换词": "*",
//{year}
"筛选年份名称": "2023&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004",
"筛选年份替换词": "*",
//{lang}
"筛选语言名称": "普通话&英语&粤语&闽南语&韩语&日语&其他",
"筛选语言替换词": "*",
//{by}
"筛选排序名称": "更新时间&人气排序&评分排序",
"筛选排序替换词": "time&hits&score",
"分类截取模式": "1",
"分类列表数组规则": "body&&.col-lg-8.col-md-6.col-sm-4.col-xs-3",
"分类片单是否Jsoup写法": "1",
"分类片单标题": "a&&title",
"分类片单链接": "a&&href",
"分类片单图片": "a&&data-original",
"分类片单副标题": ".pic-text&&Text",
"分类片单链接加前缀": "http://v.yemays.tk",
"分类片单链接加后缀": "",
"搜索请求头参数": "手机",
"搜索链接": "http://v.yemays.tk/index.php/ajax/suggest.html?mid=1&wd={wd}",
"POST请求数据": "",
"搜索截取模式": "0",
"搜索列表数组规则": "list",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": "pic",
"搜索片单标题": "name",
"搜索片单链接": "id",
"搜索片单副标题": "",
"搜索片单链接加前缀": "http://v.yemays.tk/voddetail/",
"搜索片单链接加后缀": ".html",
"链接是否直接播放": "0",
"直接播放链接加前缀": "https://live.52sf.ga/huya/",
"直接播放链接加后缀": "#isVideo=true#",
"直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online",
"详情是否Jsoup写法": "0",
"类型详情": "剧情:</span>&&</p",
"年代详情": "更新:</span>&&</p",
"地区详情": "地区:</span>&&</p",
"演员详情": "主演:</span>&&</p",
"简介详情": "<span class=\"data\" style=\"display: none;\"><p>&&</p>",
"线路列表数组规则": ".nav&&li",
"线路标题": "Text",
"播放列表数组规则": "body&&.myui-content__list.scrollbar.sort-list.clearfix",
"选集列表数组规则": "li",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "http://v.yemays.tk",
"选集链接加后缀": "",
"分析MacPlayer": "2",
"是否开启手动嗅探": "0",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv",
"手动嗅探视频链接过滤词": ".html#=http"
}

BIN
0307yyds/ali.jar Normal file

Binary file not shown.

1
0307yyds/ali/token.txt Normal file
View File

@ -0,0 +1 @@
5fe7ecb3e9984645aefa0a9ffc6dc99a

BIN
0307yyds/duo.jar Normal file

Binary file not shown.

1
0307yyds/js/310.js Normal file
View File

@ -0,0 +1 @@
var rule={title:'310直播',host:'http://www.310.tv',url:'/?s=0&t=1&a=fyclass&g=fypage',searchUrl:'',searchable:0,quickSearch:0,class_name:'热门&足球&篮球',class_url:'0&1&2',headers:{'User-Agent':'MOBILE_UA'},timeout:5000,play_parse:false,lazy:'',limit:6,double:false,推荐:'*',一级:'.list_content a;.jiabifeng&&p:lt(5)&&Text;.feleimg img&&src;a&&t-nzf-o;a&&href',二级:'*',搜索:'',}

1
0307yyds/js/77.js Normal file

File diff suppressed because one or more lines are too long

1
0307yyds/js/88看球.js Normal file
View File

@ -0,0 +1 @@
var rule={title:'88看球',host:'http://www.88kanqiu.live',url:'/match/fyclass/live',searchUrl:'',searchable:0,quickSearch:0,class_parse:'.nav-pills li;a&&Text;a&&href;/match/(\\d+)/live',headers:{'User-Agent':'PC_UA'},timeout:5000,play_parse:true,lazy:'',limit:6,double:false,推荐:'*',一级:'.list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href',二级:{"title":".game-info-container&&Text;.customer-navbar-nav li&&Text","img":"img&&src","desc":";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text","content":"div.game-time&&Text","tabs":"js:TABS=['88看球']","lists":"js:LISTS=[];input=input+'-url';let html=request(input);let data=JSON.parse(html);TABS.forEach(function(tab){let m3u=data;let d=m3u.map(function(it){return it.name+'$'+it.url});LISTS.push(d)});"},搜索:'',}

File diff suppressed because one or more lines are too long

1
0307yyds/js/JRKAN.js Normal file
View File

@ -0,0 +1 @@
var rule={title:'JRKAN直播',host:'http://m.jrkan2023.com',url:'/fyclass',searchUrl:'',searchable:0,quickSearch:0,class_name:'全部',class_url:'/',headers:{'User-Agent':'MOBILE_UA'},timeout:5000,play_parse:true,lazy:'',limit:6,double:false,推荐:'*',一级:'.loc_match:eq(2) ul;li:gt(1):lt(4)&&Text;img&&src;li:lt(2)&&Text;a:eq(1)&&href',二级:{title:'.sub_list li:lt(2)&&Text;.sub_list li:eq(0)&&Text',img:'img&&src',desc:';;;.lab_team_home&&Text;.lab_team_away&&Text',content:'.sub_list ul&&Text',tabs:'',tab_text:'',lists:'.sub_channel a',list_text:'a&&Text',list_url:'a&&data-play'},搜索:'',}

1
0307yyds/js/caigou.js Normal file

File diff suppressed because one or more lines are too long

1
0307yyds/js/cheerio.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6191
0307yyds/js/crypto-js.js Normal file

File diff suppressed because it is too large Load Diff

24
0307yyds/js/czspp.js Normal file
View File

@ -0,0 +1,24 @@
var rule={
title:'厂长资源',
// host:'https://www.c-zzy.com',
host:'https://czspp.com',
url:'/fyclass/page/fypage',
searchUrl:'/xssearch?q=**&f=_all&p=fypage',
searchable:2,//是否启用全局搜索,
quickSearch:1,//是否启用快速搜索,
filterable:0,//是否启用分类筛选,
headers:{'User-Agent':'PC_UA', },
play_parse:true,
lazy:'',
limit:6,
class_name:'豆瓣电影Top250&最新电影&电视剧&国产剧&美剧&韩剧&番剧&动漫',
class_url:'dbtop250&zuixindianying&dsj&gcj&meijutt&hanjutv&fanju&dm',
推荐:'.bt_img;ul&&li;*;*;*;*',
double:true,
一级:'.bt_img&&ul&&li;h3.dytit&&Text;img.lazy&&data-original;.jidi&&Text;a&&href',
二级:{"title":"h1&&Text;.moviedteail_list li&&a&&Text","img":"div.dyimg img&&src","desc":".moviedteail_list li:eq(3) a&&Text;.moviedteail_list li:eq(2) a&&Text;.moviedteail_list li:eq(1) a&&Text;.moviedteail_list li:eq(7) a&&Text;.moviedteail_list li:eq(5) a&&Text","content":".yp_context&&Text","tabs":".mi_paly_box&&span","lists":".paly_list_btn:eq(#id) a"},
搜索:'.search_list&&ul&&li;*;*;*;*',
// 预处理:'rule_fetch_params.headers.Cookie = "Hm_lvt_d06dda04a24e89e1117ee1455e217c30=1669008856; 6de728358f84bf15ea9bb771c18f37fb=b4a901c371f729a828c31d9d78def299; myannoun=1; Hm_lvt_c08e84f2c697dc9d0af77ff0dbfb3d6d=1669356917; Hm_lpvt_c08e84f2c697dc9d0af77ff0dbfb3d6d=1669357024; Hm_lpvt_d06dda04a24e89e1117ee1455e217c30=1669357024"',
预处理:'',
预处理:'rule_fetch_params.headers.Cookie="68148872828e9f4d64e7a296f6c6b6d7=5429da9a54375db451f7f9e4f16ce0ea";let new_host="https://czspp.com";let new_html=request(new_host);if(/正在进行人机识别/.test(new_html)){let new_src=pd(new_html,"script&&src",new_host);log(new_src);let hhtml=request(new_src,{withHeaders:true});let json=JSON.parse(hhtml);let html=json.body;let key=html.match(new RegExp(\'var key="(.*?)"\'))[1];let avalue=html.match(new RegExp(\'value="(.*?)"\'))[1];let c="";for(let i=0;i<avalue.length;i++){let a=avalue[i];let b=a.charCodeAt();c+=b}let value=md5(c);log(value);let yz_url="https://czspp.com/a20be899_96a6_40b2_88ba_32f1f75f1552_yanzheng_ip.php?type=96c4e20a0e951f471d32dae103e83881&key="+key+"&value="+value;log(yz_url);hhtml=request(yz_url,{withHeaders:true});json=JSON.parse(hhtml);let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");let cookie=setCk?json[setCk].split(";")[0]:"";log("cookie:"+cookie);rule_fetch_params.headers.Cookie=cookie;setItem(RULE_CK,cookie)}',
}

1
0307yyds/js/ddys.js Normal file
View File

@ -0,0 +1 @@
var rule={title:'ddys',host:'https://ddys.pro',url:'/fyclass/page/fypage/',searchUrl:'/?s=**&post_type=post',searchable:2,quickSearch:0,filterable:0,headers:{'User-Agent':'MOBILE_UA',},class_parse:'#primary-menu li.menu-item;a&&Text;a&&href;\.pro/(.*)',cate_exclude:'站长|^其他$|关于|^电影$|^剧集$|^类型$',play_parse:true,lazy:'js:let purl=input.split("|")[0];let referer=input.split("|")[1];let zm=input.split("|")[2];print("purl:"+purl);print("referer:"+referer);print("zm:"+zm);let myua="okhttp/3.15";if(/ddrkey/.test(purl)){let ret=request(purl,{Referer:referer,withHeaders:true,"User-Agent":myua});log(ret);input=purl}else{let html=request(purl,{headers:{Referer:referer,"User-Agent":myua}});print(html);try{input=JSON.parse(html).url||{}}catch(e){input=purl}}',limit:6,double:true,一级:'.post-box-list&&article;a:eq(-1)&&Text;.post-box-image&&style;a:eq(0)&&Text;a:eq(-1)&&href',二级:{"title":".post-title&&Text;.cat-links&&Text","img":".doulist-item&&img&&data-cfsrc","desc":".published&&Text","content":".abstract&&Text","tabs":"js:TABS=['国内','海外(貌似不能播放)']",lists:'js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url==="undefined"){var play_url=""}function getLists(html){let src=pdfh(html,".wp-playlist-script&&Html");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1="https://ddys.pro/getvddr/video?id="+src1+"&dim=1080P+&type=mix";let url2="https://w.ddys.pro"+src0+"?ddrkey="+src2;let zm="https://ddys.pro/subddr/"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,"body&&.post-page-numbers");nums.forEach(function(it){let num=pdfh(it,"body&&Text");log(num);let nurl=input+num+"/";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});list2=list2.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});LISTS=[list1,list2];',},搜索:'#main&&article;.post-title&&Text;;.published&&Text;a&&href',推荐:'*'}

36
0307yyds/js/douban.js Normal file

File diff suppressed because one or more lines are too long

189
0307yyds/js/drT.js Normal file
View File

@ -0,0 +1,189 @@
// drT.js
// 2022/09/30 write by hjdhnx
// Licensed under the MIT license.
(function () {
"use strict";
var drT = {
name: "drT",
version: "1.0.0",
templateSettings: {
evaluate: /\{\{([\s\S]+?(\}?)+)\}\}/g,
interpolate: /\{\{([\s\S]+?)\}\}/g, // 变量渲染
encode: /\{\{@([\s\S]+?)\}\}/g, // 变量自动url编码
use: /\{\{#([\s\S]+?)\}\}/g,
useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
defineParams:/^\s*([\w$]+):([\s\S]+)/,
conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g, // ? if ?? else if ?? else
iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
varname: "fl",
strip: true,
append: true,
selfcontained: false,
doNotSkipEncoded: false
},
template: undefined, //fn, compile template
compile: undefined, //fn, for express
log: true
}, _globals;
drT.encodeHTMLSource = function(doNotSkipEncoded) {
var encodeHTMLRules = { "&": "&#38;", "<": "&#60;", ">": "&#62;", '"': "&#34;", "'": "&#39;", "/": "&#47;" },
matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g;
return function(code) {
return code ? code.toString().replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : "";
};
};
_globals = (function(){ return this || (0,eval)("this"); }());
/* istanbul ignore else */
if (typeof module !== "undefined" && module.exports) {
module.exports = drT;
} else if (typeof define === "function" && define.amd) {
define(function(){return drT;});
} else {
_globals.drT = drT;
}
var startend = {
append: { start: "'+(", end: ")+'", startencode: "'+encodeHTML(" },
split: { start: "';out+=(", end: ");out+='", startencode: "';out+=encodeHTML(" }
}, skip = /$^/;
function resolveDefs(c, block, def) {
return ((typeof block === "string") ? block : block.toString())
.replace(c.define || skip, function(m, code, assign, value) {
if (code.indexOf("def.") === 0) {
code = code.substring(4);
}
if (!(code in def)) {
if (assign === ":") {
if (c.defineParams) value.replace(c.defineParams, function(m, param, v) {
def[code] = {arg: param, text: v};
});
if (!(code in def)) def[code]= value;
} else {
new Function("def", "def['"+code+"']=" + value)(def);
}
}
return "";
})
.replace(c.use || skip, function(m, code) {
if (c.useParams) code = code.replace(c.useParams, function(m, s, d, param) {
if (def[d] && def[d].arg && param) {
var rw = (d+":"+param).replace(/'|\\/g, "_");
def.__exp = def.__exp || {};
def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
return s + "def.__exp['"+rw+"']";
}
});
var v = new Function("def", "return " + code)(def);
return v ? resolveDefs(c, v, def) : v;
});
}
function unescape(code) {
return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, " ");
}
drT.template = function(tmpl, c, def) {
c = c || drT.templateSettings;
var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv,
str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
// console.log(str);
let beforeCode = '';
if(str.match(c.interpolate || skip)){
let inter_codes = str.match(c.interpolate || skip);
let inter_dict = {};
inter_codes.forEach(item=>{
item.replace(c.interpolate || skip,function (m,code) {
let varname = code.split('.')[0];
if(!inter_dict.hasOwnProperty(varname)){
let beginCode = `if(typeof(${varname})==='undefined'){${varname}={}}`;
inter_dict[varname] = beginCode;
}if(!inter_dict.hasOwnProperty(code)){
let beginCode = `if(typeof(${code})==='undefined'){${code}=''};`;
inter_dict[code] = beginCode;
}
});
});
let beginCode = Object.values(inter_dict).join('\n');
// console.log(beginCode);
beforeCode += beginCode;
}
str = beforeCode+("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ")
.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""): str)
.replace(/'|\\/g, "\\$&")
.replace(c.encode || skip, function(m, code) {
needhtmlencode = true;
return cse.startencode + unescape(code) + cse.end;
})
.replace(c.interpolate || skip, function(m, code) {
let varname = code.split('.')[0];
// console.log(varname === code);
// console.log(`varname:${varname},code:${code}`);
if(varname === code){
let res = cse.start + `JSON.stringify(${unescape(code)})` + cse.end;
// console.log(res);
return res
}
return cse.start + unescape(code) + cse.end;
})
.replace(c.conditional || skip, function(m, elsecase, code) {
return elsecase ?
(code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") :
(code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
})
.replace(c.iterate || skip, function(m, iterate, vname, iname) {
if (!iterate) return "';} } out+='";
sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate);
return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){"
+vname+"=arr"+sid+"["+indv+"+=1];out+='";
})
.replace(c.evaluate || skip, function(m, code) {
return "';" + unescape(code) + "out+='";
})
+ "';return out;")
.replace(/\n/g, "\\n").replace(/\t/g, '\\t').replace(/\r/g, "\\r")
.replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, "");
//.replace(/(\s|;|\}|^|\{)out\+=''\+/g,'$1out+=');
if (needhtmlencode) {
// console.log('需要编码');
// console.log(c.doNotSkipEncoded);
if (!c.selfcontained && _globals && !_globals._encodeHTML) _globals._encodeHTML = drT.encodeHTMLSource(c.doNotSkipEncoded);
str = "var encodeHTML = typeof _encodeHTML !== 'undefined' ? _encodeHTML : ("
+ drT.encodeHTMLSource.toString() + "(" + (c.doNotSkipEncoded || '') + "));"
+ str;
// console.log(str);
}else{
// console.log('不需要编码');
}
// console.log(c.varname);
// console.log(str);
try {
return new Function(c.varname, str);
} catch (e) {
/* istanbul ignore else */
// console.log(e.message);
if (typeof console !== "undefined") console.log("Could not create a template function: " + str);
throw e;
}
};
drT.compile = function(tmpl, def) {
return drT.template(tmpl, null, def);
};
drT.renderText = function (tmpl,dict,varname){
varname = varname||'';
if(varname){
drT.templateSettings.varname = varname;
}
dict = dict||{};
return drT.compile(tmpl)(dict);
};
}());

1
0307yyds/js/drpymin.js Normal file

File diff suppressed because one or more lines are too long

1
0307yyds/js/jrslive.js Normal file
View File

@ -0,0 +1 @@
var rule={title:'JRS看直播',host:'http://www.jrskan.net',url:'/fyclass',searchUrl:'',searchable:0,quickSearch:0,class_name:'全部',class_url:'/',headers:{'User-Agent':'MOBILE_UA'},timeout:5000,play_parse:true,lazy:'',limit:6,double:false,推荐:'*',一级:'.row a;li div:gt(2):lt(6)&&Text;img&&src;.match-start-time&&Text;a&&href',二级:{title:'.live-title&&Text;.live-title&&Text',img:'img:eq(1)&&src',desc:';;;.live-left-team-sj&&Text;.live-right-team-sj&&Text',content:'.live-info&&Text',tabs:'',tab_text:'',lists:'#item-source a',list_text:'a&&Text',list_url:'a&&data-url'},搜索:'',}

1
0307yyds/js/jrs看球.js Normal file
View File

@ -0,0 +1 @@
var rule={title:'JRS看球网',host:'http://www.jrskanqiu.com',url:'/fyclass',searchUrl:'',searchable:0,quickSearch:0,class_name:'全部',class_url:'/',headers:{'User-Agent':'PC_UA'},timeout:5000,play_parse:true,lazy:'',limit:6,double:false,推荐:'*',一级:'.todayMatch .contenTab;.myList div:gt(0)&&Text;img&&src;.status&&Text;a&&href',二级:{title:'.msg ul&&Text;.msg ul&&Text',img:'img:eq(2)&&src',desc:';;;.nameOne&&Text;.nameTwo&&Text',content:'._t&&Text',tabs:'.checkChannel li:eq(0)',tab_text:'p&&Text',lists:'.checkChannel li:gt(0)',list_text:'a&&Text',list_url:'a&&data-url'},搜索:'',}

1
0307yyds/js/libmain.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,78 @@
/* -> vod_area:'bililivedanmu'
目前只有皮皮虾大佬的DMBox, 支持弹幕
DMBox下载:https://t.me/pipixiawerun
设置 > 窗口预览 > 开启
*/
/* Cookie
Cookie获取方法 https://github.com/UndCover/PyramidStore/blob/main/list.md#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9
Cookie设置方法1: DR-PY 后台管理界面
CMS后台管理 > 设置中心 > 环境变量 > {"bili_cookie":"XXXXXXX","vmid":"XXXXXX"} > 保存
Cookie设置方法2: 手动替换Cookie
底下代码 headers的
"Cookie":"$bili_cookie"
手动替换为
"Cookie":"https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/txt/cookie.txt"
*/
var rule = {
title:'哔哩直播',
host:'https://api.live.bilibili.com',
homeUrl:'/xlive/web-interface/v1/second/getUserRecommend?page=1&page_size=30&platform=web',//用于"分类获取"和"推荐获取"
url:'/xlive/web-interface/v1/second/getList?platform=web&parent_area_id=fyclass&area_id=fyfilter&sort_type=online&page=fypage',
class_name:'娱乐&网游&手游&单机游戏&电台&虚拟主播&生活&知识&赛事&购物',
class_url:'10&2&3&6&1&5&9&11&13&300',
filterable: 1,
filter_url: '{{fl.area}}',
filter_def:{
10:{area:'33'},
2:{area:'86'},
3:{area:'35'},
6:{area:'236'},
1:{area:'21'},
5:{area:'190'},
9:{area:'371'},
11:{area:'376'},
13:{area:'561'},
300:{area:'30000'}
},
filter: {
"2":[{"key":"area","name":"分区","value":[{"n":"英雄联盟","v":"86"},{"n":"DOTA2","v":"92"},{"n":"CS:GO","v":"89"},{"n":"APEX英雄","v":"240"},{"n":"永劫无间","v":"666"},{"n":"穿越火线","v":"88"},{"n":"守望先锋","v":"87"},{"n":"吃鸡行动","v":"80"},{"n":"逃离塔科夫","v":"252"},{"n":"传奇","v":"695"},{"n":"DNF","v":"78"},{"n":"生死狙击2","v":"575"},{"n":"洛奇英雄传","v":"599"},{"n":"最终幻想14","v":"102"},{"n":"星际战甲","v":"249"},{"n":"梦三国","v":"710"},{"n":"英魂之刃","v":"690"},{"n":"剑网3","v":"82"},{"n":"铁甲雄兵","v":"691"},{"n":"封印者","v":"300"},{"n":"新天龙八部","v":"653"},{"n":"赛尔号","v":"667"},{"n":"造梦西游","v":"668"},{"n":"洛克王国","v":"669"},{"n":"问道","v":"670"},{"n":"诛仙世界","v":"654"},{"n":"大话西游","v":"652"},{"n":"奇迹MU","v":"683"},{"n":"永恒之塔","v":"684"},{"n":"QQ三国","v":"685"},{"n":"人间地狱","v":"677"},{"n":"VALORANT","v":"329"},{"n":"彩虹岛","v":"686"},{"n":"洛奇","v":"663"},{"n":"跑跑卡丁车","v":"664"},{"n":"星际公民","v":"658"},{"n":"Squad战术小队","v":"659"},{"n":"反恐精英Online","v":"629"},{"n":"风暴奇侠","v":"648"},{"n":"装甲战争","v":"642"},{"n":"失落的方舟","v":"590"},{"n":"阿尔比恩","v":"639"},{"n":"猎杀对决","v":"600"},{"n":"CFHD ","v":"472"},{"n":"骑士精神2","v":"650"},{"n":"超击突破","v":"680"},{"n":"武装突袭","v":"634"},{"n":"300英雄","v":"84"},{"n":"炉石传说","v":"91"},{"n":"剑网3缘起","v":"499"},{"n":"街头篮球","v":"649"},{"n":"综合射击","v":"601"},{"n":"剑灵","v":"505"},{"n":"艾尔之光","v":"651"},{"n":"黑色沙漠","v":"632"},{"n":"天涯明月刀","v":"596"},{"n":"超激斗梦境","v":"519"},{"n":"冒险岛","v":"574"},{"n":"逆战","v":"487"},{"n":"魔兽争霸3","v":"181"},{"n":"QQ飞车","v":"610"},{"n":"魔兽世界","v":"83"},{"n":"FIFA ONLINE 4","v":"388"},{"n":"NBA2KOL2","v":"581"},{"n":"使命召唤:战区","v":"318"},{"n":"VRChat","v":"656"},{"n":"坦克世界","v":"115"},{"n":"战舰世界","v":"248"},{"n":"战争雷霆","v":"316"},{"n":"战意","v":"383"},{"n":"风暴英雄","v":"114"},{"n":"星际争霸2","v":"93"},{"n":"刀塔自走棋","v":"239"},{"n":"堡垒之夜","v":"164"},{"n":"枪神纪","v":"251"},{"n":"三国杀","v":"81"},{"n":"龙之谷","v":"112"},{"n":"古剑奇谭OL","v":"173"},{"n":"幻想全明星","v":"176"},{"n":"怀旧网游","v":"288"},{"n":"新游前瞻","v":"298"},{"n":"星战前夜:晨曦","v":"331"},{"n":"梦幻西游端游","v":"350"},{"n":"流放之路","v":"551"},{"n":"FPS沙盒","v":"633"},{"n":"永恒轮回","v":"459"},{"n":"激战2","v":"607"},{"n":"其他网游","v":"107"}] }],
"3":[{"key":"area","name":"分区","value":[{"n":"王者荣耀","v":"35"},{"n":"和平精英","v":"256"},{"n":"LOL手游","v":"395"},{"n":"原神","v":"321"},{"n":"第五人格","v":"163"},{"n":"明日方舟","v":"255"},{"n":"哈利波特:魔法觉醒 ","v":"474"},{"n":"幻塔","v":"550"},{"n":"金铲铲之战","v":"514"},{"n":"APEX手游","v":"506"},{"n":"深空之眼","v":"598"},{"n":"无期迷途","v":"675"},{"n":"光遇","v":"687"},{"n":"跃迁旅人","v":"717"},{"n":"香肠派对","v":"689"},{"n":"猫之城","v":"645"},{"n":"玛娜希斯回响","v":"644"},{"n":"使命召唤手游","v":"386"},{"n":"黑色沙漠手游","v":"615"},{"n":"崩坏3","v":"40"},{"n":"游戏王:决斗链接","v":"407"},{"n":"游戏王","v":"303"},{"n":"蛋仔派对","v":"571"},{"n":"阴阳师","v":"36"},{"n":"空之要塞:启航","v":"718"},{"n":"火影忍者手游","v":"292"},{"n":"Fate/GO","v":"37"},{"n":"综合棋牌","v":"354"},{"n":"QQ飞车手游","v":"154"},{"n":"决战!平安京","v":"140"},{"n":"狼人杀","v":"41"},{"n":"三国杀移动版","v":"352"},{"n":"碧蓝航线","v":"113"},{"n":"影之诗","v":"156"},{"n":"明日之后","v":"189"},{"n":"部落冲突:皇室战争","v":"50"},{"n":"奥比岛手游","v":"661"},{"n":"盾之勇者成名录:浪潮","v":"704"},{"n":"雀姬","v":"214"},{"n":"公主连结Re:Dive","v":"330"},{"n":"DNF手游","v":"343"},{"n":"FIFA足球世界","v":"641"},{"n":"BanG Dream","v":"258"},{"n":"荒野乱斗","v":"469"},{"n":"CF手游","v":"333"},{"n":"战双帕弥什","v":"293"},{"n":"天涯明月刀手游","v":"389"},{"n":"解密游戏","v":"42"},{"n":"恋爱养成游戏","v":"576"},{"n":"暗黑破坏神:不朽","v":"492"},{"n":"暗区突围","v":"502"},{"n":"跑跑卡丁车手游","v":"265"},{"n":"非人学园","v":"212"},{"n":"百闻牌","v":"286"},{"n":"猫和老鼠手游","v":"269"},{"n":"坎公骑冠剑","v":"442"},{"n":"忍者必须死3","v":"203"},{"n":"梦幻西游手游","v":"342"},{"n":"航海王热血航线","v":"504"},{"n":"少女前线","v":"39"},{"n":"300大作战","v":"688"},{"n":"少女前线:云图计划","v":"525"},{"n":"漫威超级战争","v":"478"},{"n":"摩尔庄园手游","v":"464"},{"n":"宝可梦大集结","v":"493"},{"n":"小动物之星","v":"473"},{"n":"天地劫:幽城再临","v":"448"},{"n":"漫威对决","v":"511"},{"n":" 东方归言录","v":"538"},{"n":"梦幻模拟战","v":"178"},{"n":"时空猎人3","v":"643"},{"n":"重返帝国","v":"613"},{"n":"休闲小游戏","v":"679"},{"n":"其他手游","v":"98"},{"n":"新游评测","v":"274"}] }],
"6":[{"key":"area","name":"分区","value":[{"n":"主机游戏","v":"236"},{"n":"我的世界","v":"216"},{"n":"独立游戏","v":"283"},{"n":"怀旧游戏","v":"237"},{"n":"弹幕互动玩法","v":"460"},{"n":"恐怖游戏","v":"276"},{"n":"禁闭求生","v":"707"},{"n":"斯普拉遁3","v":"694"},{"n":"卧龙:苍天陨落","v":"700"},{"n":"使命召唤19","v":"282"},{"n":"异度神剑","v":"665"},{"n":"艾尔登法环","v":"555"},{"n":"聚会游戏","v":"636"},{"n":"哥谭骑士","v":"716"},{"n":"命运2","v":"277"},{"n":"沙石镇时光","v":"630"},{"n":"Dread Hunger","v":"591"},{"n":"红色警戒2","v":"693"},{"n":"失落迷城:群星的诅咒","v":"714"},{"n":"策略游戏","v":"570"},{"n":"战地风云","v":"597"},{"n":"幽灵线:东京","v":"612"},{"n":"糖豆人","v":"357"},{"n":"消逝的光芒2","v":"586"},{"n":"只狼","v":"245"},{"n":"怪物猎人","v":"578"},{"n":"饥荒","v":"218"},{"n":"精灵宝可梦","v":"228"},{"n":"FIFA23","v":"708"},{"n":"暖雪","v":"582"},{"n":"全面战争战锤3","v":"594"},{"n":"彩虹六号:异种","v":"580"},{"n":"战神","v":"579"},{"n":"FORZA 极限竞速","v":"302"},{"n":"NBA2K","v":"362"},{"n":"帝国时代4","v":"548"},{"n":"光环:无限","v":"559"},{"n":"孤岛惊魂6","v":"537"},{"n":"植物大战僵尸","v":"309"},{"n":"仙剑奇侠传七","v":"540"},{"n":"灵魂筹码","v":"223"},{"n":"格斗游戏","v":"433"},{"n":"荒野大镖客2","v":"226"},{"n":"重生细胞","v":"426"},{"n":"刺客信条","v":"227"},{"n":"恐鬼症","v":"387"},{"n":"以撒","v":"219"},{"n":"双人成行","v":"446"},{"n":"方舟","v":"295"},{"n":"仁王2","v":"313"},{"n":"鬼泣5","v":"244"},{"n":"枪火重生","v":"364"},{"n":"盗贼之海","v":"341"},{"n":"胡闹厨房","v":"507"},{"n":"体育游戏","v":"500"},{"n":"恐惧之间","v":"439"},{"n":"塞尔达","v":"308"},{"n":"马力欧制造2","v":"261"},{"n":"全境封锁2","v":"243"},{"n":"骑马与砍杀","v":"326"},{"n":"人类一败涂地","v":"270"},{"n":"鬼谷八荒","v":"424"},{"n":"无主之地3","v":"273"},{"n":"辐射76","v":"220"},{"n":"全面战争","v":"257"},{"n":"亿万僵尸","v":"463"},{"n":"暗黑破坏神2","v":"535"},{"n":"文字游戏","v":"583"},{"n":"恋爱模拟游戏","v":"592"},{"n":"泰拉瑞亚","v":"593"},{"n":"雨中冒险2","v":"441"},{"n":"游戏速通","v":"678"},{"n":"摔角城大乱斗","v":"681"},{"n":"勇敢的哈克","v":"692"},{"n":" 审判系列","v":"698"},{"n":"其他单机","v":"235"}] }],
"1":[{"key":"area","name":"分区","value":[{"n":"视频唱见","v":"21"},{"n":"萌宅领域","v":"530"},{"n":"视频聊天","v":"145"},{"n":"舞见","v":"207"},{"n":"情感","v":"706"},{"n":"户外","v":"123"},{"n":"日常","v":"399"}] }],
"5":[{"key":"area","name":"分区","value":[{"n":"唱见电台","v":"190"},{"n":"聊天电台","v":"192"},{"n":"配音","v":"193"}] }],
"9":[{"key":"area","name":"分区","value":[{"n":"虚拟主播","v":"371"},{"n":"3D虚拟主播","v":"697"}] }],
"10":[{"key":"area","name":"分区","value":[{"n":"生活分享","v":"646"},{"n":"运动","v":"628"},{"n":"搞笑","v":"624"},{"n":"手工绘画","v":"627"},{"n":"萌宠","v":"369"},{"n":"美食","v":"367"},{"n":"时尚","v":"378"},{"n":"影音馆","v":"33"}] }],
"11":[{"key":"area","name":"分区","value":[{"n":"社科法律心理","v":"376"},{"n":"人文历史","v":"702"},{"n":"校园学习","v":"372"},{"n":"职场·技能","v":"377"},{"n":" 科技","v":"375"},{"n":"科学科普","v":"701"},{"n":"时政","v":"715"}] }],
"13":[{"key":"area","name":"分区","value":[{"n":"游戏赛事","v":"561"},{"n":"体育赛事","v":"562"},{"n":"赛事综合","v":"563"}] }],
"300":[{"key":"area","name":"分区","value":[{"n":"购物","v":"300000"}] }]
},
detailUrl:'https://live.bilibili.com/fyid',//二级详情拼接链接(json格式用)
// detailUrl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=fyid&platform=h5&otype=json&quality=0',//二级详情拼接链接(json格式用)
// searchUrl:'/x/web-interface/search/type?__refresh__=true&page=fypage&page_size=42&order=online&platform=pc&highlight=1&single_column=0&keyword=**&search_type=live&dynamic_offset=0&preload=true',
searchUrl:'https://api.bilibili.com/x/web-interface/search/type?search_type=live&keyword=**&page=1',
searchable:2,
quickSearch:0,
headers:{
"User-Agent":"PC_UA",
"Referer": "https://www.bilibili.com",
"Cookie":"$bili_cookie"
},
timeout:5000,
limit:8,
play_parse:true,
// play_json:[{re:'*', json:{jx:0, parse:1,header:JSON.stringify({"user-agent":"Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36"})}}],
// play_json:[{re:'*', json:{jx:0, parse:1,header:JSON.stringify({"user-agent":"uc_ua"})}}],
// play_json:0,
lazy:"js:let ids=input.split('_');let result={};let iurl='https://api.live.bilibili.com/room/v1/Room/playUrl?cid='+ids[1]+'&'+ids[0];let html=request(iurl);let jRoot=JSON.parse(html);let jo=jRoot['data'];let ja=jo['durl'];let purl='';if(ja.length>0){purl=ja[0]['url']}result['parse']=0;result['playUrl']='';result['url']=unescape(purl);result['header']={Referer:'https://live.bilibili.com','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'};if(/h5/.test(ids[0])){result['contentType']='';input=result}else{result['contentType']='video/x-flv';input=result}",
double:false,
推荐:'*',
一级:'json:data.list;title;system_cover;uname;roomid',
// 二级:'*',
二级:"js:let aid=input.match(/\\/(\\d+)/)[1];log(aid);let html=request('https://api.live.bilibili.com/room/v1/Room/get_info?room_id='+aid);let jo=JSON.parse(html).data;let title=jo['title'];let pic=jo['keyframe'];let desc=jo['description'];let dire=jo['uid'];let typeName=jo['area_name'];let remark='在线人数:'+jo['online'];let vod={vod_id:aid,vod_name:title,vod_pic:pic,type_name:typeName,vod_area:'bililivedanmu',vod_remarks:remark,vod_actor:'直播间id-'+aid,vod_director:dire,vod_content:desc};vod['vod_play_from']='B站';vod['vod_play_url']='flv线路原画$platform=web&quality=4_'+aid+'#flv线路高清$platform=web&quality=3_'+aid+'#h5线路原画$platform=h5&quality=4_'+aid+'#h5线路高清$platform=h5&quality=3_'+aid;VOD=vod;",
// 搜索:'json:data.result.live_room;title;cover;uname;roomid',
搜索:'js:let html=request(input);let msg=JSON.parse(html).message;if(msg!=="0"){VODS=[{vod_name:KEY+"➢"+msg,vod_id:"no_data",vod_remarks:"别点,缺少bili_cookie",vod_pic:"https://ghproxy.com/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}]}else{let videos=[];let vodList=JSON.parse(html).data.result.live_room;vodList.forEach(function(vod){let aid=vod["roomid"];let title="直播间:"+vod["title"].replace(\'<em class="keyword">\',"").replace("</em>","");let img="https:"+vod["user_cover"];let remark=vod["watched_show"]["text_small"]+" "+vod["uname"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})});VODS=videos}',
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
var rule={title:'抓饭体育',host:'https://www.zhuafan.tech',url:'/sports-home/category/fyclass',class_name:'全部&足球&篮球&羽乒&台球&棒球&户外&搏击&综合&棋盘&电竞&网球&排球&聊天&原声',class_url:'all&Football&Basketball&Badminton&Billiards&Baseball&Outdoors&Wrestling&Others&Boardgame&Popular&Tennis&Volleyball&Chat&Acoustic',homeUrl:'/sports-home/category/all',detailUrl:'https://m.zhuafan.tech/fyid',searchUrl:'/live-search/search/query/data?keyword=**&page=fypage&num=&searchType=all&uid=null&from=pc',searchable:2,quickSearch:0,headers:{'User-Agent':'PC_UA'},limit:6,timeout:5000,play_parse:true,lazy:'',double:false,推荐:'*',一级:'json:data;cname;imageUrl;uname;id',二级:'*',搜索:'json:cObj.cList;*;*;*;_id',}

274
0307yyds/js/模板.js Normal file
View File

@ -0,0 +1,274 @@
if (typeof Object.assign != 'function') {
Object.assign = function () {
var target = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
function getMubans() {
var mubanDict = { // 模板字典
mxpro: {
title: '',
host: '',
// homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".module-tab-item",
"lists": ".module-play-list:eq(#id) a"
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
"title": "h1&&Text;.tag-link&&Text",
"img": ".module-item-pic&&img&&data-src",
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
"content": ".vod_content&&Text",
"tabs": ".module-tab-item",
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
"img": ".myui-content__thumb .lazyload&&data-original",
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
"content": ".content&&Text",
"tabs": ".nav-tabs:eq(0) li",
"lists": ".myui-content__list:eq(#id) li"
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
// "Cookie": ""
},
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
"img": ".stui-content__thumb .lazyload&&data-original",
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
"content": ".detail&&Text",
"tabs": ".stui-vodlist__head h3",
"lists": ".stui-content__playlist:eq(#id) li"
},
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
默认: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/-------------.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: '',
limit: 6,
double: true, // 推荐内容是否双层定位
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
"img": ".fed-list-info&&a&&data-original",
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
"content": ".fed-part-esan&&Text",
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
double: true,
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
"img": ".hl-lazy&&data-original",
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
"content": ".hl-content-text&&Text",
"tabs": ".hl-tabs&&a",
"lists": ".hl-plays-list:eq(#id)&&li"
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
double: true,
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
"title": "h2&&Text;.deployment&&Text",
"img": ".lazy&&data-original",
"desc": ".deployment&&Text",
"content": ".ec-show&&Text",
"tabs": "#tag&&a",
"lists": ".play_list_box:eq(#id)&&li"
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
短视: {
title: '',
host: '',
// homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
"img": ".img&&img&&data-src",
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
"content": ".zkjj_a&&Text",
"tabs": ".py-tabs&&option",
"lists": ".player:eq(#id) li"
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
}
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};

File diff suppressed because one or more lines are too long

1
0307yyds/js/莫扎兔.js Normal file

File diff suppressed because one or more lines are too long

37
0307yyds/js/路漫漫.js Normal file
View File

@ -0,0 +1,37 @@
var rule = {
title:'路漫漫',
host:'https://www.96ba.com',
// url:'/vod/show/id/fyclass/page/fypage.html',
url:'/vod/show/id/fyclassfyfilter.html',
filterable:1,//是否启用分类筛选,
filter_url:'{{fl.by}}/page/fypage{{fl.year}}',
filter:{
"ribendongman":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
"guochandongman":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
"oumeidongman":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
"ribendonghuadianying":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
"guochandonghuadianying":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
"oumeidonghuadianying":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}]
},
searchUrl:'/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
headers: {
'User-Agent': 'MOBILE_UA',
},
class_parse:'.container&&.tag.text-light;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy:'js:var html=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=html.url;var from=html.from;if(/m3u8/.test(url)){input=url.split("&")[0]}else{input}',
limit: 6,
推荐:'.owl-theme-jable .item;*;*;*;*',
一级:'#mdym .col-6;h6&&Text;.lazyload&&data-src;.label&&Text;a&&href',
二级:{
"title":"h1&&Text;.video-info-aux&&Text",
"img":".url_img&&src",
"desc":".video-info-items--span:eq(3)&&Text;;;.video-info-actor:eq(1)&&Text;.video-info-actor:eq(0)&&Text",
"content":".content-text&&Text",
"tabs":".module-tab-content .tab-item",
"lists":".scroll-content:eq(#id) a"
},
搜索:'*',
}

BIN
0307yyds/loamen_spider.jar Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

File diff suppressed because one or more lines are too long

189
0307yyds/py/cctv.py Normal file
View File

@ -0,0 +1,189 @@
#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 = {
"等着我": "TOPC1451378757637200",
"我爱发明": "TOPC1569314345479107",
"动物世界": "TOPC1451378967257534",
"我爱发明2021": "TOPC1451557970755294",
"自然传奇": "TOPC1451558150787467",
"探索发现": "TOPC1451557893544236",
"地理中国": "TOPC1451557421544786",
"人与自然": "TOPC1451525103989666",
"远方的家": "TOPC1451541349400938",
"动画大放映": "TOPC1451559025546574",
"新闻联播": "TOPC1451528971114112",
"焦点访谈": "TOPC1451558976694518",
"海峡两岸": "TOPC1451540328102649",
"今日关注": "TOPC1451540389082713",
"今日亚洲": "TOPC1451540448405749",
"防务新观察": "TOPC1451526164984187",
"共同关注": "TOPC1451558858788377",
"深度国际": "TOPC1451540709098112",
"环宇视野": "TOPC1451469241240836",
"环球视线": "TOPC1451558926200436",
"世界周刊": "TOPC1451558687534149",
"东方时空": "TOPC1451558532019883",
"新闻调查": "TOPC1451558819463311",
"环球科技视野": "TOPC1451463780801881",
"讲武堂": "TOPC1451526241359341",
"国宝发现": "TOPC1571034869935436",
"国宝档案": "TOPC1451540268188575",
"天下财经": "TOPC1451531385787654",
"走进科学": "TOPC1451558190239536",
"解码科技史": "TOPC1570876640457386",
"法律讲堂": "TOPC1451542824484472",
"百家讲坛": "TOPC1451557052519584",
"名家书场": "TOPC1579401761622774",
"星光大道": "TOPC1451467630488780",
"非常6+1": "TOPC1451467940101208",
"中国节拍": "TOPC1570025984977611",
"一鸣惊人": "TOPC1451558692971175",
"金牌喜剧班": "TOPC1611826337610628",
"九州大戏台": "TOPC1451558399948678",
"乡村大舞台": "TOPC1563179546003162",
"家庭幽默大赛": "TOPC1451375222891702",
"综艺盛典": "TOPC1451985071887935",
"环球综艺": "TOPC1571300682556971",
"中国好歌曲": "TOPC1451984949453678",
"广场舞金曲": "TOPC1528685010104859",
"曲苑杂谈": "TOPC1451984417763860",
"锦绣梨园": "TOPC1451558363250650",
"梨园周刊": "TOPC1574909786070351",
"外国人在中国": "TOPC1451541113743615",
"华人世界": "TOPC1451539822927345",
"武林大会": "TOPC1451551891055866",
"棋牌乐": "TOPC1451550531682936",
"动物传奇": "TOPC1451984181884527",
"美食中国": "TOPC1571034804976375",
"田间示范秀": "TOPC1563178908227191",
"三农群英会": "TOPC1600745974233265",
"乡村振兴面对面": "TOPC1568966531726705",
"超级新农人": "TOPC1597627647957699",
"印象乡村": "TOPC1563178734372977" }
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 = {}
extend['id'] = tid
extend['p'] = pg
filterParams = ["id", "p", "d"]
params = ["", "", ""]
for idx in range(len(filterParams)):
fp = filterParams[idx]
if fp in extend.keys():
params[idx] = '{0}={1}'.format(filterParams[idx],extend[fp])
suffix = '&'.join(params)
url = 'https://api.cntv.cn/NewVideo/getVideoListByColumn?{0}&n=20&sort=desc&mode=0&serviceId=tvcctv&t=json'.format(suffix)
if not tid.startswith('TOPC'):
url = 'https://api.cntv.cn/NewVideo/getVideoListByAlbumIdNew?{0}&n=20&sort=desc&mode=0&serviceId=tvcctv&t=json'.format(suffix)
rsp = self.fetch(url,headers=self.header)
jo = json.loads(rsp.text)
vodList = jo['data']['list']
videos = []
for vod in vodList:
guid = vod['guid']
title = vod['title']
img = vod['image']
brief = vod['brief']
videos.append({
"vod_id":guid+"###"+img,
"vod_name":title,
"vod_pic":img,
"vod_remarks":''
})
result['list'] = videos
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def detailContent(self,array):
aid = array[0].split('###')
tid = aid[0]
url = "https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid={0}".format(tid)
rsp = self.fetch(url,headers=self.header)
jo = json.loads(rsp.text)
title = jo['title'].strip()
link = jo['hls_url'].strip()
vod = {
"vod_id":tid,
"vod_name":title,
"vod_pic":aid[1],
"type_name":'',
"vod_year":"",
"vod_area":"",
"vod_remarks":"",
"vod_actor":"",
"vod_director":"",
"vod_content":""
}
vod['vod_play_from'] = 'CCTV'
vod['vod_play_url'] = title+"$"+link
result = {
'list':[
vod
]
}
return result
def searchContent(self,key,quick):
result = {
'list':[]
}
return result
def playerContent(self,flag,id,vipFlags):
result = {}
rsp = self.fetch(id,headers=self.header)
content = rsp.text.strip()
arr = content.split('\n')
urlPrefix = self.regStr(id,'(http[s]?://[a-zA-z0-9.]+)/')
url = urlPrefix + arr[-1]
result["parse"] = 0
result["playUrl"] = ''
result["url"] = url
result["header"] = ''
return result
config = {
"player": {},
"filter": {"TOPC1451557970755294": [{"key": "d", "name": "年份", "value": [{"n": "全部", "v": ""}, {"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"}]}]}
}
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, ""]

278
0307yyds/py/chuzhong.py Normal file
View File

@ -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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

287
0307yyds/py/gaozhong.py Normal file
View File

@ -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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

419
0307yyds/py/geshou.py Normal file
View File

@ -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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

297
0307yyds/py/meinv.py Normal file
View File

@ -0,0 +1,297 @@
#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 = {
"抖音合集":"抖音合集",
"快手美女合集":"快手美女合集",
"小姐姐":"小姐姐超清",
"黑丝":"黑丝",
"超短裤":"超短裤",
"超短裙":"超短裙",
"牛仔裤":"牛仔裤",
"选美":"选美",
"模特":"模特",
"泳装秀":"泳装秀",
"内衣秀":"内衣秀",
"练习室":"练习室",
"美女舞蹈":"美女舞蹈",
"舞蹈综合":"舞蹈综合",
"舞蹈教程":"舞蹈教程",
"古风舞蹈":"古风舞蹈",
"印度歌舞":"印度歌舞",
"明星舞蹈":"明星舞蹈",
"韩舞":"韩舞",
"古典舞":"古典舞",
"翻跳":"翻跳",
"中国舞":"中国舞",
"古风舞":"古风舞",
"现代舞":"现代舞",
"爵士舞":"爵士舞",
"芭蕾":"芭蕾",
"编舞":"编舞",
"POPPING":"POPPING",
"桃源恋歌":"桃源恋歌",
"新宝岛":"新宝岛",
"拉丁舞":"拉丁舞",
"蹦迪":"蹦迪",
"民族舞":"民族舞",
"抖肩舞":"抖肩舞",
"齐舞":"齐舞",
"机械舞":"机械舞",
"广场舞":"广场舞",
"极乐净土":"极乐净土",
"BDF":"BDF"
}
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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

374
0307yyds/py/mtv.py Normal file
View File

@ -0,0 +1,374 @@
#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 "明星MV"
def init(self,extend=""):
print("============{0}============".format(extend))
pass
def isVideoFormat(self,url):
pass
def manualVideoCheck(self):
pass
def homeContent(self,filter):
result = {}
cateManual = {
"粤语":"粤语MV4k合集",
"2022年热榜":"2022年热门MV4k合集",
"KTV热门":"KTV热门MV4k合集",
"滚石经典":"滚石MV4k合集",
"经典老歌":"经典老歌",
"古风MV":"古风MV4k合集",
"闽南语MV":"闽南语MV4k合集",
"印度歌舞":"印度歌舞MV4k合集",
"网红翻唱":"网红翻唱MV4k合集",
"韩国女团":"韩国女团MV4k合集",
"A阿黛尔":"阿黛尔MV4k合集",
"Blackpink":"blackpinkMV4k合集",
"Beyond":"beyondMV超清合集",
"B坂井泉水":"坂井泉水MV超清合集",
"B宝丽金":"宝丽金MV超清合集",
"B布兰妮":"布兰妮MV超清合集",
"C崔健":"催件MV超清合集",
"C草蜢":"草蜢MV超清合集",
"Coldplay":"coldplayMV超清合集",
"C陈慧娴":"陈慧娴MV超清合集",
"C陈百强":"陈百强MV超清合集",
"C陈淑桦":"陈淑桦MV超清合集",
"C陈楚生":"陈楚生MV超清合集",
"C陈慧琳":"陈慧琳MV超清合集",
"D邓丽君":"邓丽君MV超清合集",
"D邓紫棋":"邓紫棋MV超清合集",
"D刀郎":"刀郎MV超清合集",
"D达明一派":"刘以达MV超清合集",
"F费玉清":"费玉清MV超清合集",
"F飞图":"飞图MV超清合集",
"G谷村新司":"谷村新司MV超清合集",
"G郭富城":"郭富城MV超清合集",
"G关淑怡":"关淑怡MV超清合集",
"H黄凯芹":"黄凯芹MV超清合集",
"J降央卓玛":"降央卓玛MV超清合集",
"J江慧":"江慧MV超清合集",
"J吉永小百合":"吉永小百合MV超清合集",
"J金庸":"金庸影视MV超清合集",
"K柯以敏":"柯以敏MV超清合集",
"K邝美云":"邝美云MV超清合集",
"L刘德华":"刘德华MV超清合集",
"Lady Gaga":"Lady GagaMV超清合集",
"L龙飘飘":"龙飘飘MV超清合集",
"L罗大佑":"罗大佑MV",
"L林志炫":"林志炫MV",
"L林忆莲":"林忆莲MV",
"L李知恩":"李知恩MV",
"L梁静茹":"梁静茹MV",
"L冷漠":"冷漠MV",
"L李克勤":"李克勤MV",
"L林子祥":"林子祥MV",
"L黎明":"黎明MV",
"L刘若英":"刘若英MV",
"M莫文蔚":"莫文蔚MV",
"M孟庭苇":"孟庭苇MV",
"M麦当娜":"麦当娜MV",
"M迈克杰克逊":"迈克杰克逊MV",
"N雅尼紫禁城":"雅尼紫禁城MV",
"P潘越云":"潘越云MV",
"P潘美辰":"潘美辰MV",
"Q齐秦":"齐秦MV",
"R任贤齐":"任贤齐MV",
"S苏慧伦":"苏慧伦MV",
"T童安格":"童安格MV",
"TFBOYS":"TFBOYSMV",
"T太极乐队":"太极乐队MV",
"T唐朝摇滚":"唐朝摇滚MV",
"T谭咏麟":"谭咏麟MV",
"W王琪":"王琪MV",
"W伍珂玥":"伍珂玥MV",
"W王杰":"王杰MV",
"W伍佰":"伍佰MV",
"W温兆伦":"温兆伦MV",
"W王菲":"王菲MV",
"X徐小凤":"徐小凤MV",
"X席琳迪翁":"席琳迪翁MV",
"X许嵩":"黄许嵩MV",
"X许美静":"许美静MV",
"X许冠杰":"许冠杰MV",
"X熊天平":"熊天平MV",
"X小虎队":"小虎队MV",
"X许巍":"许巍MV",
"Y叶启田":"叶启田MV",
"Y杨钰莹":"杨钰莹MV",
"Y叶玉卿":"叶玉卿MV",
"Y杨千嬅":"杨千嬅MV",
"Y怡正宵":"怡正宵MV",
"Z左麟右李":"左麟右李MV",
"Z张楚":"张楚MV",
"Z张真":"张真MV",
"Z张震岳":"张震岳MV",
"Z赵传":"赵传MV",
"Z周华健":"周华健MV",
"Z周启生":"周启生MV",
"Z张信哲":"张信哲MV",
"Z张也":"张也MV",
"Z周慧敏":"周慧敏MV",
"Z张碧晨":"张碧晨MV",
"Z中岛美雪":"中岛美雪MV",
"Z张学友":"张学友MV",
"Z猪哥亮":"猪哥亮MV",
"Z周杰伦":"周杰伦MV",
"Z周深":"周深MV",
"Z张蔷":"张蔷MV",
"Z张帝":"张帝MV",
"Z张国荣":"张国荣MV",
"Z周传雄":"周传雄MV"
}
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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

312
0307yyds/py/nvtuan.py Normal file
View File

@ -0,0 +1,312 @@
#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 = {
"中国女团":"中国女团4K",
"日本女团":"日本女团4K",
"韩国女团":"韩国女团4K",
"SNH48":"SNH48MV合集",
"S.H.E":"S.H.EMV合集",
"Twins":"TwinsMV合集",
"火箭少女101":"火箭少女101MV合集",
"BY2":"BY2MV合集",
"S.I.N.G":"S.I.N.GMV合集",
"3unshine":"3unshineMV合集",
"蜜蜂少女队":"蜜蜂少女队MV合集",
"七朵组合":"七朵组合MV合集",
"GNZ48":"GNZ48MV合集",
"TWICE":"TWICEMV合集",
"4MINUTE":"4MINUTEMV合集",
"EXID":"EXIDMV合集",
"KARA":"KARAMV合集",
"TARA":"TARAMV合集",
"BLACKPINK":"BLACKPINKMV合集",
"LOONA":"LOONAMV合集",
"ITZY":"ITZYMV合集",
"RedVelvet":"RedVelvetMV合集",
"Everglow":"EverglowMV合集",
"Mamamoo":"MamamooMV合集",
"少女时代":"少女时代MV合集",
"S.E.S":"S.E.SMV合集",
"FIN.K.L":"FIN.K.LMV合集",
"2NE1":"2NE1MV合集",
"WonderGirls":"WonderGirlsMV合集",
"IZ*ONE":"IZ*ONEMV合集",
"Sistar":"SistarMV合集",
"Apink":"ApinkMV合集",
"AOA":"AOAMV合集",
"GFRIEND":"GFRIENDMV合集",
"f(x)":"f(x)MV合集",
"(G)I-DLE":"(G)I-DLEMV合集",
"Itzy":"ItzyMV合集",
"Oh!GG":"Oh!GGMV合集",
"GirlCrush":"GirlCrushMV合集",
"AKB48":"AKB48MV合集",
"SKE48":"SKE48MV合集",
"NMB48":"NMB48MV合集",
"JKT48":"JKT48MV合集",
"HKT48":"HKT48MV合集",
"AKB48TeamTP":"AKB48TeamTPMV合集",
"Perfume":"PerfumeMV合集",
"桃色幸运草Z":"桃色幸运草ZMV合集",
"乃木坂46乃":"乃木坂46乃MV合集",
"樱坂46":"樱坂46MV合集",
"日向坂46":"日向坂46MV合集",
"E-girls":"E-girlsMV合集",
"NiziU":"NiziUMV合集",
"BiSH":"BiSHMV合集",
"早安少女组":"早安少女组MV合集"
}
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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

147
0307yyds/py/pydouyu.py Normal file
View File

@ -0,0 +1,147 @@
#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 "斗鱼"
def init(self,extend=""):
pass
def isVideoFormat(self,url):
pass
def manualVideoCheck(self):
pass
def homeContent(self,filter):
result = {}
cateManual = {
"热门游戏": "热门游戏",
"一起看": "一起看",
"主机游戏": "主机游戏",
"原创IP": "原创IP",
"王者荣耀":"王者荣耀",
"英雄联盟":"英雄联盟",
"第五人格":"第五人格",
"火影忍者":"火影忍者",
"和平精英":"和平精英",
"DOTA2":"DOTA2",
"CF手游":"CF手游"
}
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 = {}
url = 'http://live.yj1211.work/api/live/getRecommendByPlatformArea?platform=douyu&size=20&area={0}&page={1}'.format(tid, pg)
rsp = self.fetch(url)
content = rsp.text
jo = json.loads(content)
videos = []
vodList = jo['data']
for vod in vodList:
aid = (vod['roomId']).strip()
title = vod['roomName'].strip()
img = vod['roomPic'].strip()
remark = (vod['categoryName']).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 detailContent(self,array):
aid = array[0]
url = "http://live.yj1211.work/api/live/getRoomInfo?platform=douyu&roomId={0}".format(aid)
rsp = self.fetch(url)
jRoot = json.loads(rsp.text)
jo = jRoot['data']
title = jo['roomName']
pic = jo['roomPic']
desc = str(jo['online'])
dire = jo['ownerName']
typeName = jo['categoryName']
remark = jo['categoryName']
vod = {
"vod_id": aid,
"vod_name": title,
"vod_pic": pic,
"type_name": typeName,
"vod_year": "",
"vod_area": "",
"vod_remarks": remark,
"vod_actor": '在线人数:' + desc,
"vod_director": dire,
"vod_content": ""
}
playUrl = '原画' + '${0}#'.format(aid)
vod['vod_play_from'] = '斗鱼直播'
vod['vod_play_url'] = playUrl
result = {
'list': [
vod
]
}
return result
def searchContent(self,key,quick):
result = {}
return result
def playerContent(self,flag,id,vipFlags):
result = {}
url = 'http://live.yj1211.work/api/live/getRealUrl?platform=douyu&roomId={0}'.format(id)
rsp = self.fetch(url)
jRoot = json.loads(rsp.text)
jo = jRoot['data']
ja = jo['OD']
url = ja
result["parse"] = 0
result["playUrl"] = ''
result["url"] = url
result["header"] = {
"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 = {}
config = {
"player": {},
"filter": {}
}
header = {}
def localProxy(self,param):
action = {
'url':'',
'header':'',
'param':'',
'type':'string',
'after':''
}
return [200, "video/MP2T", action, ""]

185
0307yyds/py/pyhuya.py Normal file
View File

@ -0,0 +1,185 @@
#coding=utf-8
#!/usr/bin/python
import sys
sys.path.append('..')
from base.spider import Spider
import json
import re
import time
import html
import base64
import hashlib
import urllib.parse
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 = {
"音乐":"音乐",
"星秀":"星秀",
"颜值":"颜值",
"交友":"交友",
"户外":"户外",
"美食":"美食",
"一起看":"一起看",
"王者荣耀":"王者荣耀",
"和平精英":"和平精英",
"英雄联盟":"英雄联盟",
"天天吃鸡":"天天吃鸡",
"穿越火线":"穿越火线",
"二次元":"二次元",
"体育":"体育",
"原神":"原神",
"三国杀":"三国杀",
"暗黑破坏神:不朽":"暗黑破坏神:不朽",
"迷你世界":"迷你世界",
"暗区突围":"暗区突围",
"生死狙击2":"生死狙击2",
"金铲铲之战":"金铲铲之战",
"英雄联盟手游":"英雄联盟手游",
"lol云顶之弈":"lol云顶之弈",
"剑侠世界3":"剑侠世界3",
"不良人3":"不良人3",
"二次元":"二次元",
"主机游戏":"主机游戏"
}
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 = {}
url = 'http://live.yj1211.work/api/live/getRecommendByPlatformArea?platform=huya&size=20&area={0}&page={1}'.format(tid, pg)
rsp = self.fetch(url)
content = rsp.text
jo = json.loads(content)
videos = []
vodList = jo['data']
for vod in vodList:
aid = (vod['roomId']).strip()
title = vod['roomName'].strip()
img = vod['roomPic'].strip()
remark = (vod['ownerName']).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 detailContent(self,array):
aid = array[0]
url = 'https://www.huya.com/' + aid
header = {
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}
rsp = self.fetch(url, headers=header)
streamInfo = re.findall(r'stream: ([\s\S]*?)\n', rsp.text)
if (len(streamInfo) > 0):
liveData = json.loads(streamInfo[0])
else:
streamInfo = re.findall(r'"stream": "([\s\S]*?)"', rsp.text)
if (len(streamInfo) > 0):
liveDataBase64 = streamInfo[0]
liveData = json.loads(str(base64.b64decode(liveDataBase64), 'utf-8'))
streamInfoList = liveData['data'][0]['gameStreamInfoList']
vod = {
"vod_id": aid,
"vod_name": liveData['data'][0]['gameLiveInfo']['roomName'],
"vod_pic": liveData['data'][0]['gameLiveInfo']['screenshot'],
"type_name": liveData['data'][0]['gameLiveInfo']['gameFullName'],
"vod_year": "",
"vod_area": "",
"vod_remarks": "",
"vod_actor": "",
"vod_director": "",
"vod_content": ""
}
playUrl = ''
for streamInfo in streamInfoList:
hls_url = streamInfo['sHlsUrl'] + '/' + streamInfo['sStreamName'] + '.' + streamInfo['sHlsUrlSuffix']
srcAntiCode = html.unescape(streamInfo['sHlsAntiCode'])
c = srcAntiCode.split('&')
c = [i for i in c if i != '']
n = {i.split('=')[0]: i.split('=')[1] for i in c}
fm = urllib.parse.unquote(n['fm'])
u = base64.b64decode(fm).decode('utf-8')
hash_prefix = u.split('_')[0]
ctype = n.get('ctype', '')
txyp = n.get('txyp', '')
fs = n.get('fs', '')
t = n.get('t', '')
seqid = str(int(time.time() * 1e3 + 1463993859134))
wsTime = hex(int(time.time()) + 3600).replace('0x', '')
hash = hashlib.md5('_'.join([hash_prefix, '1463993859134', streamInfo['sStreamName'], hashlib.md5((seqid + '|' + ctype + '|' + t).encode('utf-8')).hexdigest(), wsTime]).encode('utf-8')).hexdigest()
ratio = ''
purl = "{}?wsSecret={}&wsTime={}&seqid={}&ctype={}&ver=1&txyp={}&fs={}&ratio={}&u={}&t={}&sv=2107230339".format( hls_url, hash, wsTime, seqid, ctype, txyp, fs, ratio, '1463993859134', t)
playUrl = playUrl + '{}${}#'.format(streamInfo['sCdnType'], purl)
vod['vod_play_from'] = '虎牙直播'
vod['vod_play_url'] = playUrl
result = {
'list': [
vod
]
}
return result
def searchContent(self,key,quick):
result = {}
return result
def playerContent(self,flag,id,vipFlags):
result = {}
url = id
result["parse"] = 0
result["playUrl"] = ''
result["url"] = url
result["header"] = {
"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"] = ''
return result
config = {
"player": {},
"filter": {}
}
header = {}
config = {
"player": {},
"filter": {}
}
header = {}
def localProxy(self,param):
action = {
'url':'',
'header':'',
'param':'',
'type':'string',
'after':''
}
return [200, "video/MP2T", action, ""]

234
0307yyds/py/pylibvio.py Normal file

File diff suppressed because one or more lines are too long

142
0307yyds/py/qie.py Normal file
View File

@ -0,0 +1,142 @@
#coding=utf-8
#!/usr/bin/python
import sys
sys.path.append('..')
from base.spider import Spider
import json
import math
import re
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 = {
"全部": "",
"足球": "Football",
"篮球": "Basketball",
"NBA": "NBA",
"台球": "Billiards",
"搏击": "Fight",
"网排": "Tennis",
"游戏": "Game",
"其他": "Others",
"橄棒冰": "MLB"
}
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 = {}
url = 'https://live.qq.com/api/live/vlist?page_size=60&shortName={0}&page={1}'.format(tid, pg)
rsp = self.fetch(url)
content = rsp.text
jo = json.loads(content)
videos = []
vodList = jo['data']['result']
numvL = len(vodList)
pgc = math.ceil(numvL/15)
for vod in vodList:
aid = (vod['room_id'])
title = vod['room_name'].strip()
img = vod['room_src']
remark = (vod['game_name']).strip()
videos.append({
"vod_id": aid,
"vod_name": title,
"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]
url = "https://m.live.qq.com/{0}".format(aid)
rsp = self.fetch(url)
html = self.cleanText(rsp.text)
if self.regStr(reg=r'\"show_status\":\"(\d)\"', src=html) == '1':
title = self.regStr(reg=r'\"room_name\":\"(.*?)\"', src=html)
pic = self.regStr(reg=r'\"room_src\":\"(.*?)\"', src=html)
typeName = self.regStr(reg=r'\"game_name\":\"(.*?)\"', src=html)
remark = self.regStr(reg=r'\"nickname\":\"(.*?)\"', src=html)
purl = self.regStr(reg=r'\"hls_url\":\"(.*?)\"', src=html)
else:
return {}
vod = {
"vod_id": aid,
"vod_name": title,
"vod_pic": pic,
"type_name": typeName,
"vod_year": "",
"vod_area": "",
"vod_remarks": remark,
"vod_actor": '',
"vod_director":'',
"vod_content": ''
}
playUrl = '{0}${1}#'.format(typeName, purl)
vod['vod_play_from'] = '企鹅体育'
vod['vod_play_url'] = playUrl
result = {
'list': [
vod
]
}
return result
def searchContent(self,key,quick):
result = {}
return result
def playerContent(self,flag,id,vipFlags):
result = {}
url = id
header = {
'Referer': 'https://m.live.qq.com/',
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
result["parse"] = 0
result["playUrl"] = ''
result["url"] = url
result["header"] = header
return result
config = {
"player": {},
"filter": {}
}
header = {}
def localProxy(self,param):
action = {
'url':'',
'header':'',
'param':'',
'type':'string',
'after':''
}
return [200, "video/MP2T", action, ""]

289
0307yyds/py/qiudui.py Normal file
View File

@ -0,0 +1,289 @@
#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 = {
"梅西":"梅西",
"C罗":"C罗",
"天下足球":"天下足球",
"罗纳尔多":"罗纳尔多",
"亨利":"亨利",
"小罗":"小罗",
"齐达内":"齐达内",
"贝克汉姆":"贝克汉姆",
"内马尔":"内马尔",
"德布劳内":"德布劳内",
"欧冠":"欧冠",
"世界杯":"世界杯",
"西甲":"西甲",
"英超":"英超",
"意甲":"意甲",
"德甲":"德甲",
"国米":"国米",
"皇马":"皇马",
"巴萨":"巴萨",
"巴黎圣日耳曼":"巴黎圣日耳曼",
"曼联":"曼联",
"曼城":"曼城",
"NBA":"NBA",
"詹姆斯":"詹姆斯",
"库里":"库里",
"杜兰特":"杜兰特",
"UFC":"UFC",
"斯诺克":"斯诺克",
"网球":"网球",
"F1":"F1",
"高尔夫":"高尔夫"
}
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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

291
0307yyds/py/tiyu.py Normal file
View File

@ -0,0 +1,291 @@
#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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

211
0307yyds/py/video.py Normal file
View File

@ -0,0 +1,211 @@
#coding=utf-8
#!/usr/bin/python
import sys
sys.path.append('..')
from base.spider import Spider
import json
from requests import session, utils
import os
import time
import base64
class Spider(Spider): # 元类 默认的元类 type
def getName(self):
return "B站影视"
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",
"国创": "4",
"电影": "2",
"综艺": "7",
"电视剧": "5",
"纪录片": "3"
}
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):
cookies_str = self.fetch("https://yydsys.top/duo/txt/cookie.txt").text
cookies_dic = dict([co.strip().split('=') for co in cookies_str.split(';')])
rsp = session()
cookies_jar = utils.cookiejar_from_dict(cookies_dic)
rsp.cookies = cookies_jar
content = self.fetch("http://api.bilibili.com/x/web-interface/nav", cookies=rsp.cookies)
res = json.loads(content.text)
if res["code"] == 0:
self.cookies = rsp.cookies
else:
rsp = self.fetch("https://www.bilibili.com/")
self.cookies = rsp.cookies
return rsp.cookies
def categoryContent(self,tid,pg,filter,extend):
result = {}
url = 'https://api.bilibili.com/pgc/season/index/result?order=2&season_status=-1&style_id=-1&sort=0&area=-1&pagesize=20&type=1&st={0}&season_type={0}&page={1}'.format(tid,pg)
if len(self.cookies) <= 0:
self.getCookie()
rsp = self.fetch(url, cookies=self.cookies)
content = rsp.text
jo = json.loads(content)
videos = []
vodList = jo['data']['list']
for vod in vodList:
aid = str(vod['season_id']).strip()
title = vod['title'].strip()
img = vod['cover'].strip()
remark = vod['index_show'].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 = "http://api.bilibili.com/pgc/view/web/season?season_id={0}".format(aid)
rsp = self.fetch(url,headers=self.header)
jRoot = json.loads(rsp.text)
jo = jRoot['result']
id = jo['season_id']
title = jo['title']
pic = jo['cover']
areas = jo['areas'][0]['name']
typeName = jo['share_sub_title']
dec = jo['evaluate']
remark = jo['new_ep']['desc']
vod = {
"vod_id":id,
"vod_name":title,
"vod_pic":pic,
"type_name":typeName,
"vod_year":"",
"vod_area":"bilidanmu",
"vod_remarks":remark,
"vod_actor":"",
"vod_director":"",
"vod_content":dec
}
ja = jo['episodes']
playUrl = ''
for tmpJo in ja:
eid = tmpJo['id']
cid = tmpJo['cid']
part = tmpJo['title'].replace("#", "-")
playUrl = playUrl + '{0}${1}_{2}#'.format(part, eid, cid)
vod['vod_play_from'] = 'B站影视'
vod['vod_play_url'] = playUrl
result = {
'list':[
vod
]
}
return result
def searchContent(self,key,quick):
url = 'https://api.bilibili.com/x/web-interface/search/type?search_type=media_bangumi&keyword={0}'.format(key) # 番剧搜索
if len(self.cookies) <= 0:
self.getCookie()
rsp = self.fetch(url, cookies=self.cookies)
content = rsp.text
jo = json.loads(content)
rs = jo['data']
if rs['numResults'] == 0:
url = 'https://api.bilibili.com/x/web-interface/search/type?search_type=media_ft&keyword={0}'.format(key) # 影视搜索
rspRetry = self.fetch(url, cookies=self.cookies)
content = rspRetry.text
jo = json.loads(content)
videos = []
vodList = jo['data']['result']
for vod in vodList:
aid = str(vod['season_id']).strip()
title = vod['title'].strip().replace("<em class=\"keyword\">", "").replace("</em>", "")
img = vod['eps'][0]['cover'].strip()
remark = vod['index_show']
videos.append({
"vod_id": aid,
"vod_name": title,
"vod_pic": img,
"vod_remarks": remark
})
result = {
'list': videos
}
return result
def playerContent(self,flag,id,vipFlags):
result = {}
ids = id.split("_")
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"
}
url = 'https://api.bilibili.com/pgc/player/web/playurl?qn=116&ep_id={0}&cid={1}'.format(ids[0],ids[1])
if len(self.cookies) <= 0:
self.getCookie()
rsp = self.fetch(url,cookies=self.cookies,headers=header)
jRoot = json.loads(rsp.text)
if jRoot['message'] != 'success':
url = ''
else:
jo = jRoot['result']
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, ""]

282
0307yyds/py/xiaopin.py Normal file
View File

@ -0,0 +1,282 @@
#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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

276
0307yyds/py/xiaoxue.py Normal file
View File

@ -0,0 +1,276 @@
#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 = {
"1年级语文":"1年级语文",
"1年级数学":"1年级数学",
"1年级英语":"1年级英语",
"2年级语文":"2年级语文",
"2年级数学":"2年级数学",
"2年级英语":"2年级英语",
"3年级语文":"3年级语文",
"3年级数学":"3年级数学",
"3年级英语":"3年级英语",
"4年级语文":"4年级语文",
"4年级数学":"4年级数学",
"4年级英语":"4年级英语",
"5年级语文":"5年级语文",
"5年级数学":"5年级数学",
"5年级英语":"5年级英语",
"6年级语文":"6年级语文",
"6年级数学":"6年级数学",
"6年级英语":"6年级英语"
}
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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

303
0307yyds/py/xiqu.py Normal file
View File

@ -0,0 +1,303 @@
#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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

283
0307yyds/py/yinyue.py Normal file
View File

@ -0,0 +1,283 @@
#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 "B站音乐"
def init(self,extend=""):
print("============{0}============".format(extend))
pass
def isVideoFormat(self,url):
pass
def manualVideoCheck(self):
pass
def homeContent(self,filter):
result = {}
cateManual = {
"经典无损音乐合集":"经典无损音乐合集",
"粤语":"粤语歌曲超清",
"2022年热榜":"2022年热们歌曲",
"经典老歌":"经典老歌",
"古风歌曲":"古风歌曲",
"闽南语歌曲":"闽南语歌曲",
"印度歌舞":"印度歌舞",
"8K":"8K",
"4K杜比视界":"4K杜比视界",
"4K":"4K",
"黑胶":"黑胶",
"MV":"MV",
"4K小姐姐":"4K小姐姐",
"超清小姐姐":"超清小姐姐",
"经典粤语":"经典粤语",
"经典老歌":"经典老歌",
"宝华音乐台":"宝华音乐台",
"翻唱":"翻唱",
"张学友":"张学友",
"伍佰":"伍佰",
"陈奕迅":"陈奕迅",
"演唱会":"演唱会",
"欧美金曲":"欧美金曲",
"日韩MV":"日韩MV",
"DJ":"DJ"
}
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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

273
0307yyds/py/youer.py Normal file
View File

@ -0,0 +1,273 @@
#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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

272
0307yyds/py/zyy.py Normal file
View File

@ -0,0 +1,272 @@
#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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

268
0307yyds/py/搭讪.py Normal file
View File

@ -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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

277
0307yyds/py/搭配.py Normal file
View File

@ -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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

305
0307yyds/py/美食合集.py Normal file
View File

@ -0,0 +1,305 @@
#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 = "_uuid=E510513EF-101067-E17F-62F4-D7A8FBC10FB10F99961infoc;b_nut=1651385600;buvid3=F9350D47-7372-06BC-B255-176D3CA83F7999992infoc;buvid_fp_plain=undefined;nostalgia_conf=-1;CURRENT_BLACKGAP=0;hit-dyn-v2=1;blackside_state=0;LIVE_BUVID=AUTO9916574431422984;DedeUserID=11484862;DedeUserID__ckMd5=68cf9c3547d3e047;i-wanna-go-back=-1;b_ut=5;rpdid=|(k|~J|Y|kRY0J'uYYmR)k)k);buvid4=3E7B6AAD-86D4-CADB-EF95-57B25F1167A699992-022050114-9H%2BeTTp9%2BHXzHQLOa8rQmw%3D%3D;CURRENT_QUALITY=80;CURRENT_FNVAL=4048;SESSDATA=8d008c0f%2C1689689118%2C37eac%2A12;bili_jct=b85afbb1a7052d40b5153025c211d586;sid=5fhi1cof;PVID=1;session-api=a50rgln1nfe554qdfhb1r615lg;fingerprint=b28330ab73edf4fb4dd1b4db2427fef8;bp_video_offset_11484862=765084617951674400;buvid_fp=a0fb18d20db23e204fb0320df564a12e;_csrf=y5AfWPlWS9tAl7JTBiWbPrPO"
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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("<em class=\"keyword\">","").replace("</em>","")
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, ""]

5173
0307yyds/v.txt Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More