Hi!
Ich habe mir überlegt ob es nicht toll wäre anstatt auf jedem Tracker einzeln nach etwas bestimmten zu Suchen, mit einer Suchmaschine dies Abzufragen.
Hier zu habe ich eine API gebastelt die eine XML Ausgabe erzeugt!
Beispiel mit dem Suchbegriff "cou":
http://screamlabs.at/chatcommunity/i...rch&search=cou
Die Suchmaschine liest die XML aus und gibt in einer Tabelle das Ergebnis aus:
Suche:
http://screamlabs.at/test/search.php
Suchergebnis mit "cou":
http://screamlabs.at/test/search.php?search=cou
Wer hätte Lust diese API auf seinem Tracker zu testen?
PS: Um Mißbrauch zu verhindern kann jeder einen API Schlüssel in der API eintragen den dann nur die Suchmaschine weiß!
Quellcode:
PHP-Code:
<?
/*
##########################################
## Coded by Stifler ##
## 2011 ##
##########################################
*/
require_once("include/bittorrent.php");
$api_version = "1.0";
$apikey = "";
$tracker_name = "";
$tracker_url = "";
$download_url = ""; // http://www.tracker.com/download.php?id={ID} ({ID} NICHT ersetzen!)
$view_url = ""; // http://www.tracker.com/details.php?id={ID} ({ID} NICHT ersetzen!)
$min_string = 3;
$search_limit = 50;
dbconn();
function checkfilename($filename)
{
$s = $filename;
$s = str_replace(array("Ä", "Ö", "Ü", "ä", "ö", "ü", "ß"),
array("Ae", "Oe", "Ue", "ae", "oe", "ue", "ss"),
$s);
return $s;
}
function xml_error($error_code, $error_string)
{
global $api_version, $tracker_name, $tracker_url, $search;
$xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n".
"<infos>\n".
"<api>\n".
"<version>".$api_version."</version>\n".
"</api>\n".
"<info>\n".
"<tracker>".checkfilename($tracker_name)."</tracker>\n".
"<url>".str_replace("&", "&", $tracker_url)."</url>\n".
"<search>".$search."</search>\n".
"</info>\n".
"<error>\n".
"<id>".$error_code."</id>\n".
"<message>".checkfilename($error_string)."</message>\n".
"</error>\n
</infos>\n";
header("Content-Type: text/xml; charset=utf-8");
echo $xml;
exit();
}
$key = mysql_real_escape_string(trim(rawurldecode($_REQUEST[apikey])));
$search = mysql_real_escape_string(trim(rawurldecode($_REQUEST[search])));
if($key != md5($apikey)) {
xml_error(1, "Invalid API Key (Ungültiger API-Schlüssel)");
}
elseif($search == "" || strlen($search) < $min_string) {
xml_error(2, "Invalid String Length (Ungültige String-Länge)");
}
$query = mysql_query("SELECT id, name, size, seeders, leechers, times_completed FROM torrents WHERE name LIKE '%".$search."%' AND status='1' ORDER BY 'id' DESC LIMIT $search_limit");
$xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n".
"<infos>\n".
"<api>\n".
"<version>".$api_version."</version>\n".
"</api>\n".
"<info>\n".
"<tracker>".checkfilename($tracker_name)."</tracker>\n".
"<url>".str_replace("&", "&", $tracker_url)."</url>\n".
"<download>".str_replace("&", "&", $download_url)."</download>\n".
"<view>".str_replace("&", "&", $view_url)."</view>\n".
"<search>".$search."</search>\n".
"<limit>".$search_limit."</limit>\n".
"<min>".$min_string."</min>\n".
"</info>\n";
while($result = mysql_fetch_array($query)) {
$id = intval($result["id"]);
$name = checkfilename($result["name"]);
$size = intval($result["size"]);
$seeder = intval($result["seeders"]);
$leecher = intval($result["leechers"]);
$completed = intval($result["times_completed"]);
$xml .= "<file>\n".
"<id>".$id."</id>\n".
"<name>".$name."</name>\n".
"<size>".$size."</size>\n".
"<seeder>".$seeder."</seeder>\n".
"<leecher>".$leecher."</leecher>\n".
"<completed>".$completed."</completed>\n".
"</file>\n";
}
$xml .= "</infos>";
header("Content-Type: text/xml; charset=utf-8");
echo $xml;
exit();
?>