rss-bridge/bridges/YGGTorrentBridge.php

143 lines
4.6 KiB
PHP

<?php
/* This is a mashup of FlickrExploreBridge by sebsauvage and FlickrTagBridge
* by erwang.providing the functionality of both in one.
*/
class YGGTorrentBridge extends BridgeAbstract {
const MAINTAINER = 'teromene';
const NAME = 'Yggtorrent Bridge';
const URI = 'https://yggtorrent.is';
const DESCRIPTION = 'Returns torrent search from Yggtorrent';
const PARAMETERS = array(
array(
"cat" => array(
"name" => "category",
"type" => "list",
"values" => array(
"Toute les catégories" => "all.all",
"Film/Vidéo - Toutes les sous-catégories" => "2145.all",
"Film/Vidéo - Animation" => "2145.2178",
"Film/Vidéo - Animation Série" => "2145.2179",
"Film/Vidéo - Concert" => "2145.2180",
"Film/Vidéo - Documentaire" => "2145.2181",
"Film/Vidéo - Émission TV" => "2145.2182",
"Film/Vidéo - Film" => "2145.2183",
"Film/Vidéo - Série TV" => "2145.2184",
"Film/Vidéo - Spectacle" => "2145.2185",
"Film/Vidéo - Sport" => "2145.2186",
"Film/Vidéo - Vidéo-clips" => "2145.2186",
"Audio - Toutes les sous-catégories" => "2139.all",
"Audio - Karaoké" => "2139.2147",
"Audio - Musique" => "2139.2148",
"Audio - Podcast Radio" => "2139.2150",
"Audio - Samples" => "2139.2149",
"Jeu vidéo - Toutes les sous-catégories" => "2142.all",
"Jeu vidéo - Autre" => "2142.2167",
"Jeu vidéo - Linux" => "2142.2159",
"Jeu vidéo - MacOS" => "2142.2160",
"Jeu vidéo - Microsoft" => "2142.2162",
"Jeu vidéo - Nintendo" => "2142.2163",
"Jeu vidéo - Smartphone" => "2142.2165",
"Jeu vidéo - Sony" => "2142.2164",
"Jeu vidéo - Tablette" => "2142.2166",
"Jeu vidéo - Windows" => "2142.2161",
"eBook - Toutes les sous-catégories" => "2140.all",
"eBook - Audio" => "2140.2151",
"eBook - Bds" => "2140.2152",
"eBook - Comics" => "2140.2153",
"eBook - Livres" => "2140.2154",
"eBook - Mangas" => "2140.2155",
"eBook - Presse" => "2140.2156",
"Emulation - Toutes les sous-catégories" => "2141.all",
"Emulation - Emulateurs" => "2141.2157",
"Emulation - Roms" => "2141.2158",
"GPS - Toutes les sous-catégories" => "2141.all",
"GPS - Applications" => "2141.2168",
"GPS - Cartes" => "2141.2169",
"GPS - Divers" => "2141.2170"
)
),
"nom" => array(
"name" => "Nom",
"description" => "Nom du torrent",
"type" => "text"
),
"description" => array(
"name" => "Description",
"description" => "Description du torrent",
"type" => "text"
),
"fichier" => array(
"name" => "Fichier",
"description" => "Fichier du torrent",
"type" => "text"
),
"uploader" => array(
"name" => "Uploader",
"description" => "Uploader du torrent",
"type" => "text"
),
)
);
public function collectData() {
$catInfo = explode(".", $this->getInput("cat"));
$category = $catInfo[0];
$subcategory = $catInfo[1];
$html = getSimpleHTMLDOM(self::URI . "/engine/search?name="
. $this->getInput("nom")
. "&description="
. $this->getInput("description")
. "&fichier="
. $this->getInput("fichier")
. "&file="
. $this->getInput("uploader")
. "&category="
. $category
. "&sub_category="
. $subcategory
. "&do=search")
or returnServerError("Unable to query Yggtorrent !");
$count = 0;
$results = $html->find(".results", 0);
if(!$results) return;
foreach($results->find("tr") as $row) {
$count++;
if($count == 1) continue;
if($count == 12) break;
$item = array();
$item["timestamp"] = $row->find(".hidden", 1)->plaintext;
$item["title"] = $row->find("a", 1)->plaintext;
$torrentData = $this->collectTorrentData($row->find("a", 1)->href);
$item["author"] = $torrentData["author"];
$item["content"] = $torrentData["content"];
$item["seeders"] = $row->find("td", 7)->plaintext;
$item["leechers"] = $row->find("td", 8)->plaintext;
$item["size"] = $row->find("td", 5)->plaintext;
$this->items[] = $item;
}
}
public function collectTorrentData($url) {
//For weird reason, the link we get can be invalid, we fix it.
$url_full = explode("/", $url);
$url_full[4] = urlencode($url_full[4]);
$url_full[5] = urlencode($url_full[5]);
$url_full[6] = urlencode($url_full[6]);
$url = implode("/", $url_full);
$page = getSimpleHTMLDOM($url) or returnServerError("Unable to query Yggtorrent page !");
$author = $page->find(".informations", 0)->find("a", 4)->plaintext;
$content = $page->find(".default", 1);
return array("author" => $author, "content" => $content);
}
}