Home php教程 PHP源码 磁力链接打包下载

磁力链接打包下载

May 23, 2016 pm 04:38 PM


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

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

                   

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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)