".implode(" - ", $meta)."
requests = array();
if($opts->enable_limetorrents == "on") {
require ABSPATH."engines/magnet/lime.php";
$this->requests[] = new LimeRequest($opts, $mh);
}
if($opts->enable_piratebay == "on") {
require ABSPATH."engines/magnet/thepiratebay.php";
$this->requests[] = new PirateBayRequest($opts, $mh);
}
if($opts->enable_yts == "on") {
require ABSPATH."engines/magnet/yts.php";
$this->requests[] = new YTSRequest($opts, $mh);
}
if($opts->enable_magnetdl == "on") {
require ABSPATH."engines/magnet/magnetdl.php";
$this->requests[] = new MagnetDLRequest($opts, $mh);
}
if($opts->enable_nyaa == "on") {
require ABSPATH."engines/magnet/nyaa.php";
$this->requests[] = new NyaaRequest($opts, $mh);
}
if($opts->enable_eztv == "on") {
if(substr(strtolower($opts->query), 0, 2) == "tt") {
require ABSPATH."engines/magnet/eztv.php";
$this->requests[] = new EZTVRequest($opts, $mh);
}
}
if($opts->enable_l33tx == "on") {
require ABSPATH."engines/magnet/1337x.php";
$this->requests[] = new LeetxRequest($opts, $mh);
}
// Special search
$this->special_request = special_magnet_request($opts, $mh);
}
public function parse_results($response) {
$results = $results_temp = array();
foreach($this->requests as $request) {
if($request->request_successful()) {
$engine_result = $request->get_results();
if(!empty($engine_result)) {
// Merge duplicates and apply relevance scoring
foreach($engine_result as $result) {
if(count($results_temp) > 1 && !is_null($result['hash'])) {
$result_urls = array_column($results_temp, "hash", "id");
$found_id = array_search($result['hash'], $result_urls);
} else {
$found_id = false;
}
if($found_id !== false) {
// Duplicate result from another source
// If seeders and/or leechers mismatch, assume they're different peers
if($results_temp[$found_id]['seeders'] != $result['seeders']) $results_temp[$found_id]['combo_seeders'] += intval($result['seeders']);
if($results_temp[$found_id]['leechers'] != $result['leechers']) $results_temp[$found_id]['combo_leechers'] += intval($result['leechers']);
$results_temp[$found_id]['combo_source'][] = $result['source'];
} else {
// First find - rank and add to results
$result['combo_seeders'] = intval($result['seeders']);
$result['combo_leechers'] = intval($result['leechers']);
$result['combo_source'][] = $result['source'];
$results_temp[$result['id']] = $result;
}
unset($result, $result_urls, $found_id, $social_media_multiplier, $goosle_rank, $match_rank);
}
}
} else {
$request_result = curl_getinfo($request->ch);
$http_code_info = ($request_result['http_code'] > 200 && $request_result['http_code'] < 600) ? " - What's this?" : "";
$github_issue_url = "https://github.com/adegans/Goosle/discussions/new?category=general&".http_build_query(array("title" => get_class($request)." failed with error ".$request_result['http_code'], "body" => "```\nEngine: ".get_class($request)."\nError Code: ".$request_result['http_code']."\nRequest url: ".$request_result['url']."\n```", "labels" => 'request-error'));
$results['error'][] = array(
"message" => "Ohno! A search query ran into some trouble. Usually you can try again in a few seconds to get a result!
Engine: ".get_class($request)."
Error code: ".$request_result['http_code'].$http_code_info."
Request url: ".$request_result['url']."
Need help? Find similar issues, or ask your own question."
);
}
unset($request);
}
// Check for Special result
if(count($this->special_request) > 0) {
foreach($this->special_request as $source => $highlight) {
$results['special'][$source] = $highlight->get_results();
}
}
if(count($results_temp) > 0) {
// Sort by highest seeders
$seeders = array_column($results_temp, "combo_seeders");
array_multisort($seeders, SORT_DESC, $results_temp);
// Cap results to 50
$results['search'] = array_slice($results_temp, 0, 50);
// Count results per source
$sources = array_count_values(array_column($results['search'], 'source'));
if(count($sources) > 0) $results['sources'] = $sources;
unset($sources);
} else {
// Add error if there are no search results
$results['error'][] = array(
"message" => "No results found. Please try with more specific or different keywords!"
);
}
unset($results_temp);
return $results;
}
public static function print_results($results, $opts) {
/*
// Uncomment for debugging
echo '
Settings: '; print_r($opts); echo ''; echo '
Search results: '; print_r($results); echo ''; */ // Special results if(array_key_exists("special", $results)) { echo "
Genre: ".$highlight['category']."
";
echo "Released: ".$highlight['year']."
";
echo "Rating: ".$highlight['rating']." / 10
";
echo "Downloads: ";
foreach($highlight['magnet_links'] as $magnet) {
echo "".$magnet['quality']." ".$magnet['codec']."";
}
echo "
".$highlight['quality']."
";
echo "Download