From ea81b5039fa5df873a60bba7403bda82225a5fca Mon Sep 17 00:00:00 2001 From: niawag Date: Fri, 24 Mar 2017 11:16:46 +0100 Subject: [PATCH] Create KATBridge.php Hi, I've created a bridge for KickassTorrents. It's mainly based on ThePirateBay bridge so a huge thanks to @mitsukarenai This bridge have the same abilities: search terms (global or in category), categories, users, restrict results to trusted users. I've tried to test it thoroughly and everything is working for me. I'm sure there is space for improvements and I'd gladly welcome any idea! I have a concern about file size which are frequently reported on torrent site rss. I've added it to the description but it could be useful to add or tag. Thanks again for RSSBridge, I'm loving it! --- bridges/KATBridge.php | 124 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 bridges/KATBridge.php diff --git a/bridges/KATBridge.php b/bridges/KATBridge.php new file mode 100644 index 00000000..09667014 --- /dev/null +++ b/bridges/KATBridge.php @@ -0,0 +1,124 @@ + array( + 'name' => 'keywords, separated by semicolons', + 'exampleValue' => 'first list;second list;…', + 'required' => true + ), + 'crit' => array( + 'type' => 'list', + 'name' => 'Search type', + 'values' => array( + 'search' => 'search', + 'category' => 'cat', + 'user' => 'usr' + ) + ), + 'cat_check' => array( + 'type' => 'checkbox', + 'name' => 'Specify category for normal search ?', + ), + 'cat' => array( + 'name' => 'Category number', + 'exampleValue' => '100, 200… See KAT for category number' + ), + 'trusted' => array( + 'type' => 'checkbox', + 'name' => 'Only get results from Elite or Verified uploaders ?', + ), + )); + public function collectData(){ + function parseDateTimestamp($element){ + $guessedDate = strptime($element, '%d-%m-%Y %H:%M:%S'); + $timestamp = mktime( + $guessedDate['tm_hour'], + $guessedDate['tm_min'], + $guessedDate['tm_sec'], + $guessedDate['tm_mon'] + 1, + $guessedDate['tm_mday'], + $guessedDate['tm_year'] + 1900); + return $timestamp; + } + $catBool = $this->getInput('cat_check'); + if($catBool){ + $catNum = $this->getInput('cat'); + } + $critList = $this->getInput('crit'); + $trustedBool = $this->getInput('trusted'); + $keywordsList = explode(';', $this->getInput('q')); + foreach($keywordsList as $keywords){ + switch($critList){ + case 'search': + if($catBool == false){ + $html = getSimpleHTMLDOM( + self::URI . + 'torrents-search.php?search=' . + rawurlencode($keywords) + ) or returnServerError('Could not request KAT.'); + } + else { + $html = getSimpleHTMLDOM( + self::URI . + 'torrents-search.php?search=' . + rawurlencode($keywords) . + '&cat=' . + rawurlencode($catNum) + ) or returnServerError('Could not request KAT.'); + } + break; + case 'cat': + $html = getSimpleHTMLDOM( + self::URI . + 'torrents.php?cat=' . + rawurlencode($keywords) + ) or returnServerError('Could not request KAT.'); + break; + case 'usr': + $html = getSimpleHTMLDOM( + self::URI . + 'account-details.php?id=' . + rawurlencode($keywords) + ) or returnServerError('Could not request KAT.'); + break; + } + if ($html->find('table.ttable_headinner', 0) == false) + returnServerError('No result for query ' . $keywords); + foreach($html->find('tr.t-row') as $element){ + if(!$trustedBool + || !is_null($element->find('i[title="Elite Uploader"]', 0)) + || !is_null($element->find('i[title="Verified Uploader"]', 0))){ + $item = array(); + $item['uri'] = self::URI . $element->find('a', 2)->href; + $item['id'] = self::URI . $element->find('a.cellMainLink', 0)->href; + $item['timestamp'] = parseDateTimestamp($element->find('td', 2)->plaintext); + $item['author'] = $element->find('a.plain', 0)->plaintext; + $item['title'] = $element->find('a.cellMainLink', 0)->plaintext; + $item['seeders'] = (int)$element->find('td', 3)->plaintext; + $item['leechers'] = (int)$element->find('td', 4)->plaintext; + $item['size'] = $element->find('td', 1)->plaintext; + $item['content'] = $item['title'] + . '
size: ' + . $item['size'] + . '
seeders: ' + . $item['seeders'] + . ' | leechers: ' + . $item['leechers'] + . '
info page'; + if(isset($item['title'])) + $this->items[] = $item; + } + } + } + } +}