├── LICENSE
├── README.md
└── 书源
└── Bato.To.xbs
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Zander Alastor
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 香色闺阁书源制作教程
2 |
3 | 选的示范网站是bato.to,一个资源比较全,而且可以大陆直连的网站
4 |
5 | ## 新建站点
6 |
7 | 进入香色闺阁软件,点击左面的站点管理,点击更多,选择新建站点
8 |
9 | 
10 |
11 | 这里我已经把基础内容填写完成了
12 |
13 | 大部分选项的含义和作用都是一目了然的,这里只挑几个重点讲一下
14 |
15 | “权重”:该站点在列表中排列的先后顺序,最大值9999,不过好几个源作者都喜欢标9999,而且xbs还加密(说的就是你益达源),总体上没什么用,你编辑站点的时候可以直接顶置,方便反复修改
16 |
17 | “httpheaders”:cookie装里面,有些站点可能要登入才能查看某些资源,cookie的获取方式可以直接百度
18 |
19 | 一个示例:
20 |
21 | ~~~json
22 | {"Cookie":"XXX","User-Agent":"Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/96.0.4664.110 Safari\/537.36"}
23 | ~~~
24 |
25 | ## 常用配置部分
26 |
27 | ### 书籍搜索
28 |
29 | 
30 |
31 | 进入你的目标网站,搜索某个很常见的关键词,保证有多页结果,然后翻到比如第4页,记住上面的连接格式
32 |
33 | ~~~python
34 | https://bato.to/search?word=game&page=4
35 | 修改为下面这种格式:
36 | https://bato.to/search?word=%@keyWord&page=%@pageIndex
37 | ~~~
38 |
39 | 
40 |
41 | 响应规则里面按照格式填写,具体的div,class之类的通过F12打开目标网页源文件查看
42 |
43 | 
44 |
45 | #### 格式很简单
46 |
47 | ~~~txt
48 | // 用于定位类型
49 | / 用于表示下级关系
50 | () 用于括取,可以用(div[@id='xxx'])[3]表示并列的id为xxx的div格式的第四个(下标从零开始
51 | div, img 等对应
,
![]()
类型
52 | @ 用来定位class或者id
53 |
里面的src用@src获取
54 | ~~~
55 |
56 | “更多配置”这一块,在制作小说源的时候要调一下编码为中文编码,我们这里是漫画,不用管文本编码
57 |
58 | ### 书籍详情
59 |
60 | 
61 |
62 | 详情这一块,接触文本会比较多一点,可能需要借助js格式化一些段落,或去除一些无用标记
63 |
64 | 这里举个例子,可以参考一下(去除多余的网页br格式)
65 |
66 | ~~~python
67 | //div[@id='limit-height-body-summary']/div[@class='limit-html'] || @js:
68 | let reg = new RegExp('
', 'g')
69 | return result.replace(reg, '')
70 | ~~~
71 |
72 | ### 章节列表
73 |
74 | 
75 |
76 | 这里的“下一级界面地址”要注意,可能会有坑
77 |
78 | 我这里的bato.to网站就遇到坑了
79 |
80 | 
81 |
82 | bato.to网站的章节链接不是完整URL,而是相对网站主域名的相对路径,直接使用就会 “ URL错误,没有URL编码? “ 这样报错
83 |
84 | 手动调整一下,保证是完整的URL传出:
85 |
86 | ~~~python
87 | //a[@class='visited chapt']/@href || @js:
88 | let url = 'http://bato.to' +result;
89 | return url;
90 | ~~~
91 |
92 | ### 章节内容
93 |
94 | 章节内容就是我们最关键的漫画图片部分
95 |
96 | 
97 |
98 | 使用“蓝色框框”中的元素检查工具,点击“绿色宽宽”中的也就是漫画图片部分,然后下方开发者工具就会跳转出来相应的源码部分
99 |
100 | 我们关注两个“红色框框”中的内容,src是我们漫画图片的直接地址,class用来定位这个部分,辅助我们得到src
101 |
102 | 
103 |
104 | **这个网站还有个坑,漫画图片加载是js动态加载,直接爬取网页得不到图片**
105 |
106 | 
107 |
108 | 这里请求信息我们要加上webView
109 |
110 | (这类js加载的网站第一次打开漫画会比较慢,要加载完全部资源才会在软件上显示出页码)
111 |
112 | ~~~python
113 | 请求信息:
114 | @js:
115 | return {'url':result, 'webView':""};
116 | ~~~
117 |
118 | 之后正文部分还是一样的
119 |
120 | ~~~python
121 | 正文:
122 | //img[@class='page-img']/@src
123 | ~~~
124 |
125 |
126 |
127 | ### 书籍分类
128 |
129 | 整体还是大同小异,不过这一部分要手动配置的内容比较多,我就直接上截图和代码了
130 |
131 | 
132 |
133 | ~~~python
134 | 请求信息:
135 | @js:
136 | return 'https://bato.to/browse?genres=' + params.filters.genre1 + ',' + params.filters.genre2 + ',' + params.filters.genre3 + ',' + params.filters.genre4 + '&langs=' + params.filters.translated + '&origs=' + params.filters.original + '&release=' + params.filters.release + '&chapters=' + params.filters.chapters + '&sort=' + params.filters.sort + '&page=' + params.pageIndex;
137 |
138 | 更多配置-moreKeys:(全是标签)
139 | {"pageSize":60,"requestFilters":[{"items":[{"value":"","title":"All"},{"value":"artbook","title":"Artbook"},{"value":"cartoon","title":"Cartoon"},{"value":"comic","title":"Comic"},{"value":"doujinshi","title":"Doujinshi"}
140 | 。。。。。。
141 | {"value":"zombies","title":"Zombies"}],"key":"genre4"},{"items":[{"title":"All","value":""},{"title":"ar","value":"ar"},{"title":"en","value":"en"},{"title":"es","value":"es"},{"title":"pt","value":"pt"},{"title":"it","value":"it"},{"title":"pl","value":"pl"},{"title":"id","value":"id"},
142 | 。。。。。。
143 | {"title":"Pending","value":"pending"},{"title":"Ongoing","value":"ongoing"},{"title":"Completed","value":"completed"},{"title":"Hiatus","value":"hiatus"},{"value":"50","title":"50+"},{"value":"10","title":"10+"},{"value":"1","title":"1+"}],"key":"chapters"},{"items":
144 | 。。。。。。
145 | {"value":"views_w.za","title":"7days"},{"value":"views_d.za","title":"24hours"},{"value":"views_h.za","title":"60minutes"}],"key":"sort"}]}
146 | ~~~
147 |
148 | ## 更多配置
149 |
150 | 比如书单啊,广场啊,热词啥的,因为不是必须品,我这里就不继续写教程了
151 |
152 | 想做的话和上面的例子都是大同小异,按照格式制作即可
153 |
154 | ## Bato.to.xbs
155 |
156 | 还有不懂的地方可以下载这个样例xbs
157 |
158 | [xiangseguige/书源 at main · UFOAlastor/xiangseguige (github.com)](https://github.com/UFOAlastor/xiangseguige/tree/main/书源)
159 |
160 |
--------------------------------------------------------------------------------
/书源/Bato.To.xbs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UFOAlastor/xiangseguige/775a70a0858da9c92f8416dc88f6555665eb0217/书源/Bato.To.xbs
--------------------------------------------------------------------------------