Home > php教程 > PHP源码 > body text

磁力链接打包下载

PHP中文网
Release: 2016-05-23 16:38:42
Original
17103 people have browsed it


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 = &#39;&#39;;
		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(&#39;LOL&#39;,&#39;magnet.log&#39;,2,array(0,10));
$s->run();
Copy after login

                   

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template