forked from are0h/tapes
96 lines
3 KiB
PHP
96 lines
3 KiB
PHP
<?php
|
|
|
|
namespace brain\controllers;
|
|
|
|
use Kiwilan\Audio\Audio;
|
|
|
|
class TapesAPI
|
|
{
|
|
private $tapesDir = "assets/audio/tapes";
|
|
protected $params;
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public function handleRequest($params)
|
|
{
|
|
if (isset($params[2])) {
|
|
switch ($params[2]) {
|
|
case "list":
|
|
return $this->getList();
|
|
break;
|
|
case "tracklist":
|
|
return $this->getTrackList($params[3]);
|
|
break;
|
|
default:
|
|
return json_encode([
|
|
"message" => "This method does not exist",
|
|
"type" => "ERROR",
|
|
]);
|
|
break;
|
|
}
|
|
} else {
|
|
return json_encode([
|
|
"message" => "This method does not exist",
|
|
"type" => "ERROR",
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function getTrackList($id)
|
|
{
|
|
$folder = $this->tapesDir . "/" . urldecode($id);
|
|
$contents = scandir($folder);
|
|
$tracklist = [];
|
|
foreach ($contents as $key => $value) {
|
|
$path = realpath($folder . DIRECTORY_SEPARATOR . $value);
|
|
if (!is_dir($path) && $value != ".DS_Store") {
|
|
$item = explode("/", $path);
|
|
if ($item[9] != "cover.jpg") {
|
|
$tags = Audio::read($path);
|
|
//reading cover data is lil funky, so off for now
|
|
//$cover = $tags->getCover();
|
|
//$image = $cover->getContents();
|
|
$album = "";
|
|
if (empty($tags->getAlbum())) {
|
|
$album = "None";
|
|
} else {
|
|
$album = $tags->getAlbum();
|
|
}
|
|
array_push($tracklist, [
|
|
"title" => $tags->getTitle(),
|
|
"album" => $album,
|
|
"artist" => $tags->getArtist(),
|
|
"time" => $tags->getDuration(),
|
|
"file" => $item[9],
|
|
"tape" => $item[8],
|
|
]);
|
|
}
|
|
}
|
|
}
|
|
usort($tracklist, function ($a, $b) {
|
|
return strnatcasecmp($a["file"], $b["file"]);
|
|
});
|
|
return json_encode($tracklist);
|
|
}
|
|
|
|
public function getList($obj = false)
|
|
{
|
|
$current = scandir($this->tapesDir);
|
|
$tapeList = [];
|
|
foreach ($current as $key => $value) {
|
|
$path = realpath($this->tapesDir . DIRECTORY_SEPARATOR . $value);
|
|
if (!is_dir($path) && $value != ".DS_Store") {
|
|
$results[] = $path;
|
|
} elseif ($value != "." && $value != ".." && $value != ".DS_Store") {
|
|
$titles = explode("/", $path);
|
|
array_push($tapeList, ["path" => $path, "title" => $titles[8]]);
|
|
}
|
|
}
|
|
if (!$obj) {
|
|
return json_encode($tapeList);
|
|
} else {
|
|
return $tapeList;
|
|
}
|
|
}
|
|
}
|