这篇文章距离最后更新已过59 天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
声明:纸鸢花的花语所提供的任何资源或素材代码,仅供学习交流和技术分析,严禁用于任何商业牟利行为(包括但不限于引流用户加入社群,利用免费学习素材牟利贩卖,冒充原作者盗用引流增加用户数…),出现任何后果自行承担,资源的分享者没有任何关系和责任。
基于Cloudflare Worker的强化磁力搜索工具,纸鸢磁力只负责请求接口,数据均来自于网络上现有的磁力搜索引擎;搜索时支持直接查看预览图,用户可自定义规则集,添加自己的磁力搜索网站,自定义规则教程在文档结尾。
工具素材包获取:关注微信公众号【纸鸢花的小屋】,回复关键字【纸鸢磁力】将自动发送工具和教程链接。
一、界面样式展示以及功能介绍:
『预览磁力资源』模块优化:搜索出的结果可查看预览图和文件信息,用户也能点击中间的收藏按钮,将磁力项目收藏进『我的收藏夹』模块备用。
『磁力规则配置』模块优化:工具已支持自定义规则导入,不会自定义也可以选择云导入默认规则,点击规则名称即可切换[启用/禁用状态],还支持提前选择好搜索时需要的排序方式。
『我的收藏夹』模块上线:用户在浏览磁力时可收藏磁力链接,在『我的收藏』功能菜单下即可查看历史收藏。
二、自定义磁力规则教程:
磁力引擎底层原理:工具采用类似【HTML DOM querySelectorAll() 方法】来实现网页标签的定位与文本获取,接下来开发者会介绍规则模版中各值的含义,以及如何正确制作自定义规则。
// 规则模版
{
"name": "海盗湾",
"url": "https://thepiratebay10.xyz",
"now_sorted":0,
"sort":[
{
"name":"All",
"url":"/search/%PaperSearch%/%PaperPage%/99/0"
},
{
"name":"Audio",
"url":"/search/%PaperSearch%/%PaperPage%/99/100"
},
{
"name":"Video",
"url":"/search/%PaperSearch%/%PaperPage%/99/200"
},
{
"name":"Games",
"url":"/search/%PaperSearch%/%PaperPage%/99/400"
}
],
"rule": {
"integration":true,
"title": "td:nth-child(2)",
"parent":"#searchResult > tbody > tr",
"magnet_a": {
"type": "a",
"rule": "td:nth-child(4) > nobr > a"
},
"detail": ["td.vertTh","td:nth-child(3)","td:nth-child(5)"]
},
"method": "GET",
"page": 1,
"type": 1
}
// 附带注释版
{
"name": "海盗湾",
"url": "https://thepiratebay10.xyz",// 磁力引擎的真正请求并获取到磁力数据的网址,尾部无需带/
"now_sorted":0,// 初始选择的排序方式,基于sort数组
"sort":[
{
"name":"All",// 排序方式的名称
"url":"/search/%PaperSearch%/%PaperPage%/99/0"// 根据某种排序方式下引擎请求的网址,%PaperSearch%为搜索关键字的占位符,%PaperPage%为页号的占位符,真正搜索时会被替换掉。
},
{
"name":"Audio",
"url":"/search/%PaperSearch%/%PaperPage%/99/100"
}
],
"rule": {
"integration":true|false,// 根据上述两种网站情况选择。
"title": "td:nth-child(2)",// 基于parent位置定位,即地址=parent地址+自身地址
"parent":"#searchResult > tbody > tr",// parent属性为绝对定位DOM地址
"link_a":"",// 基于parent位置定位,即地址=parent地址+自身地址
"magnet_a": {
"type": "a"|"text"|"XX",// 获取值的三种方式,即磁力链接存在于a标签的href中、文本标签的innerText中、标签的XX属性值中,根据情况选择。
"rule": "td:nth-child(4) > nobr > a"// integration=true:一体化页面就采用基于【parent标签】的相对定位DOM地址;integration=false:不是一体化页面就采用绝对定位DOM地址。
},
"detail": ["td.vertTh","td:nth-child(3)","td:nth-child(5)"]// 基于parent位置定位,即地址=parent地址+自身地址,由于描述信息可能存在多个标签,所以采用数组形式。
},
"enable":true|false,// 是否默认启用
"method": "GET",// 请求方式,现只支持GET请求页面
"page": 1,// 初始的页号
"type": 1// 默认即可
}
『parent值』根据网页源码,类似querySelectorAll() 来定位每条磁力结果的所属容器(这边暂时称为父标签);
"rule": {
"parent":"#searchResult > tbody > tr",// parent属性为绝对定位DOM地址
}
『title、link_a、detail值』在上面定位到的『parent父标签』基础上进行查找,进一步定位每个磁力的标题、详情页链接、资源描述,以上三种的属性值只需填写基于『parent父标签』的相对定位地址;为了方便快捷,我们可以利用浏览器的右键检查功能,快速获取到标签的DOM定位(注:当integration=true时,无需填写『link_a值』);
"rule": {
"integration":false,
"title": "td:nth-child(2)",// 基于parent位置定位,即地址=parent地址+自身地址
"parent":"#searchResult > tbody > tr",
"link_a":"td > a",// 基于parent位置定位,即地址=parent地址+自身地址
"detail": ["td.vertTh","td:nth-child(3)","td:nth-child(5)"]// 基于parent位置定位,即地址=parent地址+自身地址,由于描述信息可能存在多个标签,所以采用数组形式。
}
"rule": {
"integration":true,
"title": "td:nth-child(2)",// 基于parent位置定位,即地址=parent地址+自身地址
"parent":"#searchResult > tbody > tr",
"detail": ["td.vertTh","td:nth-child(3)","td:nth-child(5)"]// 基于parent位置定位,即地址=parent地址+自身地址,由于描述信息可能存在多个标签,所以采用数组形式。
}
『magnet_a、integration值』由于磁力网站结构不同,规则会有所不同,第一种是网站在搜索时不会显示磁力链接的情况,磁力链接存在于另外的详情页里;第二种是网站在搜索时就会显示磁力链接,无需跳转详情页。
『integration=false』第一种情况,『magnet_a值』需要绝对定位DOM地址,因为磁力链接存在于新的详情页中,而不是搜索页,无法基于搜索页的『parent父标签』来定位。
"rule": {
"integration":false,
"parent":"#searchResult > tbody > tr",
"magnet_a": {
"type": "a"|"text"|"XX",// 获取值的三种方式,即磁力链接存在于a标签的href中、文本标签的innerText中、标签的XX属性值中,根据情况选择。
"rule": "#Result > tbody > tr > td:nth-child(4) > nobr > a"// 不是一体化页面就采用绝对定位DOM地址。
}
}
『integration=true』第二种情况,『magnet_a值』需要相对定位DOM地址,与『title、detail、link_a值』原理相同,都是基于『parent父标签』定位的。因为不需要跳转详情页,所以『integration=true』情况下无需『link_a值』。
"rule": {
"integration":true,
"parent":"#searchResult > tbody > tr",
"magnet_a": {
"type": "a"|"text"|"XX",// 获取值的三种方式,即磁力链接存在于a标签的href中、文本标签的innerText中、标签的XX属性值中,根据情况选择。
"rule": "td:nth-child(4) > nobr > a"// 一体化页面就采用基于【parent标签】的相对定位DOM地址。
}
}
『url值』必须是真正返回数据的网页网址;由于网站可能存在多种排序方式,『sort值』在不同排序下的网页地址会有所不同。
"url": "https://thepiratebay10.xyz",// 磁力引擎的真正请求并获取到磁力数据的网址,尾部无需带/
"sort":[
{
"name":"All",// 排序方式的名称
"url":"/search/%PaperSearch%/%PaperPage%/99/0"// 根据某种排序方式下引擎请求的网址,%PaperSearch%为搜索关键字的占位符,%PaperPage%为页号的占位符,真正搜索时会被替换掉。
},
{
"name":"Audio",
"url":"/search/%PaperSearch%/%PaperPage%/99/100"
}
]
『其他值填写说明』
{
"name": "海盗湾",
"now_sorted":0,// 初始选择的排序方式,基于sort数组
"sort":[
{
"name":"All",
"url":"/search/%PaperSearch%/%PaperPage%/99/0"
}
],
"enable":true|false,// 是否默认启用
"method": "GET",// 请求方式,现只支持GET请求页面
"page": 1,// 初始的页号
"type": 1// 默认即可
}
开发者留言:PaperkiteMagnet搜索工具的磁搜模块已经基本完成,但是引擎的兼容性和稳定性还不够完善,而且存在一些底层BUG和样式UI问题,十分欢迎小伙伴反馈问题和建议;默认的云规则由于是靠开发者一人编写,所以可能并不完全符合所有小伙伴的使用习惯,同样欢迎小伙伴在【纸鸢的博客】评论区下讨论和发表自定义的引擎规则,如果需要自用的磁力网站规则编写求助,可以在博客评论区下留言,开发者和其他大佬也能帮助小伙伴成功导入自定义的磁力规则。【注:带有人机验证的网站现在还不支持获取到搜索结果】
能否添加一下BT1207搜索引擎
我也想说来着ᖰ˃̶ ꇴ ˂̶ᖳ
这个引擎有人机验证,暂时无法收录,没有人机验证的直搜网站都能制作规则。
博主能否添加一下nyaa搜索引擎,一个动漫磁力的网站。
sukebei可以用哦。
博主能增加一个功能吗, 导入一份要找的电影的名字的名单, 然后查询每个名字的结果, 找到最好的匹配磁力(可以写一个屏蔽词规则,把那些带水印的资源排除), 最后把匹配好的磁力导出来
感谢小伙伴的建议,现已追加智能匹配功能,会优先展示最佳磁力匹配结果,后续功能正在慢慢优化。
现在云规则怎么导入不了了
使用已恢复。