This commit is contained in:
jdk 2023-03-08 18:56:44 +08:00
parent bfab4a0246
commit 001eb27a9d
129 changed files with 0 additions and 46656 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,703 +0,0 @@
{
"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

@ -1,764 +0,0 @@
{
"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

@ -1,477 +0,0 @@
{
"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

File diff suppressed because it is too large Load Diff

View File

@ -1,301 +0,0 @@
{
"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"}
]}
]
}
}

View File

@ -1,362 +0,0 @@
{
"作者": "菜妮丝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

@ -1,18 +0,0 @@
{
"作者": "菜妮丝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

@ -1,70 +0,0 @@
{
"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

@ -1,72 +0,0 @@
{
"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

@ -1,57 +0,0 @@
//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

@ -1,89 +0,0 @@
//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

@ -1,159 +0,0 @@
//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

@ -1,87 +0,0 @@
{
"规则名": "有声小说吧",
"规则作者": "香雅情",
"请求头参数": "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

@ -1,70 +0,0 @@
{
"规则名": "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

@ -1,74 +0,0 @@
{
"规则名": "野马影视",
"规则作者": "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"
}

View File

@ -1 +0,0 @@
b9ef8bd2e30648b2ba5f41abc3699cfc

View File

@ -1,30 +0,0 @@
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)});"
},
搜索:'',
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,26 +0,0 @@
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',
}

View File

@ -1,274 +0,0 @@
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 it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,16 +0,0 @@
使用方法:
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.

Before

Width:  |  Height:  |  Size: 57 KiB

View File

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

Binary file not shown.

View File

@ -1,121 +0,0 @@
{
"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"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@ -1,301 +0,0 @@
{
"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"}
]}
]
}
}

View File

@ -1,72 +0,0 @@
{
"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

@ -1,41 +0,0 @@
{
"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

@ -1,41 +0,0 @@
{
"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

@ -1,67 +0,0 @@
{
"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

@ -1,386 +0,0 @@
{
"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

@ -1,70 +0,0 @@
{
"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

@ -1,119 +0,0 @@
//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

@ -1,159 +0,0 @@
//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

@ -1,86 +0,0 @@
{
"规则名": "野马影院",
"规则作者": "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"
}

Binary file not shown.

View File

@ -1 +0,0 @@
5fe7ecb3e9984645aefa0a9ffc6dc99a

Binary file not shown.

View File

@ -1 +0,0 @@
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',二级:'*',搜索:'',}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
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

View File

@ -1 +0,0 @@
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'},搜索:'',}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +0,0 @@
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)}',
}

View File

@ -1 +0,0 @@
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',推荐:'*'}

File diff suppressed because one or more lines are too long

View File

@ -1,189 +0,0 @@
// 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);
};
}());

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
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'},搜索:'',}

View File

@ -1 +0,0 @@
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'},搜索:'',}

File diff suppressed because one or more lines are too long

View File

@ -1,78 +0,0 @@
/* -> 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

@ -1 +0,0 @@
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',}

View File

@ -1,274 +0,0 @@
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

File diff suppressed because one or more lines are too long

View File

@ -1,37 +0,0 @@
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"
},
搜索:'*',
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,189 +0,0 @@
#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, ""]

View File

@ -1,278 +0,0 @@
#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, ""]

View File

@ -1,287 +0,0 @@
#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, ""]

View File

@ -1,419 +0,0 @@
#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, ""]

View File

@ -1,297 +0,0 @@
#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, ""]

View File

@ -1,374 +0,0 @@
#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, ""]

View File

@ -1,312 +0,0 @@
#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, ""]

View File

@ -1,147 +0,0 @@
#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, ""]

View File

@ -1,185 +0,0 @@
#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, ""]

File diff suppressed because one or more lines are too long

View File

@ -1,142 +0,0 @@
#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, ""]

View File

@ -1,289 +0,0 @@
#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, ""]

View File

@ -1,291 +0,0 @@
#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, ""]

View File

@ -1,211 +0,0 @@
#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, ""]

View File

@ -1,282 +0,0 @@
#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, ""]

View File

@ -1,276 +0,0 @@
#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, ""]

View File

@ -1,303 +0,0 @@
#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, ""]

View File

@ -1,283 +0,0 @@
#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, ""]

View File

@ -1,273 +0,0 @@
#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, ""]

View File

@ -1,272 +0,0 @@
#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, ""]

View File

@ -1,268 +0,0 @@
#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, ""]

View File

@ -1,277 +0,0 @@
#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, ""]

View File

@ -1,305 +0,0 @@
#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, ""]

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