opts = $opts;
$this->url = 'torrent'; // Dummy value to satisfy EngineRequest::get_results()
require "engines/torrent/1337x.php";
require "engines/torrent/nyaa.php";
require "engines/torrent/thepiratebay.php";
require "engines/torrent/yts.php";
require "engines/torrent/eztv.php";
$this->requests = array(
new LeetxRequest($opts, $mh), // 1337x
new NyaaRequest($opts, $mh),
new PirateBayRequest($opts, $mh),
new YTSRequest($opts, $mh),
new EZTVRequest($opts, $mh)
);
}
public function parse_results($response) {
$results = $results_temp = array();
foreach($this->requests as $request) {
if($request->request_successful()) {
$results_temp = array_merge($results_temp, $request->get_results());
}
}
if(count($results_temp) > 0) {
// Ensure highest seeders are shown first
$seeders = array_column($results_temp, "seeders");
array_multisort($seeders, SORT_DESC, $results_temp);
// Cap results
$results['search'] = array_slice($results_temp, 0, 50);
// Count results per site
$sources = array_count_values(array_column($results['search'], 'source'));
if(count($sources) > 0) $results['sources'] = $sources;
unset($sources);
}
unset($results_temp);
// Add error if there are no search results
if(empty($results)) {
$results['error'] = array(
"message" => "No results found. Please try with more specific or different keywords!"
);
}
return $results;
}
public static function print_results($results, $opts) {
/*
echo '
Results: ';
print_r($results);
echo '
';
*/
if(array_key_exists("search", $results)) {
echo "";
// Format sources
$sources = "";
if(array_key_exists("sources", $results)) {
$sources = array();
foreach($results['sources'] as $source => $amount) {
$plural = ($amount > 1) ? "results" : "result";
$sources[] = $amount." ".$plural." from ".$source;
}
$sources = implode(', ', $sources);
$last_comma = strrpos($sources, ', ');
if($last_comma !== false) {
$sources = substr_replace($sources, ' and ', $last_comma, 2);
}
$sources = "
Including ".$sources.". Links with the most seeders are listed first.";
}
// Elapsed time
$number_of_results = count($results['search']);
echo "- Fetched ".$number_of_results." results in ".$results['time']." seconds.".$sources."
";
// Search results
foreach($results['search'] as $result) {
$meta = array();
// Optional data
if(array_key_exists('quality', $result)) $meta[] = "Quality: ".$result['quality'];
if(array_key_exists('year', $result)) $meta[] = "Year: ".$result['year'];
if(array_key_exists('category', $result)) $meta[] = "Category: ".$result['category'];
if(array_key_exists('runtime', $result)) $meta[] = "Runtime: ".date('H:i', mktime(0, $result['runtime']));
if(array_key_exists('date_added', $result)) $meta[] = "Added: ".date('M d, Y', $result['date_added']);
if(array_key_exists('url', $result)) $meta[] = "Torrent page";
// Put result together
echo "- ";
echo "";
echo "";
echo "
Seeds: ".$result['seeders']." - Peers: ".$result['leechers']." - Size: ".$result['size']."
".implode(" - ", $meta)."
";
echo " ";
unset($result, $meta);
}
echo "
";
echo "Showing up to 50 results, sorted by most seeders.
Goosle does not index, offer or distribute torrent files.";
}
// No results found
if(array_key_exists("error", $results)) {
echo "".$results['error']['message']."
";
}
}
}
?>