PT-Plugin-Plus
PT-Plugin-Plus copied to clipboard
HDChina站点无法正常获取种子优惠信息
您的功能请求是否与问题有关? 请描述一下。
如图:
该种子实际上是有Free Tag的,但是扩展内并未显示
描述你想要的解决方案
本来以为只是没显示,功能都现成的,直接自己实现PR掉算了
实施过程中发现了和其他站点不太一样的地方:
- 该站点的种子列表页的原始DOM中并没有直接返回每一个种子的优惠信息
- 优惠信息通过种子列表页中的一段JS以AJAX的方式异步获取
- 最终导致即便
config.json
中描述了各类torrentTagSelectors后,也无法在扩展中正常显示Tag(因为列表页的原始DOM中本来就没有嘛
获取优惠信息的Script
<script>jQuery(function() {
const torrents = jQuery('span.sp_state_placeholder').map(function() {
return this.id;
}).toArray();
jQuery.post('ajax_promotion.php', {'ids': torrents, 'csrf': get_csrf()},
function(response) {
if(response.status === 200) {
for (const [key, value] of Object.entries(response.message)) {
jQuery('span#' + key + '.sp_state_placeholder').replaceWith('<p>' + value['sp_state'] + '</p>' + value['timeout']);
}
console.log('优惠状态更新完毕');
}
}
);
});</script>
Request
HTTP Method: POST
Host: hdchina.org
Filename: /ajax_promotion.php
parameters: {
ids: [], // 要获取哪些种子的优惠信息,数组
csrf: '' // CSRF Token
}
Response
status: 200 //status code
message: {
537417: {
sp_state: "", // 为空就是莫得状态
timeout: "" // 同上
},
538366: {
sp_state: "<img class=\"pro_free\" src=\"pic/trans.gif\" alt=\"Free\" onmouseover=\"domTT_activate(this, event, 'content', '<b><font class="free">免费</font></b> 剩余时间:<b><span title="2021-10-08 15:57:23">1时28分</span></b>', 'trail', false, 'delay',500,'lifetime',3000,'fade','both','styleClass','niceTitle', 'fadeMax',87, 'maxWidth', 300);\" />", // 要append进DOM的在这
timeout: "<span title=\"2021-10-08 15:57:23\">1时28分</span>" // 鼠标Hover至Tag上时显示的内容
}
}
描述您考虑过的替代方案
如果自己获取种子ID再调接口获取优惠信息不是不可行,但感觉有点累。扩展如果可以拿到执行完JS后的DOM就可以正常解析了。 因为对扩展的解析实现过程并不了解,因此不知道是否有更优的处理方法。
其他附加信息
扩展如果可以拿到执行完JS后的DOM就可以正常解析了。
不现实,因为实际拿到的只是html文件,并不会在上面执行JS。
所以只能自己获取id再调接口获取扩展信息。
我添加到next分支吧,在当前进行实现过于麻烦了。
扩展如果可以拿到执行完JS后的DOM就可以正常解析了。
不现实,因为实际拿到的只是html文件,并不会在上面执行JS。 所以只能自己获取id再调接口获取扩展信息。我添加到next分支吧,在当前进行实现过于麻烦了。
了解,到时如果实现了相关的基础方法,我再来PR,目前的config方式我没找到什么门路,先放弃了。
非常感谢你们的无私奉献 :heart:
改下这个应该就行? ~~不确定~~
@sdjnmxd
https://github.com/pt-plugins/PT-Plugin-Plus/blob/24483d0cae4ec91d717e28283e150348b5a1d33a/resource/schemas/NexusPHP/getSearchResult.js#L184-L210