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

编程知识 更新时间:2023-04-04 10:16:06

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中文网,转载请注明出处,感谢您的尊重!

更多推荐

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

本文发布于:2023-04-04 10:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/4f86058af41c30684cf8e238fa277d9e.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:磁力   链接   打包下载

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 42086文章数
  • 14阅读数
  • 0评论数