diff options
Diffstat (limited to 'bridges/YGGTorrentBridge.php')
-rw-r--r-- | bridges/YGGTorrentBridge.php | 278 |
1 files changed, 143 insertions, 135 deletions
diff --git a/bridges/YGGTorrentBridge.php b/bridges/YGGTorrentBridge.php index 30b5ca7a..f0c31f11 100644 --- a/bridges/YGGTorrentBridge.php +++ b/bridges/YGGTorrentBridge.php @@ -3,148 +3,156 @@ /* This is a mashup of FlickrExploreBridge by sebsauvage and FlickrTagBridge * by erwang.providing the functionality of both in one. */ -class YGGTorrentBridge extends BridgeAbstract { +class YGGTorrentBridge extends BridgeAbstract +{ + const MAINTAINER = 'teromene'; + const NAME = 'Yggtorrent Bridge'; + const URI = 'https://www5.yggtorrent.fi'; + const DESCRIPTION = 'Returns torrent search from Yggtorrent'; - const MAINTAINER = 'teromene'; - const NAME = 'Yggtorrent Bridge'; - const URI = 'https://www5.yggtorrent.fi'; - const DESCRIPTION = 'Returns torrent search from Yggtorrent'; + const PARAMETERS = [ + [ + 'cat' => [ + 'name' => 'category', + 'type' => 'list', + 'values' => [ + 'Toutes 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' => [ + 'name' => 'Nom', + 'description' => 'Nom du torrent', + 'type' => 'text', + 'exampleValue' => 'matrix' + ], + 'description' => [ + 'name' => 'Description', + 'description' => 'Description du torrent', + 'type' => 'text' + ], + 'fichier' => [ + 'name' => 'Fichier', + 'description' => 'Fichier du torrent', + 'type' => 'text' + ], + 'uploader' => [ + 'name' => 'Uploader', + 'description' => 'Uploader du torrent', + 'type' => 'text' + ], - const PARAMETERS = array( - array( - 'cat' => array( - 'name' => 'category', - 'type' => 'list', - 'values' => array( - 'Toutes 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', - 'exampleValue' => 'matrix' - ), - '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]; - 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') + . '&file=' + . $this->getInput('fichier') + . '&uploader=' + . $this->getInput('uploader') + . '&category=' + . $category + . '&sub_category=' + . $subcategory + . '&do=search&order=desc&sort=publish_date'); - $html = getSimpleHTMLDOM(self::URI . '/engine/search?name=' - . $this->getInput('nom') - . '&description=' - . $this->getInput('description') - . '&file=' - . $this->getInput('fichier') - . '&uploader=' - . $this->getInput('uploader') - . '&category=' - . $category - . '&sub_category=' - . $subcategory - . '&do=search&order=desc&sort=publish_date'); + $count = 0; + $results = $html->find('.results', 0); + if (!$results) { + return; + } - $count = 0; - $results = $html->find('.results', 0); - if(!$results) return; + foreach ($results->find('tr') as $row) { + $count++; + if ($count == 1) { + continue; // Skip table header + } + if ($count == 22) { + break; // Stop processing after 21 items (20 + 1 table header) + } + $item = []; + $item['timestamp'] = $row->find('.hidden', 1)->plaintext; + $item['title'] = $row->find('a#torrent_name', 0)->plaintext; + $item['uri'] = $this->processLink($row->find('a#torrent_name', 0)->href); + $item['seeders'] = $row->find('td', 7)->plaintext; + $item['leechers'] = $row->find('td', 8)->plaintext; + $item['size'] = $row->find('td', 5)->plaintext; + $item = array_merge($item, $this->collectTorrentData($item['uri'])); - foreach($results->find('tr') as $row) { - $count++; - if($count == 1) continue; // Skip table header - if($count == 22) break; // Stop processing after 21 items (20 + 1 table header) - $item = array(); - $item['timestamp'] = $row->find('.hidden', 1)->plaintext; - $item['title'] = $row->find('a#torrent_name', 0)->plaintext; - $item['uri'] = $this->processLink($row->find('a#torrent_name', 0)->href); - $item['seeders'] = $row->find('td', 7)->plaintext; - $item['leechers'] = $row->find('td', 8)->plaintext; - $item['size'] = $row->find('td', 5)->plaintext; - $item = array_merge($item, $this->collectTorrentData($item['uri'])); + $this->items[] = $item; + } + } - $this->items[] = $item; - } + /** + * Convert special characters like é to %C3%A9 in the url + */ + private function processLink($url) + { + $url = explode('/', $url); + foreach ($url as $index => $value) { + // Skip https://{self::URI}/ + if ($index < 3) { + continue; + } + // Decode first so that characters like + are not encoded + $url[$index] = urlencode(urldecode($value)); + } + return implode('/', $url); + } - } - - /** - * Convert special characters like é to %C3%A9 in the url - */ - private function processLink($url) { - $url = explode('/', $url); - foreach($url as $index => $value) { - // Skip https://{self::URI}/ - if ($index < 3) { - continue; - } - // Decode first so that characters like + are not encoded - $url[$index] = urlencode(urldecode($value)); - } - return implode('/', $url); - } - - private function collectTorrentData($url) { - $page = defaultLinkTo(getSimpleHTMLDOMCached($url), self::URI); - $author = $page->find('.informations tr', 5)->find('td', 1)->plaintext; - $content = $page->find('.default', 1); - return array('author' => $author, 'content' => $content); - } + private function collectTorrentData($url) + { + $page = defaultLinkTo(getSimpleHTMLDOMCached($url), self::URI); + $author = $page->find('.informations tr', 5)->find('td', 1)->plaintext; + $content = $page->find('.default', 1); + return ['author' => $author, 'content' => $content]; + } } |