2010-07-15 57 views
3

由於服務器正在使用gzip encription,因此在下載時出現錯誤洪流。使用php下載洪流形式torcache.com?

<? 

$path_parts = pathinfo("http://torcache.com/torrent/56A250DC4CD64F6C304631897F1108D413FE76C7.torrent"); 
$name= $path_parts['basename']; 
$d="torrent/".$name; 
if(!copy($f,$d)) 
{ 
echo "not copied"; 
} 
else 
{ 
echo "copied"; 
} 

?> 

然後我用這則還其結果是無效的洪流

<?php 

/* Tutorial by AwesomePHP.com -> www.AwesomePHP.com */ 
/* Function: download remote file */ 
/* Parameters: $url -> to download | $dir -> where to store file | 
    $file_name -> store file as this name - if null, use default*/ 

/* $path_parts = pathinfo("http://torcache.com/torrent/56A250DC4CD64F6C304631897F1108D413FE76C7.torrent"); 
$name= $path_parts['basename']; 
$d="torrent/".$name; */ 

$f="http://torcache.com/torrent/56A250DC4CD64F6C304631897F1108D413FE76C7.torrent"; 

downloadRemoteFile($f,"torrent/",$file_name = NULL); 

function downloadRemoteFile($url,$dir,$file_name = NULL){ 
    if($file_name == NULL){ $file_name = basename($url);} 
    $url_stuff = parse_url($url); 
    $port = isset($url_stuff['port']) ? $url_stuff['port'] : 80; 

    $fp = fsockopen($url_stuff['host'], $port); 
    if(!$fp){ return false;} 

    $query = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n"; 
    $query .= 'Host: ' . $url_stuff['host']; 
    $query .= "\n\n"; 

    fwrite($fp, $query); 

    while ($tmp = fread($fp, 8192)) { 
     $buffer .= $tmp; 
    } 

    preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts); 
    $file = substr($buffer, - $parts[1]); 
    $file_binary=($file); 
    if($file_name == NULL){ 
     $temp = explode(".",$url); 
     $file_name = $temp[count($temp)-1]; 
    } 
    $file_open = fopen($dir . "/" . $file_name,'w'); 

    if(!$file_open){ return false;} 
    fwrite($file_open,$file_binary); 
    fclose($file_open); 
    return true; 
} 
?> 

蟒蛇

import urllib2, httplib 
httplib.HTTPConnection.debuglevel = 1 
request = urllib2.Request('http://torcache.com/torrent/4F78CA71DD8C308F18426F845AFBFF4481633B11.torrent') 
request.add_header('Accept-encoding', 'gzip') 
opener = urllib2.build_opener() 
f = opener.open(request) 
compresseddata = f.read() 

import StringIO 
compressedstream = StringIO.StringIO(compresseddata) 
import gzip 
gzipper = gzip.GzipFile(fileobj=compressedstream) 
data = gzipper.read() 
print data 
filename = "633B11.torrent" 
FILE = open(filename,"w") 
FILE.write(data) 

然後我用python的室內用gzip壓縮還是我得到能無效的torrent文件anyboy幫助我解決php中的gzip問題,以使用gzip e從torrent緩存服務器下載torrent ncoding

+0

Gzip不是*加密*算法,只是*壓縮*算法。 – deceze 2010-07-15 03:58:30

回答

3

我遇到同樣的問題,解決方案是雅只是在保存之前解碼洪流it.simplezz

function gzdecode($d){ 
$f=ord(substr($d,3,1)); 
$h=10;$e=0; 
if($f&4){ 
    $e=unpack('v',substr($d,10,2)); 
    $e=$e[1];$h+=2+$e; 
} 
if($f&8){ 
    $h=strpos($d,chr(0),$h)+1; 
} 
if($f&16){ 
    $h=strpos($d,chr(0),$h)+1; 
} 
if($f&2){ 
    $h+=2; 
} 
$u = gzinflate(substr($d,$h)); 
if($u===FALSE){ 
    $u=$d; 
} 
return $u;} 


$torrent = file_get_contents('http://URL_PATH_TO_TORRENT.torrent',FILE_BINARY); 


$torrent = gzdecode($torrent); 
file_put_contents('./torrentname.torrent',$torrent); 
+0

我試過你的代碼,但我得到(!)致命錯誤:無法在行22上重新聲明gzdecode(),返回$ u;} – AMB 2013-10-18 20:45:13

1

我花了很多時間來了解爲什麼我不能用剛纔下載的種子文件蟒蛇。用戶代理必須是Mozilla :)

import requests 

url = r"https://torcache.net/torrent/6175754C9A5502BA085F8D64F31C8158AB0BE1C5.torrent?title=[kat.cr]paper.towns.2015.1080p.brrip.x264.yify" 

s = requests.Session() 

s.headers.update({"User-Agent": "Mozilla/4.0"}) 

answer = s.get(url) 

torrent_data = answer.content 

print torrent_data[:100]