videos.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. /*
  3. Initialize random shit
  4. */
  5. include "data/config.php";
  6. include "lib/frontend.php";
  7. $frontend = new frontend();
  8. [$scraper, $filters] = $frontend->getscraperfilters("videos");
  9. $get = $frontend->parsegetfilters($_GET, $filters);
  10. /*
  11. Captcha
  12. */
  13. include "lib/captcha_gen.php";
  14. new captcha($frontend, $get, $filters, "videos", true);
  15. $payload = [
  16. "class" => "",
  17. "right-left" => "",
  18. "right-right" => "",
  19. "left" => ""
  20. ];
  21. try{
  22. $results = $scraper->video($get);
  23. }catch(Exception $error){
  24. $frontend->drawscrapererror($error->getMessage(), $get, "videos");
  25. }
  26. $categories = [
  27. "video" => "",
  28. "author" => "",
  29. "livestream" => "",
  30. "playlist" => "",
  31. "reel" => ""
  32. ];
  33. /*
  34. Set the main container
  35. */
  36. $main = null;
  37. if(count($results["video"]) !== 0){
  38. $main = "video";
  39. }elseif(count($results["playlist"]) !== 0){
  40. $main = "playlist";
  41. }elseif(count($results["livestream"]) !== 0){
  42. $main = "livestream";
  43. }elseif(count($results["author"]) !== 0){
  44. $main = "author";
  45. }elseif(count($results["reel"]) !== 0){
  46. $main = "reel";
  47. }else{
  48. // No results found!
  49. echo
  50. $frontend->drawerror(
  51. "Nobody here but us chickens!",
  52. 'Have you tried:' .
  53. '<ul>' .
  54. '<li>Using a different scraper</li>' .
  55. '<li>Using fewer keywords</li>' .
  56. '<li>Defining broader filters (Is NSFW turned off?)</li>' .
  57. '</ul>' .
  58. '</div>'
  59. );
  60. die();
  61. }
  62. /*
  63. Generate list of videos
  64. */
  65. foreach($categories as $name => $data){
  66. foreach($results[$name] as $item){
  67. $greentext = [];
  68. if(
  69. isset($item["date"]) &&
  70. $item["date"] !== null
  71. ){
  72. $greentext[] = date("jS M y @ g:ia", $item["date"]);
  73. }
  74. if(
  75. isset($item["views"]) &&
  76. $item["views"] !== null
  77. ){
  78. $views = number_format($item["views"]);
  79. if($name != "livestream"){
  80. $views .= " views";
  81. }else{
  82. $views .= " watching";
  83. }
  84. $greentext[] = $views;
  85. }
  86. if(
  87. isset($item["followers"]) &&
  88. $item["followers"] !== null
  89. ){
  90. $greentext[] = number_format($item["followers"]) . " followers";
  91. }
  92. if(
  93. isset($item["author"]["name"]) &&
  94. $item["author"]["name"] !== null
  95. ){
  96. $greentext[] = $item["author"]["name"];
  97. }
  98. $greentext = implode(" • ", $greentext);
  99. if(
  100. isset($item["duration"]) &&
  101. $item["duration"] !== null
  102. ){
  103. $duration = $frontend->s_to_timestamp($item["duration"]);
  104. }else{
  105. $duration = null;
  106. }
  107. $tabindex = $name == $main ? true : false;
  108. $categories[$name] .= $frontend->drawtextresult($item, $greentext, $duration, $get["s"], $tabindex);
  109. }
  110. }
  111. $payload["left"] = $categories[$main];
  112. // dont re-draw the category
  113. unset($categories[$main]);
  114. /*
  115. Populate right handside
  116. */
  117. $i = 1;
  118. foreach($categories as $name => $value){
  119. if($value == ""){
  120. continue;
  121. }
  122. if($i % 2 === 1){
  123. $write = "right-left";
  124. }else{
  125. $write = "right-right";
  126. }
  127. $payload[$write] .=
  128. '<div class="answer-wrapper">' .
  129. '<input id="answer' . $i . '" class="spoiler" type="checkbox">' .
  130. '<div class="answer">' .
  131. '<div class="answer-title">' .
  132. '<a class="answer-title" href="?s=' . urlencode($get["s"]);
  133. switch($name){
  134. case "playlist":
  135. $payload[$write] .=
  136. '&type=playlist"><h2>Playlists</h2></a>';
  137. break;
  138. case "livestream":
  139. $payload[$write] .=
  140. '&feature=live"><h2>Livestreams</h2></a>';
  141. break;
  142. case "author":
  143. $payload[$write] .=
  144. '&type=channel"><h2>Authors</h2></a>';
  145. break;
  146. case "reel":
  147. $payload[$write] .=
  148. '&duration=short"><h2>Reels</h2></a>';
  149. break;
  150. }
  151. $payload[$write] .=
  152. '</div>' .
  153. $categories[$name] .
  154. '</div>' .
  155. '<label class="spoiler-button" for="answer' . $i . '"></label></div>';
  156. $i++;
  157. }
  158. if($i !== 1){
  159. $payload["class"] = " has-answer";
  160. }
  161. if($results["npt"] !== null){
  162. $payload["left"] .=
  163. '<a href="' . $frontend->htmlnextpage($get, $results["npt"], "videos") . '" class="nextpage">Next page &gt;</a>';
  164. }
  165. echo $frontend->load("search.html", $payload);