From bbe7b5849a05729e949f11e15ab66929c3dcaf7c Mon Sep 17 00:00:00 2001 From: Thayol Date: Mon, 28 Dec 2020 21:34:07 +0100 Subject: [PATCH] Repacker implemented --- libraries/optimizer.php | 28 +++++++ libraries/utils.php | 13 +-- macska.jpg | Bin 0 -> 9453 bytes main.php | 7 ++ templates/main-browser-script.js | 74 +++++++++++++++--- .../main-browser-template-difficulty.html | 11 +++ templates/main-browser-template-mapset.html | 6 ++ templates/main.html | 4 +- templates/style.css | 48 +++++++++++- 9 files changed, 168 insertions(+), 23 deletions(-) create mode 100644 macska.jpg create mode 100644 templates/main-browser-template-difficulty.html create mode 100644 templates/main-browser-template-mapset.html diff --git a/libraries/optimizer.php b/libraries/optimizer.php index afc9b22..2573536 100644 --- a/libraries/optimizer.php +++ b/libraries/optimizer.php @@ -1,4 +1,5 @@ get_library()[$key]["path"] ?? ""; + if (!file_exists($path)) return ""; + + $name = "session/osz/" . basename($path) . ".osz"; + if (file_exists($name)) return $name; + + $zip = new ZipArchive; + + try + { + $zip->open($name, ZipArchive::CREATE); + utils::recursive_zip_map($zip, $path, $path); + } + catch (Exception $e) + { + return ""; + } + finally + { + $zip->close(); + } + + return $name; + } } \ No newline at end of file diff --git a/libraries/utils.php b/libraries/utils.php index 7ade7c2..edcea09 100644 --- a/libraries/utils.php +++ b/libraries/utils.php @@ -17,7 +17,7 @@ class utils { if (is_dir($file)) { - recursive_zip_map($zip, $root, $file); + self::recursive_zip_map($zip, $root, $file); } else { @@ -26,15 +26,4 @@ class utils } } } - // $folder = $my_db[$beatmap_id]; - // $name = basename($folder) . ".osz"; - - // echo "Zipping " . $name; - - // $path = $collection_location . "/" . $name; - // $zip = new ZipArchive; - // $zip->open($path, ZipArchive::CREATE); - // echo "."; - - // recursive_zip_map($zip, $fol } \ No newline at end of file diff --git a/macska.jpg b/macska.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4be5ef64ad2108cee1f5766af0ca660026f75701 GIT binary patch literal 9453 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 xKX@!1s^vBa4TI5$)8(LriE~ba)e*n!Ax_kft literal 0 HcmV?d00001 diff --git a/main.php b/main.php index b314ee4..23600de 100644 --- a/main.php +++ b/main.php @@ -45,6 +45,13 @@ if ($display == "main") redirect("./"); } + if (isset($_GET["repack"]) && !empty($_GET["key"])) + { + $key = $_GET["key"]; + $dl = @optimizer::repack($lib, $key); + redirect("./" . $dl); + } + if (isset($_GET["blacken"])) { @optimizer::blacken_backgrounds($lib); diff --git a/templates/main-browser-script.js b/templates/main-browser-script.js index d5ff95e..52c7c1e 100644 --- a/templates/main-browser-script.js +++ b/templates/main-browser-script.js @@ -1,30 +1,86 @@ var xmlhttp = new XMLHttpRequest(); var page = 1; -var url = "./splitter.php?format=json&page=" + page.toString(); +var url = "./splitter.php?format=json&page="; +updateBrowser(); + xmlhttp.onreadystatechange = function() { // done & success if (this.readyState == 4 && this.status == 200) { var result = JSON.parse(this.responseText); - alert(result); changeBrowser(result); } }; -xmlhttp.open("GET", url, true); -xmlhttp.send(); +function requestPage(uri) { + xmlhttp.open("GET", uri, true); + xmlhttp.send(); +} + +function updateBrowser() { + requestPage(url + page.toString()); +} + + + +function prevPage() { + page -= 1; + if (page < 0) page = 0; + updateBrowser(); +} + +function nextPage() { + page += 1; + updateBrowser(); +} function changeBrowser(mapsets) { var browser = document.getElementById("browser"); - var output = ""; + var output = "
Page " + page.toString() + "
"; - var template = "

{{ MAP_TITLE }}

