找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 13423|回复: 17

手机通过网页下载BT种子到路由器优盘 (Transmission的一个小方案 )

[复制链接]
发表于 2017-7-22 23:52 | 显示全部楼层 |阅读模式
本帖最后由 Missde 于 2017-7-23 13:23 编辑

首先感谢H大神的固件,集成了那么好用的插件。我用的是newifi,安装了H大神的固件 + 优盘当下载盘,
以前用路由器集成的迅雷远程,下载的很舒坦,但是迅雷不让舒坦了。
于是开始学习 Transmission 插件的是使用,感觉很不错的~~

----------------------于是就有了这个小想法:
1.通过web环境的PHP,抓取资源网站的种子页面,
2.就点击【导入种子】,程序就把种子存进watch这个文件中,Transmission 也就会自动下载了。


Iphone上面不能使用 transdroid,
借助这个方法,让Iphone通过网页也下载种子到Transmission。安卓手机可绕行~~~

下图,就是2楼的代码所能实现的。





昨天临睡前,花了2个小时把这个想法的代码做了个例子,今天出去玩,无聊的适合,用手机打开这个页面,下载了几个BT,感觉还是很方便。



----------------------这个方案需要开启了2个插件:
1.Transmission
2.Web环境


【本例只做技术上的抛砖引玉,不探究抓取别人种子是否道德等等、更不制作别家种子站的要求】
PHP 代码在2楼。











本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2017-7-22 23:53 | 显示全部楼层
本帖最后由 Missde 于 2017-7-23 13:19 编辑

