KATBridge.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. class KATBridge extends BridgeAbstract {
  3. const MAINTAINER = 'niawag';
  4. const NAME = 'KickassTorrents';
  5. const URI = 'https://katcr.co/new/';
  6. const DESCRIPTION = 'Returns results for the keywords. You can put several
  7. list of keywords by separating them with a semicolon (e.g. "one show;another
  8. show"). Category based search needs the category number as input. User based
  9. search takes the Uploader ID: see KAT URL for user feed. Search can be done in a specified category';
  10. const PARAMETERS = array( array(
  11. 'q' => array(
  12. 'name' => 'keywords, separated by semicolons',
  13. 'exampleValue' => 'first list;second list;…',
  14. 'required' => true
  15. ),
  16. 'crit' => array(
  17. 'type' => 'list',
  18. 'name' => 'Search type',
  19. 'values' => array(
  20. 'search' => 'search',
  21. 'category' => 'cat',
  22. 'user' => 'usr'
  23. )
  24. ),
  25. 'cat_check' => array(
  26. 'type' => 'checkbox',
  27. 'name' => 'Specify category for normal search ?',
  28. ),
  29. 'cat' => array(
  30. 'name' => 'Category number',
  31. 'exampleValue' => '100, 200… See KAT for category number'
  32. ),
  33. 'trusted' => array(
  34. 'type' => 'checkbox',
  35. 'name' => 'Only get results from Elite or Verified uploaders ?',
  36. ),
  37. ));
  38. public function collectData(){
  39. function parseDateTimestamp($element){
  40. $guessedDate = strptime($element, '%d-%m-%Y %H:%M:%S');
  41. $timestamp = mktime(
  42. $guessedDate['tm_hour'],
  43. $guessedDate['tm_min'],
  44. $guessedDate['tm_sec'],
  45. $guessedDate['tm_mon'] + 1,
  46. $guessedDate['tm_mday'],
  47. $guessedDate['tm_year'] + 1900);
  48. return $timestamp;
  49. }
  50. $catBool = $this->getInput('cat_check');
  51. if($catBool) {
  52. $catNum = $this->getInput('cat');
  53. }
  54. $critList = $this->getInput('crit');
  55. $trustedBool = $this->getInput('trusted');
  56. $keywordsList = explode(';', $this->getInput('q'));
  57. foreach($keywordsList as $keywords) {
  58. switch($critList) {
  59. case 'search':
  60. if($catBool == false) {
  61. $html = getSimpleHTMLDOM(
  62. self::URI .
  63. 'torrents-search.php?search=' .
  64. rawurlencode($keywords)
  65. ) or returnServerError('Could not request KAT.');
  66. } else {
  67. $html = getSimpleHTMLDOM(
  68. self::URI .
  69. 'torrents-search.php?search=' .
  70. rawurlencode($keywords) .
  71. '&cat=' .
  72. rawurlencode($catNum)
  73. ) or returnServerError('Could not request KAT.');
  74. }
  75. break;
  76. case 'cat':
  77. $html = getSimpleHTMLDOM(
  78. self::URI .
  79. 'torrents.php?cat=' .
  80. rawurlencode($keywords)
  81. ) or returnServerError('Could not request KAT.');
  82. break;
  83. case 'usr':
  84. $html = getSimpleHTMLDOM(
  85. self::URI .
  86. 'account-details.php?id=' .
  87. rawurlencode($keywords)
  88. ) or returnServerError('Could not request KAT.');
  89. break;
  90. }
  91. if ($html->find('table.ttable_headinner', 0) == false)
  92. returnServerError('No result for query ' . $keywords);
  93. foreach($html->find('tr.t-row') as $element) {
  94. if(!$trustedBool
  95. || !is_null($element->find('i[title="Elite Uploader"]', 0))
  96. || !is_null($element->find('i[title="Verified Uploader"]', 0))) {
  97. $item = array();
  98. $item['uri'] = self::URI . $element->find('a', 2)->href;
  99. $item['id'] = self::URI . $element->find('a.cellMainLink', 0)->href;
  100. $item['timestamp'] = parseDateTimestamp($element->find('td', 2)->plaintext);
  101. $item['author'] = $element->find('a.plain', 0)->plaintext;
  102. $item['title'] = $element->find('a.cellMainLink', 0)->plaintext;
  103. $item['seeders'] = (int)$element->find('td', 3)->plaintext;
  104. $item['leechers'] = (int)$element->find('td', 4)->plaintext;
  105. $item['size'] = $element->find('td', 1)->plaintext;
  106. $item['content'] = $item['title']
  107. . '<br>size: '
  108. . $item['size']
  109. . '<br>seeders: '
  110. . $item['seeders']
  111. . ' | leechers: '
  112. . $item['leechers']
  113. . '<br><a href="'
  114. . $item['id']
  115. . '">info page</a>';
  116. if(isset($item['title']))
  117. $this->items[] = $item;
  118. }
  119. }
  120. }
  121. }
  122. }