"; - for (var beatmap of mapsets.entries) + var mapsetTemplate = `{{ MAIN_BROWSER_TEMPLATE_MAPSET }}`; + var template = `{{ MAIN_BROWSER_TEMPLATE_DIFFICULTY }}`; + for (var mapsetKey of Object.keys(mapsets)) { - output += template.replaceAll(/\{\{ MAP_TITLE \}\}/g, beatmap.Metadata.Title); + var mapset = mapsets[mapsetKey]; + var subOutput = ""; + var summary = true; + + for (var beatmapKey of Object.keys(mapset.difficulties)) + { + var beatmap = mapset.difficulties[beatmapKey]; + + if (beatmap.Metadata && beatmap.Metadata.Title) + { + var path = mapset.path.toString() + "/" + beatmap.background.toString(); + path = encodeURI(path); + path = path.replaceAll(/\+/g, "%2b"); + line = template; + line = line.replaceAll(/\{\{ MAP_TITLE \}\}/g, beatmap.Metadata.Title); + line = line.replaceAll(/\{\{ MAP_ARTIST \}\}/g, beatmap.Metadata.Artist); + line = line.replaceAll(/\{\{ MAP_MAPPER \}\}/g, beatmap.Metadata.Creator); + line = line.replaceAll(/\{\{ MAP_DIFFICULTY \}\}/g, beatmap.Metadata.Version); + line = line.replaceAll(/\{\{ MAP_IMAGE \}\}/g, "./proxy.php?path=" + path); + + if (summary) + { + summary = false; + line = "" + line + ""; + } + + subOutput += line; + } + } + + var uriSafeKey = mapset.key; + uriSafeKey = encodeURI(uriSafeKey); + uriSafeKey = uriSafeKey.replaceAll(/\+/g, "%2b"); + subOutput = mapsetTemplate.replaceAll(/\{\{ MAP_DIFFICULTIES \}\}/g, subOutput); + subOutput = subOutput.replaceAll(/\{\{ MAPSET_KEY \}\}/g, uriSafeKey); + output += subOutput; } browser.innerHTML = output; -} +} \ No newline at end of file diff --git a/templates/main-browser-template-difficulty.html b/templates/main-browser-template-difficulty.html new file mode 100644 index 0000000..5e6beda --- /dev/null +++ b/templates/main-browser-template-difficulty.html @@ -0,0 +1,11 @@ +
+
+ +
+
+

\{\{ MAP_TITLE \}\}

+

\{\{ MAP_ARTIST \}\}

+

\{\{ MAP_MAPPER \}\}

+

\{\{ MAP_DIFFICULTY \}\}

+
+
\ No newline at end of file diff --git a/templates/main-browser-template-mapset.html b/templates/main-browser-template-mapset.html new file mode 100644 index 0000000..5c68140 --- /dev/null +++ b/templates/main-browser-template-mapset.html @@ -0,0 +1,6 @@ +
+
+ \{\{ MAP_DIFFICULTIES \}\} +
+ REPACK +
\ No newline at end of file diff --git a/templates/main.html b/templates/main.html index 868ea7b..1f42bcc 100644 --- a/templates/main.html +++ b/templates/main.html @@ -15,7 +15,9 @@
{{ MAIN_OPTIONS }}
-

Browser

+

Browser

+ [ Previous ]   + [ Next ]
diff --git a/templates/style.css b/templates/style.css index 77676e9..82fd53f 100644 --- a/templates/style.css +++ b/templates/style.css @@ -11,9 +11,10 @@ html { margin: 5px 0; padding: 10px; } -a:link, a:hover, a:active, a:visited { +a, a:link, a:hover, a:active, a:visited { color: HotPink; text-decoration: inherit; + cursor:pointer; } .small-background { max-height: 100px; @@ -64,4 +65,49 @@ a:link, a:hover, a:active, a:visited { .main-item>h2, .main-item>h3 { margin: 5px; padding: 5px; +} +.map { + border: 1px solid white; + padding: 10px; + margin: 5px; +} + +.map p { + margin: 0; + padding: 0; +} +.map-title { + font-weight: bold; +} +.map-artist, .map-mapper { + display: inline-block; +} +.map-artist::after { + content: ' /'; +} +.map-mapper::before { + content: '/ '; +} +.map>div { + display: inline-block; +} +.map-image img { + max-height: 64px; + max-width: 64px; +} +.map-details { + display: inline-block; + vertical-align: top; + margin-left: 10px; +} +details.mapset summary::-webkit-details-marker { + display:none; +} + +.mapset[open] .map { + background-color: #333333; +} + +.mapset[open] summary .map { + background-color: #444444; } \ No newline at end of file