3.1 KiB
3.1 KiB
Process for Uploading Charts
- Find a bms bundle/zip ie.
p_stands_for_party_newbga_ogg.zip
- Upload zip to BackBlaze B2 storage bucket
- Open the admin dashboard for bms-repository
- Unzip the bms bundle/zip on your local machine
- For each bms file in the unzipped folder:
- Copy the zip friendly url from BackBlaze B2
- Create a new chart in the admin dashboard
- Paste the zip friendly url into the
resourceUri
field - Set the
md5
andsha256
fields to the md5 and sha256 of the bms file - Set the
name
field to the name of the chart + difficulty- ie.
"P" stands for "Party!" [Another]
- ie.
Script for generating chart JSON
Run in the freshly unzipped folder
#!/bin/bash
FILES=($(find . -name "*.bm*"));
JSON="["
for CHART in "${FILES[@]}"
do
MD5=$(md5sum "$CHART" | cut -d ' ' -f 1)
SHA256=$(sha256sum "$CHART" | cut -d ' ' -f 1)
TITLE=$(cat "$CHART" | grep "#TITLE" | sed -e s/^.*\#TITLE// | xargs | tr -d '\r')
UUID=$(uuidgen)
COMMENT="Extracted from $CHART"
JSON+=$(jq -n \
--arg chartId "$UUID" \
--arg md5 "$MD5" \
--arg sha256 "$SHA256" \
--arg name "$TITLE" \
--arg resourceUri "$1" \
--arg comment "$COMMENT" \
'. += $ARGS.named')
done
echo "$JSON]" | sed -e s/\}\{/},{/g | jq # Lazy, couldn't get JQ append working lol
First argument is the upload url
./export.sh https://example.com/zips/myzip.zip
While authenticated as an admin user, hit the bulk
endpoint with the generated JSON after confirming that it is valid.
curl --request POST \
--url https://<API_URL>/chart/admin/bulk \
--header 'Authorization: Bearer Token' \
--header 'Content-Type: application/json' \
--data '[
{
"chartId": "9923c511-355c-4ed8-9551-4b31fec45560",
"md5": "8d80d1732fa4c81dcbd4ddfd1673d949",
"sha256": "b796cdef4fa8865035d282be275cbda878203359c8ba630ac9ba619b52322346",
"name": "P stands for Party! [Hyper]",
"resourceUri": "https://f002.backblazeb2.com/file/bms-chart-storage-staging/p_stands_for_party_newbga_ogg.zip"
},
{
"chartId": "4684b205-d1d9-4bcc-ace3-47e044988ff0",
"md5": "b81eea46f8600fabab3e3f6bce2a2cc7",
"sha256": "806c56cbb413d390c84a8d49b9888fecaac4571d5a2337b450ec23f28b10c725",
"name": "P stands for Party! [Another]",
"resourceUri": "https://f002.backblazeb2.com/file/bms-chart-storage-staging/p_stands_for_party_newbga_ogg.zip"
},
{
"chartId": "ce9af400-4726-49ed-9ee2-13652bd98410",
"md5": "b963e1f212e3783cfd566b59b5cb472d",
"sha256": "17588424eea6479ed90dec7d7ffa1991bc049fd4c2ea218a1408f8febed64121",
"name": "P stands for Party! [Beginner]",
"resourceUri": "https://f002.backblazeb2.com/file/bms-chart-storage-staging/p_stands_for_party_newbga_ogg.zip"
},
{
"chartId": "9834898f-c0ba-4a4f-a0b9-ac701e8a6f3a",
"md5": "c6c5e5e20b53983ba59252ddcc205b5b",
"sha256": "a60bdb0e6d2cd9d54c53decc33932b2eee7cd15966e0dd0666c368ff58070a3a",
"name": "P stands for Party! [Normal]",
"resourceUri": "https://f002.backblazeb2.com/file/bms-chart-storage-staging/p_stands_for_party_newbga_ogg.zip"
}
]'