# eso_source
**Repository Path**: alanskycn/eso_source
## Basic Information
- **Project Name**: eso_source
- **Description**: 每半小时自动同步一次 https://github.com/mabDc/eso_source
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: https://gitee.com/alanskycn/eso_source/raw/master/manifest
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2020-07-17
- **Last Updated**: 2024-02-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 请看[wiki](https://github.com/mabDc/eso_source/wiki/)
# 亦搜规则

用于APP内的网络导入,可以是单个规则,也可以是合并后的规则。欢迎成为协作者或者提交pr参与规则编写。
[merge.py](https://github.com/mabDc/eso_source/blob/master/.github/script/merge.py)是自动合并脚本,合并分类中的文件时会忽略其中的文件夹(含`失效`文件夹)、`*.md`文件和`sub.json`文件,修复失效源后,将其移除`失效`文件夹才会被合并
[mainfest](https://raw.githubusercontent.com/mabDc/eso_source/master/manifest) 是所有源合并后的规则,链接:
`https://raw.githubusercontent.com/mabDc/eso_source/master/manifest`
网络问题可以使用[jsdelivr cdn](https://www.jsdelivr.com/?docs=gh),即[mainfest from jsdelivr](https://cdn.jsdelivr.net/gh/mabDc/eso_source/manifest),链接:
`https://cdn.jsdelivr.net/gh/mabDc/eso_source/manifest`
[所有图片源](https://raw.githubusercontent.com/mabDc/eso_source/master/图片/sub.json)合并后的规则链接:
`https://raw.githubusercontent.com/mabDc/eso_source/master/图片/sub.json`
[所有文字源](https://raw.githubusercontent.com/mabDc/eso_source/master/文字/sub.json)合并后的规则链接:
`https://raw.githubusercontent.com/mabDc/eso_source/master/文字/sub.json`
[所有视频源](https://raw.githubusercontent.com/mabDc/eso_source/master/视频/sub.json)合并后的规则链接:
`https://raw.githubusercontent.com/mabDc/eso_source/master/视频/sub.json`
[所有音频源](https://raw.githubusercontent.com/mabDc/eso_source/master/音频/sub.json)合并后的规则链接:
`https://raw.githubusercontent.com/mabDc/eso_source/master/音频/sub.json`
下面是规则编写说明。主要是三类:地址规则、取元素规则、取字符串规则。
响应解析目前仅支持静态,不支持动态,同多多猫,[多多猫插件开发指南](https://www.kancloud.cn/magicdmer/ddcat_plugin_develop/1036896) 解释的很清楚
> **2.5.2 插件的调试**
> ...
> **注意:** Ctrl+u和F12开发者工具Elements面板中显示源代码的的区别是前者显示的是不加载js的html源代码,后者显示的是加载内部外部js后的html代码。sited引擎读取前者代码,所以有时候在浏览器开发者工具(Console面板)能找出数据,在app里却报错,就是因为Ctrl+u源代码中没有相应数据。
## 地址规则
请用`源编辑界面`的`地址模版`,
```javascript
@js:
(() => {
var url = `/xx${keyword}xx${page}`;
var method = "get"; // or "post"
var body = {};
var headers = {};
// var encoding = "gbk";
return {url, method, body, headers};
})();
```
需要对搜索关键词进行中文编码则为
```javascript
@js:
(() => {
var url = `/xx${keyword}xx${page}`;
var method = "get"; // or "post"
var body = {};
var headers = {};
var encoding = "gbk";
return {url, method, body, encoding, headers};
})();
```
响应解码由app内部自动处理,无需了解。
## 取元素规则
使用`jsonpath`、`xpath`、`css`或者`js`编写,其中前三种可以网页右键复制路径,app自动识别。
如`$..item.*`或者`//li`或者`li`等,若用`js`,最后应输出`Array`对象
## 取字符串规则
形如 `rule##replaceRegex##replacement##replaceFirst`
其中 `rule` 可以是 `js` 或 `css` 或 `xpath` 或 `jsonpath` , 形式如下:
`@js:js code`
`@json:$.name` 或 `$.name`(省略`@json:`)
`@css:.name@text` 或 `.name@text`(省略`@css:`)
`@xpath://*[class=name]/text()` 或 `//*[class=name]/text()`(省略`@xpath:`)
`:regex`
建议省略`@json:`,`@css:`,`@xpath:`,由app自动识别。
如果需要拼接则用`aaa{{rulexxx}}bbb{{ruleyyy}}ccc`
## 其他规则
1. 所有规则含`host`,除搜索和发现地址都含有`result`,除地址都含有`baseUrl`。
2. `结果规则`会成为下一条`地址规则`的`result`,成为下一条除地址规则的`lastResult`。地址规则的响应会成为其他规则的`result`。
3. 地址规则不用js时,使用`$加变量名`来动态替换实际内容,包含`$keyword`,`$page`,`$result`,`$host`等。地址规则使用js时请写变量名,不需要带`$`。
4. 可以用`http.get(url)`来获取请求。
5. 规则搜索部分共用一个js上下文,目录部分也共用一个js上下文。同一个上下文的规则的全局变量可以直接相互获取。(如用于目录列表设置id,章节结果获取所设置的id)