磁力链接 php_磁力链接打包下载

keyWord=$keyWord;

$this->saveFile=$saveFile;

$this->minSize=$minSize;

$this->page=$pageRange[0];

$this->maxPage=$pageRange[1];

}

public function run(){

while($this->flag && $this->maxPage>$this->page){

$this->timestamp=$this->microtimeFloat();

$this->_execute();

$this->page++;

$this->_notice();

}

}

/**

* 执行

*/

protected function _execute(){

$this->_getUrl();

$this->_getHtmlPage();

$this->_parseHtml();

if($this->_currentMagnetCount){//当有磁力链接时保存

$this->_save();

}

}

public function microtimeFloat(){

list($usec, $sec) = explode(" ", microtime());

return sprintf('%01.2f',(float)$usec + (float)$sec);

}

/**

* 通知

*/

protected function _notice(){

$currentTime = $this->microtimeFloat();

$useTime =sprintf('%01.2f', $currentTime-$this->timestamp);

$this->timestamp = $currentTime;

echo '第'.$this->page.'页存储了'.$this->_currentMagnetCount.'个磁力链接,耗时'.$useTime."秒\r\n";

if(!($this->flag && $this->maxPage>$this->page)){

echo '总共存储了'.$this->_magnetCount.'个磁力链接'."\r\n";

}

}

/**

* 设置url

*/

protected function _getUrl(){

$this->_url = $this->host.'search?q='.rawurlencode($this->keyWord).'&p='.$this->page;

}

/**

* 获得html文件内容

*/

protected function _getHtmlPage(){

$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_TIMEOUT,$this->timeout);

curl_setopt($ch, CURLOPT_URL, $this->_url);

curl_setopt($ch, CURLOPT_SSLVERSION,3);

$result = curl_exec($ch);

if($result === false){

//echo 'Curl error: '. curl_errno($ch) .' : '. curl_error($ch);

$opts = array(

'https'=>array(

'method'=>"GET",

'timeout'=>$this->timeout,//单位秒

)

);

$context = stream_context_create($opts);

$this->_html = @file_get_contents($this->_url,false,$context);

}else{

$this->_html = $result;

}

curl_close($ch);

}

/**

* 抓取磁力链接

*/

protected function _parseHtml(){

preg_match_all('/href="(magnet\:\?xt=urn\:btih\:.+?)"/',$this->_html,$magnet);

preg_match_all('/attr_val">(\d+?\.?\d*? [G|M|K]B)/',$this->_html,$size);

if(empty($size[1])){

$this->flag=false;//当获取磁力链接时不到时,停止翻页

}

foreach($size[1] as $key=>$val){

if($this->_compareSize($val)){

$this->_magnet[]=$magnet[1][$key];

}

}

$this->_currentMagnetCount = count($this->_magnet);

$this->_magnetCount += count($this->_magnet);

}

/**

* 比较磁力链接文件的大小

*/

protected function _compareSize($size){

$number = substr($size,0,strpos($size,' '));

$unit = substr($size,strpos($size,' ')+6);

$n='';

switch($unit){

case 'GB':

$n=1;

break;

case 'MB':

$n=1024;

break;

case 'KB':

$n=1048576;

break;

default :

$n=false;

}

if($n===false){

try {

throw new Exception("文件大小单位识别失败\n");

} catch (Exception $e) {

echo $e->getMessage();

return false;

}

}

return ( $this->minSize < ($number/$n) );

}

/**

* 把磁力链接保存到文件中

*/

protected function _save(){

$data = '';

foreach($this->_magnet as $val){

$data .= $val."\n";

$this->magnetNum++;

if(0==$this->magnetNum%15)

$data.="\n\n";

}

file_put_contents($this->saveFile,$data,FILE_APPEND);

$this->_magnet=array();

}

}

//示例

$s = new Magnet('LOL','magnet.log',2,array(0,10));

$s->run();

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值