forked from blallo/rss-bridge
139 lines
4.4 KiB
PHP
139 lines
4.4 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;
|
||
|
foreach($html->find(".results", 0)->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[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);
|
||
|
}
|
||
|
}
|