diff options
author | Minteck <contact@minteck.org> | 2022-03-27 21:29:24 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-03-27 21:29:24 +0200 |
commit | 226516aca48e97d3dc4e4df213bc2023e64b1afd (patch) | |
tree | 60fb4f24b75b120e7e5b0e149069b16367c48aa0 /api | |
download | argon-226516aca48e97d3dc4e4df213bc2023e64b1afd.tar.gz argon-226516aca48e97d3dc4e4df213bc2023e64b1afd.tar.bz2 argon-226516aca48e97d3dc4e4df213bc2023e64b1afd.zip |
Initial commit
Diffstat (limited to 'api')
-rw-r--r-- | api/count_local_view.php | 1 | ||||
-rw-r--r-- | api/get_app_css.php | 14 | ||||
-rw-r--r-- | api/get_app_js.php | 14 | ||||
-rw-r--r-- | api/get_audio_files.php | 50 | ||||
-rw-r--r-- | api/get_image.php | 20 | ||||
-rw-r--r-- | api/get_list.php | 141 |
6 files changed, 240 insertions, 0 deletions
diff --git a/api/count_local_view.php b/api/count_local_view.php new file mode 100644 index 0000000..6fd199e --- /dev/null +++ b/api/count_local_view.php @@ -0,0 +1 @@ +<?php
diff --git a/api/get_app_css.php b/api/get_app_css.php new file mode 100644 index 0000000..005c7ef --- /dev/null +++ b/api/get_app_css.php @@ -0,0 +1,14 @@ +<?php + +header("Content-Type: application/json"); + +$files = scandir($_SERVER['DOCUMENT_ROOT'] . "/css"); +$js = []; + +foreach ($files as $file) { + if (!str_starts_with($file, ".")) { + $js[] = "/css/" . $file; + } +} + +die(json_encode($js));
\ No newline at end of file diff --git a/api/get_app_js.php b/api/get_app_js.php new file mode 100644 index 0000000..22da13f --- /dev/null +++ b/api/get_app_js.php @@ -0,0 +1,14 @@ +<?php + +header("Content-Type: application/json"); + +$files = scandir($_SERVER['DOCUMENT_ROOT'] . "/js"); +$js = []; + +foreach ($files as $file) { + if (!str_starts_with($file, ".")) { + $js[] = "/js/" . $file; + } +} + +die(json_encode($js));
\ No newline at end of file diff --git a/api/get_audio_files.php b/api/get_audio_files.php new file mode 100644 index 0000000..a9a9146 --- /dev/null +++ b/api/get_audio_files.php @@ -0,0 +1,50 @@ +<?php + +if (isset($_GET["_"])) { + $f = $_GET["_"]; +} else { + die(); +} + +if (str_ends_with($_SERVER['HTTP_HOST'], ".familine.minteck.org")) { + $_FAMILINE = true; +} else { + $_FAMILINE = false; +} +function l($en, $fr) +{ + global $_FAMILINE; + if ($_FAMILINE) { + return $fr; + } else { + return $en; + } +} + +$root = $_SERVER['DOCUMENT_ROOT']; + +if (str_contains($f, "/") || trim($f) === "." || trim($f) === "..") die(); + +header("Content-Type: application/json"); + +$out = [ + "original" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/original.flac", + "originalpcm" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/originalpcm.wav", + "ultrahigh" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/ultrahigh.flac", + "ultrahighpcm" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/ultrahighpcm.wav", + "veryhigh" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/veryhigh.mp3", + "high" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/high.mp3", + "medium" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/medium.mp3", + "low" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/low.mp3", + "verylow" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/verylow.mp3", + "ultralow" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/ultralow.mp3", + "superlow" => "https://" . ($_FAMILINE ? "music-audio-media01.familine.minteck.org" : "mediacdn.argon.minteck.org") . "/$f/superlow.mp3", +]; + +if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $f)) { + file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $f, ((int)file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $f)) + 1); +} else { + file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $f, "1"); +} + +die(json_encode($out, JSON_PRETTY_PRINT));
\ No newline at end of file diff --git a/api/get_image.php b/api/get_image.php new file mode 100644 index 0000000..e8ea59f --- /dev/null +++ b/api/get_image.php @@ -0,0 +1,20 @@ +<?php + +if (isset($_GET["_"])) { + $f = trim($_GET["_"]); +} else { + die(); +} + +header("Content-Type: image/png"); + +if (str_contains($f, "/") || str_contains($f, ".") || trim($f) === "") die(); +$f = str_replace(":", "-", $f); + +if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/images/" . $f . ".png")) { + $url = $_SERVER['DOCUMENT_ROOT'] . "/data/images/" . $f . ".png"; +} else { + $url = "https://www.gravatar.com/avatar/" . md5($f) . "?f=y&d=identicon&s=256"; +} + +die(file_get_contents($url));
\ No newline at end of file diff --git a/api/get_list.php b/api/get_list.php new file mode 100644 index 0000000..dd92e8e --- /dev/null +++ b/api/get_list.php @@ -0,0 +1,141 @@ +<?php + +header("Content-Type: application/json"); + +$origList = []; + +foreach (scandir("/mnt/argon-cdn/files") as $s) { + if (!str_starts_with($s, ".")) { + $origList[] = $s; + } +} + +foreach(scandir($_SERVER['DOCUMENT_ROOT'] . "/data/metadata") as $s) { + if (str_starts_with($s, "_")) { + $origList[] = substr($s, 0, -5); + } +} + +$listSongs = []; +$songs = []; +foreach ($origList as $song) { + $listSongs[] = $song; + if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/data/metadata/" . $song . ".json")) { + $songs[$song] = json_decode(file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/data/metadata/" . $song . ".json"), true); + $songs[$song]["_id"] = $song; + $songs[$song]["_localViews"] = file_exists($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $song) ? (int)file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $song) : 0; + } else { + $songs[$song] = [ + 'name' => $song, + 'original' => null, + 'link' => '', + 'author' => 'Minteck', + 'description' => '', + 'release' => '1970-01-01', + 'lyrics' => null, + 'wip' => false, + 'set' => null, + 'external' => [ + 'youtube' => null, + 'soundcloud' => null + ] + ]; + } +} + +$sets = []; +foreach (scandir($_SERVER["DOCUMENT_ROOT"] . "/data/sets") as $set) { + if (!str_starts_with($set, ".")) { + $set_data = json_decode(file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/data/sets/" . $set), true); + $set_songs = []; + + foreach ($set_data["songs"] as $song) { + if (in_array($song, $listSongs)) { + $set_songs[] = $song; + if (isset($songs[$song])) { + $songs[$song]["set"] = $set_data; + $songs[$song]["_id"] = $song; + $songs[$song]["_localViews"] = file_exists($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $song) ? (int)file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $song) : 0; + if (!isset($songs[$song]["_released"])) $songs[$song]["_released"] = true; + } + } else if (str_starts_with($song, ":")) { + $listSongs[] = $song; + $songs[$song] = [ + 'name' => substr($song, 1), + 'original' => null, + 'link' => null, + 'author' => null, + 'description' => null, + 'release' => null, + 'lyrics' => null, + 'set' => null, + 'wip' => true, + '_released' => false + ]; + + $set_songs[] = $song; + $songs[$song]["set"] = $set_data; + $songs[$song]["_id"] = $song; + $songs[$song]["_localViews"] = file_exists($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $song) ? (int)file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/data/local/" . $song) : 0; + if (!isset($songs[$song]["_released"])) $songs[$song]["_released"] = true; + } + } + $set_data["songs"] = $set_songs; + $sets[explode(".", $set)[0]] = $set_data; + } +} + +$knownSongs = []; +$list = []; +foreach ($sets as $id => $set) { + $set["_type"] = "set"; + $set["_id"] = $id; + + foreach ($set["songs"] as $index => $song) { + $knownSongs[] = $song; + $songs[$song]["set"]["_id"] = $id; + $set["songs"][$index] = $songs[$song]; + } + + $list[] = $set; +} +foreach ($songs as $id => $song) { + $song["_type"] = "song"; + $song["_id"] = $id; + if (!isset($song["_released"])) $song["_released"] = true; + if (!in_array($id, $knownSongs)) { + $knownSongs[] = $id; + $list[] = $song; + } +} + +usort($list, function ($a, $b) { + return strtotime($a["release"]) - strtotime($b["release"]); +}); +$list = array_reverse($list); + +$sorted = []; +foreach ($list as $item) { + if ($item["_type"] === "song") { + if (!str_starts_with($item["_id"], ":") && !str_starts_with($item["_id"], "_")) { + $sorted[] = $item["_id"]; + } + } else if ($item["_type"] === "set") { + $set_songs_sorted = array_reverse($item["songs"]); + foreach ($set_songs_sorted as $song) { + if (!str_starts_with($song["_id"], ":") && !str_starts_with($song["_id"], "_")) { + $sorted[] = $song["_id"]; + } + } + } +} +$sorted = array_reverse($sorted); + +$out = [ + "songs" => $songs, + "sets" => $sets, + "listing" => $list, + "sorted" => $sorted +]; + +die(json_encode($out, JSON_PRETTY_PRINT));
\ No newline at end of file |