From 6f7df5b7ff9becbd2ebd97f4c1e43826d90a07e6 Mon Sep 17 00:00:00 2001 From: 544146 Date: Sun, 1 Oct 2023 00:01:37 +0100 Subject: [PATCH] More songs --- fs2dd.py | 1 + resources/drs/README.md | 51 +- resources/drs/datax/music/00298/songs.json | 2 +- s3p_unpack.py | 44 + .../BANG BANG BANG/difficulty_1a.json | 6354 ++++++++ .../difficulty_1a_blockless.json | 5205 ++++++ .../BANG BANG BANG/difficulty_1b.json | 3874 +++++ .../difficulty_1b_blockless.json | 3201 ++++ .../BANG BANG BANG/info.json | 27 + .../Break Free ftZedd/difficulty_1a.json | 5126 ++++++ .../difficulty_1a_blockless.json | 4929 ++++++ .../Break Free ftZedd/difficulty_1b.json | 3054 ++++ .../difficulty_1b_blockless.json | 2829 ++++ .../Break Free ftZedd/info.json | 27 + .../LADY/difficulty_1a.json | 5855 +++++++ .../LADY/difficulty_1a_blockless.json | 5014 ++++++ .../LADY/difficulty_1b.json | 2560 +++ .../LADY/difficulty_1b_blockless.json | 2195 +++ .../LADY/info.json | 27 + .../MEGA SHAKE IT/difficulty_1a.json | 13503 ++++++++++++++++ .../difficulty_1a_blockless.json | 12354 ++++++++++++++ .../MEGA SHAKE IT/difficulty_1b.json | 4936 ++++++ .../difficulty_1b_blockless.json | 4375 +++++ .../MEGA SHAKE IT/info.json | 27 + .../PERFECT HUMAN/difficulty_1a.json | 534 +- .../difficulty_1a_blockless.json | 506 +- .../PERFECT HUMAN/difficulty_1b.json | 354 +- .../difficulty_1b_blockless.json | 306 +- .../POP TEAM EPIC/difficulty_1a.json | 5565 +++++++ .../difficulty_1a_blockless.json | 4892 ++++++ .../POP TEAM EPIC/difficulty_1b.json | 3888 +++++ .../difficulty_1b_blockless.json | 3327 ++++ .../POP TEAM EPIC/info.json | 27 + .../Revolution/difficulty_1a.json | 832 +- .../Revolution/difficulty_1a_blockless.json | 788 +- .../Revolution/difficulty_1b.json | 334 +- .../Revolution/difficulty_1b_blockless.json | 332 +- .../SKYs the limit/difficulty_1a.json | 6543 ++++++++ .../difficulty_1a_blockless.json | 6094 +++++++ .../SKYs the limit/difficulty_1b.json | 3598 ++++ .../difficulty_1b_blockless.json | 3205 ++++ .../SKYs the limit/info.json | 27 + .../Sakura Sunrise/difficulty_1a.json | 494 +- .../difficulty_1a_blockless.json | 432 +- .../Sakura Sunrise/difficulty_1b.json | 270 +- .../difficulty_1b_blockless.json | 246 +- .../Summer Venus/difficulty_1a.json | 5632 +++++++ .../Summer Venus/difficulty_1a_blockless.json | 5267 ++++++ .../Summer Venus/difficulty_1b.json | 3112 ++++ .../Summer Venus/difficulty_1b_blockless.json | 2663 +++ .../Summer Venus/info.json | 27 + .../USA ANOTHER EDITION/difficulty_1a.json | 8665 ++++++++++ .../difficulty_1a_blockless.json | 7992 +++++++++ .../USA ANOTHER EDITION/difficulty_1b.json | 4672 ++++++ .../difficulty_1b_blockless.json | 4223 +++++ .../USA ANOTHER EDITION/info.json | 27 + .../What Do You Mean/difficulty_1a.json | 3838 +++++ .../difficulty_1a_blockless.json | 3529 ++++ .../What Do You Mean/difficulty_1b.json | 2846 ++++ .../difficulty_1b_blockless.json | 2537 +++ .../What Do You Mean/info.json | 27 + .../Without You/difficulty_1a.json | 6995 ++++++++ .../Without You/difficulty_1a_blockless.json | 5426 +++++++ .../Without You/difficulty_1b.json | 4778 ++++++ .../Without You/difficulty_1b_blockless.json | 4189 +++++ .../Without You/info.json | 27 + .../オンリーワンダー/difficulty_1a.json | 842 +- .../difficulty_1a_blockless.json | 780 +- .../オンリーワンダー/difficulty_1b.json | 380 +- .../difficulty_1b_blockless.json | 354 +- .../difficulty_1a.json | 5013 ++++++ .../difficulty_1a_blockless.json | 4172 +++++ .../difficulty_1b.json | 3160 ++++ .../difficulty_1b_blockless.json | 2851 ++++ .../サイレントマジョリティー/info.json | 27 + .../difficulty_1a.json | 7970 +++++++++ .../difficulty_1a_blockless.json | 6821 ++++++++ .../difficulty_1b.json | 4332 +++++ .../difficulty_1b_blockless.json | 3659 +++++ .../シュガーソングとビターステップ/info.json | 27 + .../制服のマネキン/difficulty_1a.json | 5539 +++++++ .../difficulty_1a_blockless.json | 4810 ++++++ .../制服のマネキン/difficulty_1b.json | 2873 ++++ .../difficulty_1b_blockless.json | 2592 +++ .../制服のマネキン/info.json | 27 + .../君と野獣/difficulty_1a.json | 462 +- .../君と野獣/difficulty_1a_blockless.json | 410 +- .../君と野獣/difficulty_1b.json | 336 +- .../君と野獣/difficulty_1b_blockless.json | 316 +- .../女々しくて/difficulty_1a.json | 598 +- .../女々しくて/difficulty_1a_blockless.json | 564 +- .../女々しくて/difficulty_1b.json | 404 +- .../女々しくて/difficulty_1b_blockless.json | 382 +- 93 files changed, 258704 insertions(+), 5633 deletions(-) create mode 100644 s3p_unpack.py create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/BANG BANG BANG/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/BANG BANG BANG/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/BANG BANG BANG/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/BANG BANG BANG/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/BANG BANG BANG/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Break Free ftZedd/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Break Free ftZedd/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Break Free ftZedd/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Break Free ftZedd/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Break Free ftZedd/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/LADY/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/LADY/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/LADY/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/LADY/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/LADY/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/MEGA SHAKE IT/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/MEGA SHAKE IT/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/MEGA SHAKE IT/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/MEGA SHAKE IT/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/MEGA SHAKE IT/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/POP TEAM EPIC/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/POP TEAM EPIC/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/POP TEAM EPIC/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/POP TEAM EPIC/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/POP TEAM EPIC/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/SKYs the limit/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/SKYs the limit/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/SKYs the limit/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/SKYs the limit/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/SKYs the limit/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Summer Venus/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Summer Venus/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Summer Venus/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Summer Venus/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Summer Venus/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/USA ANOTHER EDITION/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/USA ANOTHER EDITION/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/USA ANOTHER EDITION/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/USA ANOTHER EDITION/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/USA ANOTHER EDITION/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/What Do You Mean/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/What Do You Mean/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/What Do You Mean/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/What Do You Mean/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/What Do You Mean/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Without You/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Without You/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Without You/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Without You/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/Without You/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/サイレントマジョリティー/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/サイレントマジョリティー/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/サイレントマジョリティー/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/サイレントマジョリティー/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/サイレントマジョリティー/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/シュガーソングとビターステップ/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/シュガーソングとビターステップ/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/シュガーソングとビターステップ/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/シュガーソングとビターステップ/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/シュガーソングとビターステップ/info.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/制服のマネキン/difficulty_1a.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/制服のマネキン/difficulty_1a_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/制服のマネキン/difficulty_1b.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/制服のマネキン/difficulty_1b_blockless.json create mode 100644 tracks/DANCERUSH STARDOM (2022121400)/制服のマネキン/info.json diff --git a/fs2dd.py b/fs2dd.py index 1835d456..490f1245 100644 --- a/fs2dd.py +++ b/fs2dd.py @@ -152,6 +152,7 @@ def create_dd_tracks_from_fs(fs_map_dir: str) -> DDBeatMapInfoFile: create_ticks = yyyymmdd_to_ticks(datetime.now().strftime('%Y%m%d')) dd_beat_map_info = DDBeatMapInfoFile( + OstId=random_9_digit_int(), CreateTicks=create_ticks, CreateTime=str(create_ticks), BeatMapId=random_9_digit_int(), diff --git a/resources/drs/README.md b/resources/drs/README.md index 22bda97f..7d1e5acd 100644 --- a/resources/drs/README.md +++ b/resources/drs/README.md @@ -29,11 +29,54 @@ find . -type f -name "song.json" -exec rm -f {} \; ``` ```bash -# Find all M4A audio files in the current directory and its subdirectories, and convert them to ogg format using ffmpeg. -find . -type f -name "*.m4a" -exec sh -c 'ffmpeg -y -i "$1" "${1%.m4a}.ogg"' sh {} \; +# remove 10 seconds from all m4as and convert to ogg files +find . -type f -name "*.m4a" -exec sh -c 'DURATION=$(ffprobe -i "$0" -show_entries format=duration -v quiet -of csv="p=0"); TRIM_TIME=$(awk "BEGIN {print $DURATION - 10}"); ffmpeg -y -ss 0 -t $TRIM_TIME -i "$0" "${0%.m4a}.ogg"' {} \; ``` ```bash -# remove 10 seconds from all ogg files -find . -type f -name "*.m4a" -exec sh -c 'DURATION=$(ffprobe -i "$0" -show_entries format=duration -v quiet -of csv="p=0"); TRIM_TIME=$(awk "BEGIN {print $DURATION - 10}"); ffmpeg -ss 0 -t $TRIM_TIME -i "$0" "${0%.m4a}.ogg"' {} \; +#!/bin/bash +find . -type f -name "*.2dx" -exec sh -c ' + dir=$(dirname "$0") + filename=$(basename "$0") + file_without_extension="${filename%.*}" + + if echo "$filename" | grep -qE "clip|pre"; then + echo "Skipping $filename" + exit 0 + fi + + cd "$dir" || exit 1 + 2dxdump "$filename" + ffmpeg -y -i "0.wav" "${file_without_extension}clip1.ogg" +' {} \; ``` + +```bash +find . -type f -name "1.wav" -exec rm -f {} \; +``` + +```bash +#!/bin/bash +find . -type f -name "*.s3p" -exec sh -c ' + dir=$(dirname "$0") + filename=$(basename "$0") + file_without_extension="${filename%.*}" + + output_file="${file_without_extension}clip1.ogg" + + if echo "$filename" | grep -qE "clip|pre"; then + echo "Skipping $filename" + exit 0 + fi + + cd "$dir" || exit 1 + if [ -f "$output_file" ]; then + echo "Skipping as $output_file already exists." + exit 0 + fi + + # uhh yea deal with it lol + ../../../../../.venv/Scripts/python ../../../../../s3p_unpack.py --input "$filename" + ffmpeg -y -i "0.wma" "$output_file" +' {} \; +``` \ No newline at end of file diff --git a/resources/drs/datax/music/00298/songs.json b/resources/drs/datax/music/00298/songs.json index 293899dc..2e54bca8 100644 --- a/resources/drs/datax/music/00298/songs.json +++ b/resources/drs/datax/music/00298/songs.json @@ -1,4 +1,4 @@ -{ + { "song_id": 298, "difficulties": { "difficulty_1a": { diff --git a/s3p_unpack.py b/s3p_unpack.py new file mode 100644 index 00000000..32999f8a --- /dev/null +++ b/s3p_unpack.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +import argparse +import os +import struct + + +def get_s3v0_header(file): + header = {} + magic = file.read(4) + if magic != b'S3V0': + raise ValueError('Invalid S3V0 magic') + + header['size'], header['original_size'], header['data_hash'] = struct.unpack( + '