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();

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