代码1:
先抓取对方的HTML,然后分析页面中的种子

  1. <?php
  2. date_default_timezone_set('Asia/Shanghai');
  3. header('Content-type: text/html; charset=utf-8');
  4. define('CACHE', "cache/");
  5. if(!file_exists(CACHE))mkdir(CACHE,0777);
  6. echo '
  7. <!doctype html>
  8. <html>
  9. <head>
  10. <meta charset="utf-8">
  11. <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  12. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  13. <meta name="apple-mobile-web-app-capable" content="yes">
  14. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  15. <meta name="format-detection" content="telephone=no">
  16. <style type="text/css">
  17. body{background:#f9f9f9;}
  18. body,ul,li{margin:0;padding:0;list-style-type:none;}
  19. li{position:relative;padding:.7em 15px;border-bottom:1px solid #ccc;background-image:linear-gradient(#fff,#eee)}
  20. li a{font-size:1rem;color:#2f3e46;text-decoration:none;}
  21. li:after{position:absolute;right:3px;top:1rem;font-size:1rem;content:">";display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;background:#222;color:#ddd;border-radius:50%;}
  22. div{padding:20px;background-image:linear-gradient(#f9f9f9,#eee);word-wrap:break-word ;}
  23. </style>
  24. </head>
  25. <body>
  26. ';

  27. btbtt();


  28. function btbtt(){
  29.         $domain="http://www.btbtt.net/";
  30.         if($torrent=get("torrent")){
  31.                 $url=$domain.$torrent;
  32.                 $html=read($url);
  33.                 $name=md5($url).'.torrent';
  34.                 if(stripos($_SERVER['HTTP_HOST'],':81')!==false)$folder='/mnt/transmission/watch/';
  35.                 else $folder='';
  36.                 file_put_contents($folder.$name,$html);
  37.                 echo '<center style="color:#f00"><br><br> 导入种子 ok </center>';
  38.                 exit();

  39.         }elseif($page=get("page")){
  40.                 $html=read($domain.$page);
  41.                 $A=dom($html);

  42.                 echo "<div>网址:<a href='".$domain.$page."' target='_blank'>".$domain.$page."</a></div><div>内容:";
  43.                 //主题内容提取
  44.                 $html=substring($html,'post_td','</td>');
  45.                 $html=preg_replace("/<br.[^\>]*>/s","\n",$html);
  46.                 $html=str_replace(array("<p>","\r",'" valign="top">'),"\n",$html);
  47.                 $html=strip_tags($html,'<a>');
  48.                 $html=preg_replace("/\n\s+|BAIDU_CLB_SLOT_ID = "\d+";|\-\-\>|\#1楼/s","\n",$html);
  49.                 $html=preg_replace("/\n+/s","<br>",$html);
  50.                 $html=str_replace("网盘下载:","<font color=red>网盘下载:</font>",$html);
  51.                 echo $html."</div>";

  52.                 foreach($A as $r){
  53.                         $url=$r['url'];
  54.                         if(stripos($url,'attach-dialog')!==false){
  55.                                 $downurl=str_replace("dialog",'download',$url);
  56.                                 $file=CACHE.md5(strtolower($domain.$downurl));
  57.                                 $tishi=file_exists($file)?'你已经导入过,再次':'';


  58.                                 echo "<li><font color=red>".$tishi."点击这里导入种子:</font><a href='?torrent=".$downurl."'>".$r['html']."</a>";
  59.                         }
  60.                 }

  61.                 exit();
  62.         }


  63.         //列表页
  64.         $page=get("pid");
  65.         if($page<1)$page=1;
  66.         $html=read($domain."forum-index-fid-951-page-".$page.".htm",36000);
  67.         $A=dom($html);
  68.         echo "<ul>";
  69.         foreach($A as $r){
  70.                 $url=$r['url'];
  71.                 if(stripos($url,'thread-index-fid-')===false
  72.                         || stripos($url,'fid-2-')!==false
  73.                         || strlen($r['html'])<10
  74.                         || stripos($r['css'],'thread-digest')!==false
  75.                 )continue;
  76.                 echo '<li><a href="?page='.$url.'">'.$r['title']."</a></li>";
  77.         }
  78.         echo "</ul><div>";
  79.         for($i=1;$i<=10;$i++)echo "<a href='?pid=".$i."'>P".$i."</a> - ";
  80.         echo "</div>";
  81. }

  82. function curl($url){
  83.         $curl = curl_init();
  84.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  85.         curl_setopt($curl, CURLOPT_URL, $url);
  86.         curl_setopt($curl, CURLOPT_HEADER, 0);
  87.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  88.         $data = curl_exec($curl);
  89.         curl_close($curl);

  90.         if(strlen($data)<3000)die("cURL - Error - ".$url);
  91.         return $data;
  92. }

  93. function read($url,$timeout=8640000){
  94.         $file=CACHE.md5(strtolower($url));
  95.         if(file_exists($file) && $timeout){
  96.                 if((time()-filemtime($file))<$timeout){
  97.                         return file_get_contents($file);
  98.                         exit();
  99.                 }
  100.         }
  101.         $html=curl($url);
  102.         file_put_contents($file,$html);
  103.         return $html;
  104. }
  105. function dom($html=''){
  106.         if(!$html)die("DOM Error");
  107.         $dom = new DOMdocument();
  108.         @$dom->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>'.$html);
  109.         $A=$dom->getElementsByTagName("a");
  110.         $lis=array();
  111.         foreach($A as $a){
  112.                 $lis[]=array(
  113.                         'url'=>$a->getAttribute("href"),
  114.                         'title'=>$a->getAttribute("title"),
  115.                         'html'=>$a->nodeValue,
  116.                         'css'=>$a->getAttribute("class"),
  117.                 );
  118.         }
  119.         return $lis;
  120. }
  121. function substring($msg,$a,$b,$c=0){
  122.         $i=$a==""?0:intval(stripos($msg,$a));
  123.         if($i<1)return "";
  124.         if($c<1)$i+=strlen($a);
  125.         $msg=substr($msg,$i);

  126.         $j=$b==""?strlen($msg):stripos($msg,$b);
  127.         $msg=substr($msg,0,$j);
  128.         return $msg;
  129. }
  130. function get($k){
  131.         $str=isset($_GET[$k])?$_GET[$k]:"";
  132.         if(stripos($k,'id')!==false)$str=intval($str);
  133.         $str=str_replace(array('"',"'",'?','<','>',"\r","\n","\"),'',$str);
  134.         return trim($str);
  135. }
复制代码

将上面代码保存成 utf-8格式的文件,比如bt.php 放在你的路由器的web php 环境中,访问http://192.168.123.1/bt.php就可以通过手机下载这家网站的BT种子。


代码2:
如果你不像抓取种子网站的HTML,而是去他们网站浏览,复制种子的URL,
页面可以改成一个表单,抓取对方的http://*****.torrent ,并保存到 transmission/watch/ 更简单些。


  1. <?php
  2. date_default_timezone_set('Asia/Shanghai');
  3. header('Content-type: text/html; charset=utf-8');
  4. define('CACHE', "cache/");
  5. if(!file_exists(CACHE))mkdir(CACHE,0777);

  6. echo '
  7. <!doctype html>
  8. <html>
  9. <head>
  10. <meta charset="utf-8">
  11. <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  12. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  13. <meta name="apple-mobile-web-app-capable" content="yes">
  14. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  15. <meta name="format-detection" content="telephone=no">
  16. <style type="text/css">
  17. body{background:#f9f9f9;}
  18. body,ul,li{margin:0;padding:0;list-style-type:none;}
  19. li{position:relative;padding:.7em 15px;border-bottom:1px solid #ccc;background-image:linear-gradient(#fff,#eee)}
  20. li a{font-size:1rem;color:#2f3e46;text-decoration:none;}
  21. li:after{position:absolute;right:3px;top:1rem;font-size:1rem;content:">";display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;background:#222;color:#ddd;border-radius:50%;}
  22. div{padding:20px;background-image:linear-gradient(#f9f9f9,#eee);word-wrap:break-word ;}
  23. </style>
  24. </head>
  25. <body>
  26. <form action="?" method="get">
  27.         <input type="text" name="torrent"/>
  28.         <input type="submit" value="导入种子URL"/>

  29. </form>
  30. ';

  31. $url=@$_GET["torrent"];
  32. if(stripos($url,'http:')===0 || stripos($url,'https:')===0){
  33.         $html=read($url);
  34.         $file=md5($url).'.torrent';
  35.         if(stripos($_SERVER['HTTP_HOST'],':81')!==false)$file='/mnt/transmission/watch/'.$file;
  36.         if(file_exists($file) || file_exists($file.'.added')){
  37.                 die('种子已经在下载中,请先通过Transmission删除旧的再导入');
  38.         }else{
  39.                 file_put_contents($file,$html);
  40.                 die('导入种子 ok');
  41.         }
  42. }

  43. exit();



  44. function read($url,$timeout=8640000){
  45.         $file=CACHE.md5(strtolower($url));
  46.         if(file_exists($file) && $timeout){
  47.                 if((time()-filemtime($file))<$timeout){
  48.                         return file_get_contents($file);
  49.                         exit();
  50.                 }
  51.         }

  52.         $html=curl($url);
  53.         if($html){
  54.                 file_put_contents($file,$html);
  55.                 return $html;
  56.         }
  57.         die("抓取数据失败");
  58. }

  59. function curl($url){
  60.         $curl = curl_init();
  61.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
  62.         curl_setopt($curl, CURLOPT_URL, $url);
  63.         curl_setopt($curl, CURLOPT_HEADER, 0);
  64.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  65.         $data = curl_exec($curl);
  66.         curl_close($curl);
  67.         return $data;
  68. }
复制代码


本例写的匆忙,不求完美,抛砖引玉。





我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-22 23:59 | 显示全部楼层
我是用手机远程桌面,遥控家里台式机添加种子。

点评

放一个抓种子的程序进去,就可以关闭电脑,让路由器完成了。  详情 回复 发表于 2017-7-23 00:01
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2017-7-23 00:01 | 显示全部楼层
micyao 发表于 2017-7-22 23:59
我是用手机远程桌面,遥控家里台式机添加种子。

放一个抓种子的程序进去,就可以关闭电脑,让路由器完成了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-23 02:20 | 显示全部楼层
我都是上网找好看的电影,记下来,然后去海盗湾搜索,添加磁力链下载……
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-23 05:06 来自手机 | 显示全部楼层
transdroid
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-23 10:38 来自手机 | 显示全部楼层
用transdroid就能手机传种子了!有办法下载迅雷链接就好了

点评

网上搜索的迅雷链接地址还原。 试了几个,有点还原成了磁链接,有的还原成了http。  详情 回复 发表于 2017-7-23 21:56
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-23 15:29 | 显示全部楼层
下载很慢怎么破,100M的直接100多K下载
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-23 17:01 来自手机 | 显示全部楼层
看来还是下载宝安逸

点评

没用过下载宝。 弄了这个小代码后,不再考虑别的了。 感觉这个方式,和以前的(newifi的APP自动下载BT的方式一样。 我现在不用采集对方全部网页的方式了,而是用的2楼的代码方法2——从别的网站找到种子的下载  详情 回复 发表于 2017-7-23 18:53
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2017-7-23 18:53 | 显示全部楼层
enenenen 发表于 2017-7-23 17:01
看来还是下载宝安逸

没用过下载宝。
弄了这个小代码后,不再考虑别的了。
感觉这个方式,和以前的(newifi的APP自动下载BT的方式一样。

我现在不用采集对方全部网页的方式了,而是用的2楼的代码方法2——从别的网站找到种子的下载地址,然后导入。测试了几个网站,都可以。不过一些做了302跳转、对中文名称编码的网站,需要对curl做调整。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-23 19:13 | 显示全部楼层
下载速度呢 多少?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-23 21:21 | 显示全部楼层
我记得ios上有个transmission monitor可以直接抓取网页的磁链添加任务

点评

没搜索到这个。固件是没对天朝开放下载吧。  详情 回复 发表于 2017-7-23 21:54
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2017-7-23 21:54 | 显示全部楼层
cpaig 发表于 2017-7-23 21:21
我记得ios上有个transmission monitor可以直接抓取网页的磁链添加任务

没搜索到这个。固件是没对天朝开放下载吧。

点评

好像是被下架了  详情 回复 发表于 2017-7-30 17:12
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2017-7-23 21:56 | 显示全部楼层
725216 发表于 2017-7-23 10:38
用transdroid就能手机传种子了!有办法下载迅雷链接就好了
  1. function ThunderDecode($thunderUrl) {
  2.         $thunderPrefix="AA";
  3.         $thunderPosix="ZZ";
  4.         $thunderTitle="thunder://";
  5.         $url=substr(trim($thunderUrl),10);
  6.         $url=base64_decode($url);
  7.         $url=substr($url,2,-2);
  8.         return $url;
  9. }
复制代码


网上搜索的迅雷链接地址还原。
试了几个,有点还原成了磁链接,有的还原成了http。

点评

转换链接的没用!下不了!  详情 回复 发表于 2017-7-24 06:51
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-7-24 06:51 来自手机 | 显示全部楼层
Missde 发表于 2017-7-23 21:56
网上搜索的迅雷链接地址还原。
试了几个,有点还原成了磁链接,有的还原成了http。

转换链接的没用!下不了!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-25 21:44

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表