general cleanup
All checks were successful
Build and publish the docker image / build (push) Successful in 18s
All checks were successful
Build and publish the docker image / build (push) Successful in 18s
Signed-off-by: ngn <ngn@ngn.tf>
This commit is contained in:
222
src/music.php
Normal file
222
src/music.php
Normal file
@ -0,0 +1,222 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
Initialize random shit
|
||||
*/
|
||||
include "data/config.php";
|
||||
|
||||
include "lib/frontend.php";
|
||||
$frontend = new frontend();
|
||||
|
||||
[$scraper, $filters] = $frontend->getscraperfilters("music");
|
||||
|
||||
$get = $frontend->parsegetfilters($_GET, $filters);
|
||||
|
||||
/*
|
||||
Captcha
|
||||
*/
|
||||
include "lib/bot_protection.php";
|
||||
new bot_protection($frontend, $get, $filters, "music", true);
|
||||
|
||||
$payload = [
|
||||
"timetaken" => microtime(true),
|
||||
"class" => "",
|
||||
"right-left" => "",
|
||||
"right-right" => "",
|
||||
"left" => ""
|
||||
];
|
||||
|
||||
try{
|
||||
$results = $scraper->music($get);
|
||||
|
||||
}catch(Exception $error){
|
||||
|
||||
$frontend->drawscrapererror($error->getMessage(), $get, "music", $payload["timetaken"]);
|
||||
}
|
||||
|
||||
$categories = [
|
||||
"song" => "",
|
||||
"author" => "",
|
||||
"playlist" => "",
|
||||
"album" => "",
|
||||
"podcast" => "",
|
||||
"user" => ""
|
||||
];
|
||||
|
||||
/*
|
||||
Set the main container
|
||||
*/
|
||||
$main = null;
|
||||
|
||||
if(count($results["song"]) !== 0){
|
||||
|
||||
$main = "song";
|
||||
|
||||
}elseif(count($results["album"]) !== 0){
|
||||
|
||||
$main = "album";
|
||||
|
||||
}elseif(count($results["playlist"]) !== 0){
|
||||
|
||||
$main = "playlist";
|
||||
|
||||
}elseif(count($results["podcast"]) !== 0){
|
||||
|
||||
$main = "podcast";
|
||||
|
||||
}elseif(count($results["author"]) !== 0){
|
||||
|
||||
$main = "author";
|
||||
|
||||
}elseif(count($results["user"]) !== 0){
|
||||
|
||||
$main = "user";
|
||||
|
||||
}else{
|
||||
|
||||
// No results found!
|
||||
echo
|
||||
$frontend->drawerror(
|
||||
"Nobody here but us chickens!",
|
||||
'Have you tried:' .
|
||||
'<ul>' .
|
||||
'<li>Using a different scraper</li>' .
|
||||
'<li>Using fewer keywords</li>' .
|
||||
'<li>Defining broader filters (Is NSFW turned off?)</li>' .
|
||||
'</ul>' .
|
||||
'</div>'
|
||||
);
|
||||
die();
|
||||
}
|
||||
|
||||
/*
|
||||
Generate list of songs
|
||||
*/
|
||||
foreach($categories as $name => $data){
|
||||
|
||||
foreach($results[$name] as $item){
|
||||
|
||||
$greentext = [];
|
||||
|
||||
if(
|
||||
isset($item["date"]) &&
|
||||
$item["date"] !== null
|
||||
){
|
||||
|
||||
$greentext[] = date("jS M y @ g:ia", $item["date"]);
|
||||
}
|
||||
|
||||
if(
|
||||
isset($item["views"]) &&
|
||||
$item["views"] !== null
|
||||
){
|
||||
|
||||
$views = number_format($item["views"]) . " views";
|
||||
$greentext[] = $views;
|
||||
}
|
||||
|
||||
if(
|
||||
isset($item["followers"]) &&
|
||||
$item["followers"] !== null
|
||||
){
|
||||
|
||||
$greentext[] = number_format($item["followers"]) . " followers";
|
||||
}
|
||||
|
||||
if(
|
||||
isset($item["author"]["name"]) &&
|
||||
$item["author"]["name"] !== null
|
||||
){
|
||||
|
||||
$greentext[] = $item["author"]["name"];
|
||||
}
|
||||
|
||||
$greentext = implode(" • ", $greentext);
|
||||
|
||||
if(
|
||||
isset($item["duration"]) &&
|
||||
$item["duration"] !== null
|
||||
){
|
||||
|
||||
$duration = $frontend->s_to_timestamp($item["duration"]);
|
||||
}else{
|
||||
|
||||
$duration = null;
|
||||
}
|
||||
|
||||
$tabindex = $name == $main ? true : false;
|
||||
|
||||
$customhtml = null;
|
||||
|
||||
if(
|
||||
(
|
||||
$name == "song" ||
|
||||
$name == "podcast"
|
||||
) &&
|
||||
$item["stream"]["endpoint"] !== null
|
||||
){
|
||||
|
||||
$customhtml =
|
||||
'<audio src="/audio/' . $item["stream"]["endpoint"] . '?s=' . urlencode($item["stream"]["url"]) . '" controls autostart="false" preload="none">';
|
||||
}
|
||||
|
||||
$categories[$name] .= $frontend->drawtextresult($item, $greentext, $duration, $get["s"], $tabindex, $customhtml);
|
||||
}
|
||||
}
|
||||
|
||||
$payload["left"] = $categories[$main];
|
||||
|
||||
// dont re-draw the category
|
||||
unset($categories[$main]);
|
||||
|
||||
/*
|
||||
Populate right handside
|
||||
*/
|
||||
|
||||
$i = 1;
|
||||
foreach($categories as $name => $value){
|
||||
|
||||
if($value == ""){
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if($i % 2 === 1){
|
||||
|
||||
$write = "right-left";
|
||||
}else{
|
||||
|
||||
$write = "right-right";
|
||||
}
|
||||
|
||||
$payload[$write] .=
|
||||
'<div class="answer-wrapper">' .
|
||||
'<input id="answer' . $i . '" class="spoiler" type="checkbox">' .
|
||||
'<div class="answer">' .
|
||||
'<div class="answer-title">' .
|
||||
'<a class="answer-title" href="?s=' . urlencode($get["s"]);
|
||||
|
||||
$payload[$write] .=
|
||||
'&type=' . $name . '"><h2>' . ucfirst($name) . 's</h2></a>';
|
||||
|
||||
$payload[$write] .=
|
||||
'</div>' .
|
||||
$categories[$name] .
|
||||
'</div>' .
|
||||
'<label class="spoiler-button" for="answer' . $i . '"></label></div>';
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
if($i !== 1){
|
||||
|
||||
$payload["class"] = " has-answer";
|
||||
}
|
||||
|
||||
if($results["npt"] !== null){
|
||||
|
||||
$payload["left"] .=
|
||||
'<a href="' . $frontend->htmlnextpage($get, $results["npt"], "music") . '" class="nextpage">Next page ></a>';
|
||||
}
|
||||
|
||||
echo $frontend->load("search.html", $payload);
|
Reference in New Issue
Block a user