PT-Plugin-Plus icon indicating copy to clipboard operation
PT-Plugin-Plus copied to clipboard

HDChina站点无法正常获取种子优惠信息

Open sdjnmxd opened this issue 3 years ago • 2 comments

您的功能请求是否与问题有关? 请描述一下。

如图: 问题预览图 该种子实际上是有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',  '&lt;b&gt;&lt;font  class=&quot;free&quot;&gt;免费&lt;/font&gt;&lt;/b&gt; 剩余时间:&lt;b&gt;&lt;span  title=&quot;2021-10-08  15:57:23&quot;&gt;1时28分&lt;/span&gt;&lt;/b&gt;',  '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就可以正常解析了。 因为对扩展的解析实现过程并不了解,因此不知道是否有更优的处理方法。

其他附加信息

sdjnmxd avatar Oct 08 '21 06:10 sdjnmxd

扩展如果可以拿到执行完JS后的DOM就可以正常解析了。 不现实,因为实际拿到的只是html文件,并不会在上面执行JS。 所以只能自己获取id再调接口获取扩展信息。

我添加到next分支吧,在当前进行实现过于麻烦了。

Rhilip avatar Oct 08 '21 10:10 Rhilip

扩展如果可以拿到执行完JS后的DOM就可以正常解析了。 不现实,因为实际拿到的只是html文件,并不会在上面执行JS。 所以只能自己获取id再调接口获取扩展信息。

我添加到next分支吧,在当前进行实现过于麻烦了。

了解,到时如果实现了相关的基础方法,我再来PR,目前的config方式我没找到什么门路,先放弃了。

非常感谢你们的无私奉献 :heart:

sdjnmxd avatar Oct 08 '21 11:10 sdjnmxd

改下这个应该就行? ~~不确定~~

@sdjnmxd

https://github.com/pt-plugins/PT-Plugin-Plus/blob/24483d0cae4ec91d717e28283e150348b5a1d33a/resource/schemas/NexusPHP/getSearchResult.js#L184-L210

IITII avatar Oct 09 '23 08:10 IITII

image

IITII avatar Oct 10 '23 05:10 IITII