主题
编写视频源
💡提示
在编写视频源之前,请前往视频源规则了解学习视频源规则的构成和规则说明。
新建视频源
例如:我们要编写 https://www.abc.com
的视频规则
- 打开
IEnjoy
,在导航栏
我的
界面,点击视频源管理
- 点击右上角
⋮
图标,选择新建视频源
- 源Url:
https://www.abc.com
(必填项) - 源名称:网站名称或者其他自己随便定义(必填项)
- 源分组:用作筛选视频源之用(非必填项)
- 请求头:非必填项,一般无需设置
请求头的值是JSON对象,键和值都是字符串,格式为:
json
{
"User-Agent": "user-agent",
"Referer": "",
"Cookie": "{\"key1\": \"value1\", \"key2\": \"value2\"}"
}
编写搜索页规则
搜索Url为:https://www.abc.com/search/page/1/wd/影片名称.html
搜索结果页示例代码:
html
...
<div class="video-list">
<div class="video-card">
<div class="video-pic">
<a href=""><img src="" alt="影片封面"/></a>
</div>
<div class="video-info">
<p>影片一名称</p>
<p>影片一分类信息</p>
<p>导演:导演名字</p>
<p>主演:主演名字</p>
<p>影片一简介</p>
<a href="">详情</a>
</div>
</div>
<div class="video-card">
<div class="video-pic">
<a href=""><img src="" alt="影片封面"/></a>
</div>
<div class="video-info">
<p>影片二名称</p>
<p>影片二分类信息</p>
<p>导演:导演名字</p>
<p>主演:主演名字</p>
<p>影片二简介</p>
<a href="">详情</a>
</div>
</div>
</div>
...
搜索地址:/search/wd//page/.html
固定格式:将关键词替换为 ,页码替换为
,域名部分可省略。
txt
列表://div[@class='video-card']
剧集名称://p[1]/text()
导演:substring-after(//p[3]/text(),'导演:')
主演:substring-after(//p[4]/text(),'主演:')
分类://p[2]/text()
更新状态:没有信息,规则可留空
更新时间:没有信息,规则可留空
简介://p[5]/text()
海报://img/@src
详情页Url://img/../@href
txt
列表:class.video-list.1@class.video-card
剧集名称:class.video-info@tag.p.0@text
导演:class.video-info@tag.p.2@text##导演:
主演:class.video-info@tag.p.3@text##主演:
分类:class.video-info@tag.p.1@text
更新状态:没有信息,规则可留空
更新时间:没有信息,规则可留空
简介:class.video-info@tag.p.4@text
海报:class.video-pic@tag.img@src
详情页Url:class.video-info@tag.a@href
编写发现页规则
💡提示
发现页除了【发现Url筛选规则】外,其他的规则编写方法与搜索的规则一样。其他就不赘述,着重讲解【发现Url筛选规则】的编写。
若顶层filter设定了值,那么子分类的filter将被忽略
电影列表Url为:https://www.abc.com/show/catid/1/area/中国大陆/type/喜剧/year/2022/page/1.html
筛选列表为:
txt
分类 全部 动作片 喜剧片 ...
类型 全部 喜剧 爱情 ...
地区 全部 中国大陆 中国香港 ...
年份 全部 2022 2021 ...
电视剧列表Url为:https://www.abc.com/show/catid/2/area/中国大陆/type/国产剧/year/2022/page/1.html
筛选列表为:
txt
分类 全部 国产剧 港台剧 ...
类型 全部 古装 青春偶像 ...
地区 全部 中国大陆 中国香港 ...
年份 全部 2022 2021 ...
以电影列表和电视剧列表为例子来讲解。
由此可得到筛选URL规则:
json
{
"url": "/show/catid/{{id}}/area/{{area}}/type/{{type}}/year/{{year}}/page/{{page}}.html",
//分类id的参数名是catid,与默认的id不一致
//所以需要将catid映射到id,参数名一致时可省略。
"mapping":{
"id": "catid",
},
"classify": [
{
"id": 1,
"alias": "dianying", //一般是在伪静态隐藏了ID时设置
"name": "电影",
"subClassify": {
"name": "分类",
"values": [
{
"id": 6, //若使用alias别名,id可省略
"alias": "dongzuo", //别名,一般是在伪静态隐藏了分类时设置,可忽略
"name": "动作片"
},
{
"id": 7, //若使用alias别名,id可省略
"alias": "xiju", //别名,一般是在伪静态隐藏了分类时设置,可忽略
"name": "喜剧片"
}
]
},
"filter": {
"type": {
"name": "类型",
"values": [
{
"name": "喜剧"
},
{
"name": "爱情"
}
]
},
"area": {
"name": "地区",
"values": [
{
"name": "中国大陆"
},
{
"name": "中国香港"
}
]
},
"year": {
"name": "年份",
"values": [
{
"name": "2022"
},
{
"name": "2021"
}
]
}
}
},
{
"id": 2,
"name": "电视剧",
"subClassify": {
"name": "分类",
"values": [
{
"id": 8, //若使用alias别名,id可省略
"alias": "guochanju", //别名,一般是在伪静态隐藏了分类时设置,可忽略
"name": "国产剧"
},
{
"id": 9, //若使用alias别名,id可省略
"alias": "gangtaiju", //别名,一般是在伪静态隐藏了分类时设置,可忽略
"name": "港台剧"
}
]
},
"filter": {
"type": {
"name": "类型",
"values": [
{
"name": "古装"
},
{
"name": "青春偶像"
}
]
},
"area": {
"name": "地区",
"values": [
{
"name": "中国大陆"
},
{
"name": "中国香港"
}
]
},
"year": {
"name": "年份",
"values": [
{
"name": "2022"
},
{
"name": "2021"
}
]
}
}
}
]
}
如果各大分类的筛选规则 filter
部分一致,那么可将筛选规则 filter
部分提取出来方在跟 classify
同级,简写为:
json
{
"url": "/show/catid/{{id}}/area/{{area}}/type/{{type}}/year/{{year}}/page/{{page}}.html",
//分类id的参数名是catid,与默认的id不一致
//所以需要将catid映射到id,参数名一致时可省略。
"mapping":{
"id": "catid",
},
"classify": [
{
"id": 1,
"name": "电影",
"subClassify": {
"name": "分类",
"values": [
{
"id": 6,
"name": "动作片"
},
{
"id": 7,
"name": "喜剧片"
}
]
}
},
{
"id": 2,
"name": "电视剧",
"subClassify": {
"name": "分类",
"values": [
{
"id": 8,
"name": "国产剧"
},
{
"id": 9,
"name": "港台剧"
}
]
}
}
],
"filter": {
"type": {
"name": "类型",
"values": [
{
"name": "古装"
},
{
"name": "青春偶像"
}
]
},
"area": {
"name": "地区",
"values": [
{
"name": "中国大陆"
},
{
"name": "中国香港"
}
]
},
"year": {
"name": "年份",
"values": [
{
"name": "2022"
},
{
"name": "2021"
}
]
}
}
}
编写详情页规则
详情页示例代码:
html
...
<div id="video-detail">
<div class="info-left">
<h1>影片名称</h1>
<p>影片分类</p>
<div class="info-box">
<p>影片简介</p>
<p>导演</p>
<p>主演</p>
<p>更新至第06集</p>
<p>更新时间</p>
</div>
</div>
<div class="info-right">
<img src="" alt="影片海报" />
</div>
</div>
...
txt
剧集名称://h1/text()
导演://div[@class='info-box']/p[2]/text()
主演://div[@class='info-box']/p[3]/text()
分类://div[@class='info-left']/p/text()
更新状态://div[@class='info-box']/p[4]/text()
更新时间://div[@class='info-box']/p[5]/text()
海报://div[@class='info-right']/img/@src
简介://div[@class='info-box']/p[1]/text()
播放页Url:该规则是在详情页没有播放列表,需要跳转到播放列表页时才会用到。
txt
剧集名称:id.video-detail@h1
导演:id.video-detail@tag.p.2@text 或 id.video-detail@class.info-box@tag.p.1@text
主演:id.video-detail@tag.p.3@text 或 id.video-detail@class.info-box@tag.p.2@text
分类:id.video-detail@tag.p.0@text
更新状态:id.video-detail@tag.p.4@text
更新时间:id.video-detail@tag.p.5@text
海报:tag.img@src
简介:id.video-detail@tag.p.1@text
播放页Url:该规则是在详情页没有播放列表,需要跳转到播放列表页时才会用到。
编写剧集规则
剧集列表示例代码:
html
...
<ul class="play-line">
<li>极速播放</li>
<li>云播</li>
...
</ul>
<ul class="play-list" id="panel1">
<li><a href="">第1集</a></li>
<li><a href="">第2集</a></li>
...
</ul>
<ul class="play-list" id="panel2">
<li><a href="">第1集</a></li>
<li><a href="">第2集</a></li>
...
</ul>
...
txt
线路列表://ul[@class='play-line']/li
线路名称://text()
播放列表://ul[@class='play-list']
剧集列表://a
剧集名称://text()
播放Url://@href
txt
线路列表:class.play-line@tag.li
线路名称:text
播放列表:class.play-list
剧集列表:tag.li@tag.a
剧集名称:text
播放Url:href
编写播放规则
播放规则示例代码:
html
<script>
var param = {"a": "a", "nowPlay": "https://a.com/x.html", "nextPlay": ""}
</script>
Url正则格式:正则表达式1||正则表达式2||...||正则表达式n##替换内容
,正则表达式可为多个,每个正则之间用 ||
隔开,##替换内容
可省略。
txt
Js变量://script[contains(text(),'param')]/text()
Url正则:(https?).+?(?=".+next)||(https?)##https://www.abc.com/?url=$1
txt
Js变量:param@(https?).+?(?=".+next) //格式为:JS变量名.位置@正则表达式
Url正则:(https?)##https://www.abc.com/?url=$1