NetVision-Technik

NetVision-Technik (http://www.netvision-technik.de/forum/index.php)
-   Off-Topic (http://www.netvision-technik.de/forum/forumdisplay.php?f=44)
-   -   Tracker Such API (http://www.netvision-technik.de/forum/showthread.php?t=6460)

Stifler 06.09.2011 13:38

Tracker Such API
 
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("&", "&amp;", $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("&", "&amp;", $tracker_url)."</url>\n".
"<download>".str_replace("&", "&amp;", $download_url)."</download>\n".
"<view>".str_replace("&", "&amp;", $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();

?>


Lex 06.09.2011 13:44

Die Idee hatte ich auch schon, bezw hab ich auch schon umgesetzt. Hatte den XML Output gebastelt, nur leider kam June nicht dazu das einlesen zu entwickeln daher ging das ganze wiedermal nicht so voran wie gewollt. Mit deiner Klasse zum auslesen des XML wird das aber sicher kein Problem sein. Bin mir sicher wir bekommen diese Suche sogar sourcenübergreifend hin.

Lg Lex

Stifler 07.09.2011 17:07

API ist nun Online!

Lex 07.09.2011 18:18

Genau das war auch bei meiner Idee damals der haken, man muss die DB daten eintragen, das macht keiner der keine Ahnung hat freiwillig.
Am besten wäre die dbconn() Funktion zu nutzen.

Lg Lex

Stifler 07.09.2011 18:44

WUrde geändert!

Zero111 07.09.2011 20:33

wäre vlt eine Idee wert das ins PartnerCenter einzubauen.

So dass Partner gegenseitig auf auf Partnertracker suchen können.

Beim erstellen wird automatisch ein Api Key generiert der dem Partner mitgeteilt wird.

Vorteil der Geschichte wäre dass dann ein System zum senden der daten und empfang/verarbeitung benutzt wird und das ganze direkt mit dem Partner verknüft wird

Stifler 07.09.2011 21:09

Ja Funktionieren tut es auf jeden Fall schon mal!
Und die Suchseite hab ich jetzt auch etwas aufgemotzt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.

Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2025, vBulletin Solutions, Inc.