diff --git a/初见影视.py b/初见影视.py new file mode 100644 index 0000000..4413015 --- /dev/null +++ b/初见影视.py @@ -0,0 +1,622 @@ +# -*- coding: utf-8 -*- +# 初见影视爬虫 - 爱豆儿解析版 +import re +import json +import urllib.parse +import sys + +sys.path.append('..') +from base.spider import Spider + + +class Spider(Spider): + + def init(self, extend=""): + self.extend = extend + + def getName(self): + return "初见影视" + + def isVideoFormat(self, url): + return False + + def manualVideoCheck(self): + return False + + def destroy(self): + pass + + host = 'https://cjysw.cc' + + headers = { + 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Mobile) ' + 'AppleWebKit/537.36 (KHTML, like Gecko) ' + 'Chrome/114.0.0.0 Mobile Safari/537.36', + 'Referer': host, + } + + classes_config = [ + ("电影", "1"), + ("剧集", "15"), + ("动漫", "30"), + ("综艺", "24"), + ("纪录片", "63"), + ("短剧", "47"), + ("Netflix", "60"), + ] + + # ====== 只使用爱豆儿解析接口 ====== + PARSE_API = "https://jx.aidouer.net/?url=" + + def homeContent(self, filter): + result = {} + classes = [] + + for name, tid in self.classes_config: + classes.append({ + "type_name": name, + "type_id": tid + }) + + filters = {} + + filters["1"] = [ + {"key": "class", "name": "类型", "value": [ + {"n": "全部", "v": ""}, + {"n": "动作", "v": "动作"}, + {"n": "喜剧", "v": "喜剧"}, + {"n": "爱情", "v": "爱情"}, + {"n": "科幻", "v": "科幻"}, + {"n": "恐怖", "v": "恐怖"}, + {"n": "剧情", "v": "剧情"}, + {"n": "战争", "v": "战争"}, + {"n": "犯罪", "v": "犯罪"}, + {"n": "动画", "v": "动画"}, + {"n": "奇幻", "v": "奇幻"}, + {"n": "冒险", "v": "冒险"}, + {"n": "悬疑", "v": "悬疑"}, + {"n": "惊悚", "v": "惊悚"}, + {"n": "古装", "v": "古装"}, + {"n": "历史", "v": "历史"}, + ]}, + {"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": "其他"}, + ]}, + {"key": "year", "name": "年份", "value": [ + {"n": "全部", "v": ""}, + {"n": "2026", "v": "2026"}, + {"n": "2025", "v": "2025"}, + {"n": "2024", "v": "2024"}, + {"n": "2023", "v": "2023"}, + {"n": "2022", "v": "2022"}, + {"n": "2021", "v": "2021"}, + {"n": "2020", "v": "2020"}, + ]}, + ] + + filters["15"] = [ + {"key": "class", "name": "类型", "value": [ + {"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": "英国"}, + ]}, + {"key": "year", "name": "年份", "value": [ + {"n": "全部", "v": ""}, + {"n": "2026", "v": "2026"}, + {"n": "2025", "v": "2025"}, + {"n": "2024", "v": "2024"}, + {"n": "2023", "v": "2023"}, + {"n": "2022", "v": "2022"}, + ]}, + ] + + filters["30"] = [ + {"key": "area", "name": "地区", "value": [ + {"n": "全部", "v": ""}, + {"n": "大陆", "v": "大陆"}, + {"n": "日本", "v": "日本"}, + {"n": "美国", "v": "美国"}, + ]}, + {"key": "year", "name": "年份", "value": [ + {"n": "全部", "v": ""}, + {"n": "2026", "v": "2026"}, + {"n": "2025", "v": "2025"}, + {"n": "2024", "v": "2024"}, + ]}, + ] + + filters["24"] = [ + {"key": "year", "name": "年份", "value": [ + {"n": "全部", "v": ""}, + {"n": "2026", "v": "2026"}, + {"n": "2025", "v": "2025"}, + {"n": "2024", "v": "2024"}, + ]}, + ] + + filters["63"] = [ + {"key": "year", "name": "年份", "value": [ + {"n": "全部", "v": ""}, + {"n": "2026", "v": "2026"}, + {"n": "2025", "v": "2025"}, + {"n": "2024", "v": "2024"}, + ]}, + ] + + filters["47"] = [ + {"key": "year", "name": "年份", "value": [ + {"n": "全部", "v": ""}, + {"n": "2026", "v": "2026"}, + {"n": "2025", "v": "2025"}, + ]}, + ] + + filters["60"] = [ + {"key": "year", "name": "年份", "value": [ + {"n": "全部", "v": ""}, + {"n": "2026", "v": "2026"}, + {"n": "2025", "v": "2025"}, + ]}, + ] + + result['filters'] = filters + + rsp = self.fetch(self.host, headers=self.headers) + html = rsp.text + + vlist = [] + + pattern = r']*href="([^"]+)"[^>]*class="[^"]*module-poster-item[^"]*"[^>]*>(.*?)' + items = re.findall(pattern, html, re.DOTALL) + + for href, item_html in items: + title_match = re.search(r'