Code:
Beispielaufruf:
<?php
include('xrel.class.php');
$xrel = new xrel_fetch();
$infos = $xrel->get_Info($_GET['rls']);
echo '<pre>';
print_r($infos);
echo '</pre>';
?>
Beispielrückgabe:
Array( [rlsname] => Fuehrer.Ex.2002.GERMAN.720p.HDTV.x264-muhHD [cover] => http://www.xrel.to/uploaded_images/img_cover/movie12026-495e53a8.JPG [description] => Den Jugendlichen Heiko (Christian Blümel) und Tommy (Aaron Tristan Hildebrand) fällt in der DDR die Decke auf den Kopf, doch ihre naiven Versuche, dem Alltagstrott zu entkommen, enden wegen versuchter Republikflucht im Gefängnis. Dort machen sie die Bekanntschaft geschulter Neonazis, die besonders Tommy schnell in ihren Bann ziehen, während Heiko den im Gefängnis nicht ganz ungefährlichen Weg des Einzelgängers geht. Nach dem Fall der Mauer sieht man sich wieder.Nach Motiven des Szene-Aussteigers und EXIT-Mitbegründers Ingo Hasselbach entwirft Winfried Bonengel ("Beruf: Neonazi") ein packendes und realistisches Drama über ein hochbrisantes Zeitphänomen. [genre] => Drama [fsk] => 12 [laufzeit] => 107 Min.(1 Std., 47 Min.) [produktion] => Deutschland 2002 [regisseur] => Winfried Bonengel)
<?php
/** * Xrel Crawler Class * Coding by HaZe * If you use it, expand it, share it.**/
class xrel_fetch {
function PostRequest($url, $referer, $_data) { // convert variables array to string:
$data = array(); while(list($n,$v) = each($_data)){
$data[] = "$n=$v";
}
$data = implode('&', $data);
// format --> test1=a&test2=b etc.
// parse the given URL
$url = parse_url($url);
if ($url['scheme'] != 'http') {
die('Only HTTP request are supported !');
}
// extract host and path:
$host = $url['host'];
$path = $url['path'];
// open a socket connection on port 80
$fp = fsockopen($host, 80);
// send the request headers:
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
$result = '';
while(!feof($fp)) {
// receive the results of the request
$result .= fgets($fp, 128);
}
// close the socket connection:
fclose($fp);
// split the result header from the content
$result = explode("\r\n\r\n", $result, 2);
$header = isset($result[0]) ? $result[0] : '';
$content = isset($result[1]) ? $result[1] : '';
// return as array:
return array($header, $content);} function get_Info($rlsname){
//Datenarray
$data = array(
'mode' => 'rls',
'xrel_search_query' => $rlsname
);
//Infos abrufen
list($header, $content) = $this->PostRequest(
"http://www.xrel.to/search.html",
"http://www.google.de/",
$data
);
//Suchergebnisse filtern
$pattern = '!Location: (.*)\.html!isU';
$result = preg_match_all($pattern, $header, $subpattern);
$url = $subpattern[1][0].'.html';
//Suchergebnis aufrufen
$res = file_get_contents($url);
//Infoseite filtern
$pattern = '!<a href="(/movie/.*/.*\.html)"!iUm';
$result = preg_match($pattern, $res, $subpattern);
$url = 'http://www.xrel.to'.$subpattern[1];
//Infoseite aufrufen
$res = file_get_contents($url);
//Cover filtern
$pattern = '!<div id="poster" style="line-height:0;"><div>.*<img src="(.*)"!iUm';
$result = preg_match($pattern, $res, $subpattern);
$pic = 'http://www.xrel.to'.$subpattern[1];
//Beschreibung filtern
$pattern = '!<div class="article_text" style=".*">(.*)</div>!isUm';
$result = preg_match($pattern, $res, $subpattern);
//Zeilenumbrüche korrigieren
$subpattern[1] = str_replace("\n",'<br />', $subpattern[1]);
$pattern = '!<(.*)>!isUm';
$replace = '';
$descr = preg_replace($pattern, $replace, $subpattern[1]);
//Genre filtern
$pattern = '!<div class="l_left">Genre:</div>.<div class="l_right">(.+)</div>!iUm';
$result = preg_match($pattern, $res, $subpattern);
$genre = $subpattern[1];
//FSK filtern
$pattern = '!<div class="l_left">Freigegeben ab \(Jahre\):</div>.<div class="l_right">(.+)</div>!iUm';
$result = preg_match($pattern, $res, $subpattern);
$fsk = $subpattern[1];
//Laufzeit filtern
$pattern = '!<div class="l_left">Laufzeit:</div>.<div class="l_right" title="(.+)">(.+)</div>!iUm';
$result = preg_match($pattern, $res, $subpattern);
$runtime1 = $subpattern[1];
$runtime2 = $subpattern[2];
//Produktion filtern
$pattern = '!<div class="l_left">Produktion:</div>.<div class="l_right">(.+)</div>!iUm';
$result = preg_match($pattern, $res, $subpattern);
$produktion = $subpattern[1];
//Regisseur filtern
$pattern = '!Regisseur: </div>.<div class="horiz_line_dotted"></div>.<div style="line-height: 18px; padding: 3px 0 5px 0; text-align: right;">.?.<a href="/person/[0-9]+/.+.html" class="camouflagedlink">(.+)</a>!iUm';
$result = preg_match($pattern, $res, $subpattern);
$regisseur = $subpattern[1];
$return = array('rlsname' => $rlsname,
'cover' => $pic,
'description' => utf8_decode($descr),
'genre' => $genre,
'fsk' => $fsk,
'laufzeit' => $runtime1 .'('.$runtime2.')',
'produktion' => $produktion,
'regisseur' => $regisseur
);
return $return; }}?>
Keine Ahnung in wieweit das noch funktioniert. Wenn nicht so mehr funktioniert, evtl. kann ja dann der Author (@HaZe) das "fixen"