diff --git a/Cargo.lock b/Cargo.lock index 83be1a3..02346d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,15 +42,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "aligned-array" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c92d086290f52938013f6242ac62bf7d401fab8ad36798a609faa65c3fd2c" -dependencies = [ - "generic-array", -] - [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -368,7 +359,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -383,54 +374,37 @@ dependencies = [ [[package]] name = "compio" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713c6293af093c202ad318e8f7bdc1de1a36d7a793bb77f7fc6bd6f1788659a9" +checksum = "362c95e8e1a569b50b7e6642156eccd3678f03b4afa59834f18fad8af5649587" dependencies = [ "compio-buf", - "compio-dispatcher", "compio-driver", "compio-fs", "compio-io", "compio-log", "compio-macros", "compio-net", - "compio-process", - "compio-quic", "compio-runtime", - "compio-signal", ] [[package]] name = "compio-buf" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce94a45a47ef8c0e3f44084fe67c8effc25e7ac1de6de2ee1a29a59e6c6ba8e" +checksum = "5881ed3b06004d5e505746e6780dbbaf76fc508201e57bb5c84fcb4d69b8c23e" dependencies = [ "arrayvec", "bytes", "libc", ] -[[package]] -name = "compio-dispatcher" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cdf8c613be826be410d8744ab30acc49cc5134a78e2aa25efae9efa44bed6a7" -dependencies = [ - "compio-driver", - "compio-runtime", - "flume", - "futures-channel", -] - [[package]] name = "compio-driver" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea757a5a1be2c2613f298a4ca703958251ff34bfdb803d78d55d01f48fae249" +checksum = "3c15d472da8b8f80cc8068b030fb439dc1cb300ffdf9041a054d226ea3825f1d" dependencies = [ - "aligned-array", "cfg-if", "cfg_aliases", "compio-buf", @@ -445,15 +419,15 @@ dependencies = [ "paste", "polling", "slab", - "socket2", - "windows-sys 0.52.0", + "socket2 0.6.0", + "windows-sys 0.61.0", ] [[package]] name = "compio-fs" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bcf65e631d521c666bca25595f8e5c78173e96f0b3b61f0a7d93f31d9661d32" +checksum = "ea585c274239b9fd350a484c75a31fd0df5f031805b6664d83a98f5e8b019e2f" dependencies = [ "cfg-if", "cfg_aliases", @@ -464,14 +438,14 @@ dependencies = [ "libc", "os_pipe", "widestring", - "windows-sys 0.52.0", + "windows-sys 0.61.0", ] [[package]] name = "compio-io" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2b05cc4142659f2c90b6e44c68568ff71c83c6fb9285aca686952250b914932" +checksum = "11d44edc43b3d69badbe7d398e61b5910b90aba580eae1ba3a821b11e2daf249" dependencies = [ "compio-buf", "futures-util", @@ -501,9 +475,9 @@ dependencies = [ [[package]] name = "compio-net" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c1fabe3393bc0c3a0dca8e99a35bf97e42caa12bb3cc6bba83df04e28c9c142" +checksum = "2e6ea7aa4a9f38d68dd0098a11232236cb3efd0ef3cab50ecdada3d745f1f776" dependencies = [ "cfg-if", "compio-buf", @@ -513,83 +487,30 @@ dependencies = [ "either", "libc", "once_cell", - "socket2", + "socket2 0.6.0", "widestring", - "windows-sys 0.52.0", -] - -[[package]] -name = "compio-process" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3867cfe7b23eaae89ff815aba4fdde61cb6fd55f81fd368128300c6b7e645016" -dependencies = [ - "cfg-if", - "compio-buf", - "compio-driver", - "compio-io", - "compio-runtime", - "futures-util", - "windows-sys 0.52.0", -] - -[[package]] -name = "compio-quic" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f107e044329f1e171930801b09bfc6e764c5e171e45c7a3e382f98561da619a" -dependencies = [ - "cfg_aliases", - "compio-buf", - "compio-io", - "compio-log", - "compio-net", - "compio-runtime", - "flume", - "futures-util", - "libc", - "quinn-proto", - "rustc-hash", - "rustls", - "thiserror 2.0.12", - "windows-sys 0.52.0", + "windows-sys 0.61.0", ] [[package]] name = "compio-runtime" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7df559e87b7ab05ba61c32619f6076dd5cc2daf5a8cb30cb9931fb355d20aff" +checksum = "b49f9c5ede8b9f18888f304ed3d01c9406d38a4877ff742b5326724341fe1970" dependencies = [ "async-task", "cfg-if", "compio-buf", "compio-driver", "compio-log", + "core_affinity", "crossbeam-queue", "futures-util", "libc", "once_cell", "scoped-tls", - "slab", - "socket2", - "windows-sys 0.52.0", -] - -[[package]] -name = "compio-signal" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d2931880b03b33d4df7d2b8a008e93731366d185358c7442fc8d24d5f9c1bd" -dependencies = [ - "compio-buf", - "compio-driver", - "compio-runtime", - "libc", - "once_cell", - "os_pipe", - "slab", - "windows-sys 0.52.0", + "socket2 0.6.0", + "windows-sys 0.61.0", ] [[package]] @@ -633,6 +554,17 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core_affinity" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a034b3a7b624016c6e13f5df875747cc25f884156aad2abd12b6c46797971342" +dependencies = [ + "libc", + "num_cpus", + "winapi", +] + [[package]] name = "cpufeatures" version = "0.2.17" @@ -732,7 +664,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "socket2", + "socket2 0.5.10", "windows-sys 0.59.0", ] @@ -821,18 +753,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "flume" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "spin", -] - [[package]] name = "futures-channel" version = "0.3.31" @@ -909,10 +829,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -922,11 +840,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", - "wasm-bindgen", ] [[package]] @@ -1213,12 +1129,6 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - [[package]] name = "lz4_flex" version = "0.11.5" @@ -1277,15 +1187,6 @@ dependencies = [ "spdlog-rs", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.16", -] - [[package]] name = "nix" version = "0.30.1" @@ -1382,6 +1283,16 @@ dependencies = [ "libm", ] +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "nyquest" version = "0.3.0" @@ -1572,9 +1483,9 @@ checksum = "63eceb7b5d757011a87d08eb2123db15d87fb0c281f65d101ce30a1e96c3ad5c" [[package]] name = "palc" -version = "0.0.1" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42766a89de3dda844299845bbdac37fcfc50e3fb14557be4f8c8ceb54bdceb6a" +checksum = "5aec926238fe280c9d5ad6162851511ba1cf55baec4b24cd48a66a18d811bb4d" dependencies = [ "os_str_bytes", "palc-derive", @@ -1583,9 +1494,9 @@ dependencies = [ [[package]] name = "palc-derive" -version = "0.0.1" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "204d235b8dffce6ea58c4df57a1ceb1ddf4c366fc4daac40a39aed52385ab8a9" +checksum = "c6ad802ed8080f568aa68b6fc6047f80264a6723efc0f11436f639b16a3c8bd0" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1676,15 +1587,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - [[package]] name = "proc-macro-crate" version = "3.3.0" @@ -1703,26 +1605,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "quinn-proto" -version = "0.11.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" -dependencies = [ - "bytes", - "getrandom 0.3.3", - "lru-slab", - "rand", - "ring", - "rustc-hash", - "rustls-pki-types", - "slab", - "thiserror 2.0.12", - "tinyvec", - "tracing", - "web-time", -] - [[package]] name = "quote" version = "1.0.40" @@ -1738,40 +1620,11 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" -[[package]] -name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.3", -] - [[package]] name = "redb" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fefa3e5ff4a369819c3d6df4195873d6f9abad109f13c0d505dbe119cfabb10" +checksum = "afb1bfd2a09cb3c362dd10ea63427315cf3c79a84feb279394509981c4a3a91c" dependencies = [ "libc", ] @@ -1796,20 +1649,6 @@ dependencies = [ "syn 2.0.104", ] -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.16", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - [[package]] name = "rust_decimal" version = "1.37.2" @@ -1867,40 +1706,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "rustls" -version = "0.23.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" -dependencies = [ - "once_cell", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pki-types" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - [[package]] name = "rustversion" version = "1.0.22" @@ -1969,6 +1774,7 @@ dependencies = [ "crabtime", "ctrlc", "futures-util", + "music-db", "nyquest-preset", "palc", "parquet", @@ -1997,18 +1803,28 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.226" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.226" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33" dependencies = [ "proc-macro2", "quote", @@ -2017,14 +1833,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.142" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -2056,9 +1873,9 @@ checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "snafu" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627" +checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" dependencies = [ "backtrace", "snafu-derive", @@ -2066,9 +1883,9 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7" +checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -2092,6 +1909,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spdlog-internal" version = "0.1.0" @@ -2197,12 +2024,6 @@ dependencies = [ "syn 2.0.104", ] -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - [[package]] name = "syn" version = "1.0.109" @@ -2285,21 +2106,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "tinyvec" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.47.1" @@ -2382,9 +2188,6 @@ name = "tracing-core" version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" -dependencies = [ - "once_cell", -] [[package]] name = "twox-hash" @@ -2404,12 +2207,6 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - [[package]] name = "unty" version = "0.0.4" @@ -2507,16 +2304,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "widestring" version = "1.2.0" @@ -2554,7 +2341,7 @@ dependencies = [ "windows-collections", "windows-core", "windows-future", - "windows-link", + "windows-link 0.1.3", "windows-numerics", ] @@ -2575,7 +2362,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.1.3", "windows-result", "windows-strings", ] @@ -2587,7 +2374,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core", - "windows-link", + "windows-link 0.1.3", "windows-threading", ] @@ -2619,6 +2406,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + [[package]] name = "windows-numerics" version = "0.2.0" @@ -2626,7 +2419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ "windows-core", - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -2635,7 +2428,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -2644,7 +2437,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -2674,6 +2467,15 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "windows-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link 0.2.0", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -2696,7 +2498,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -2713,7 +2515,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -2850,12 +2652,6 @@ dependencies = [ "syn 2.0.104", ] -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - [[package]] name = "zlib-rs" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 3b518ea..6ec44ff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,13 +12,13 @@ spdlog-rs = { version = "0.4.3", default-features = false, features = [ "release-level-info", ] } -snafu = { version = "0.8.6", features = ["backtrace", "rust_1_81"] } -serde = { version = "1.0.219", features = ["derive"] } -serde_json = "1.0.141" +snafu = { version = "0.8.9", features = ["backtrace", "rust_1_81"] } +serde = { version = "1.0.226", features = ["derive"] } +serde_json = "1.0.145" strum = { version = "0.27.2", features = ["derive"] } tokio = { version = "1.47.1", features = ["rt-multi-thread"] } -compio = { version = "0.15.0", features = ["runtime"] } -redb = "3.0.1" +compio = { version = "0.16.0", features = ["runtime"] } +redb = "3.0.2" crabtime = { git = "https://github.com/wdanilo/crabtime.git", rev = "2ed856f5" } parquet = "56.0.0" diff --git a/music_db/src/musicDB.json b/music_db/src/musicDB.json index 4e8acf2..9f65beb 100644 --- a/music_db/src/musicDB.json +++ b/music_db/src/musicDB.json @@ -17049,6 +17049,29 @@ } ] }, + { + "id": 854, + "name": "全世界共通リズム感テスト", + "version": 5, + "levels": [ + { + "level": 0, + "difficulty": "6.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "10.0" + }, + { + "level": 3, + "difficulty": "12.0" + } + ] + }, { "id": 900, "name": "有ME就好", @@ -17359,6 +17382,52 @@ } ] }, + { + "id": 1736, + "name": "プリズム△▽リズム", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.5" + }, + { + "level": 3, + "difficulty": "13.2" + } + ] + }, + { + "id": 1819, + "name": "AFTER PANDORA", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "12.5" + }, + { + "level": 3, + "difficulty": "14.2" + } + ] + }, { "id": 10021, "name": "コネクト", @@ -17386,6 +17455,29 @@ } ] }, + { + "id": 10030, + "name": "ネコ日和。", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.5" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, { "id": 10044, "name": "ハッピーシンセサイザ", @@ -17616,6 +17708,29 @@ } ] }, + { + "id": 10187, + "name": "ローリンガール", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "10.9" + }, + { + "level": 3, + "difficulty": "13.3" + } + ] + }, { "id": 10188, "name": "天ノ弱", @@ -17708,6 +17823,29 @@ } ] }, + { + "id": 10199, + "name": "チルノのパーフェクトさんすう教室", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, { "id": 10202, "name": "Grip & Break down !!", @@ -17938,6 +18076,29 @@ } ] }, + { + "id": 10303, + "name": "Endless, Sleepless Night", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "10.7" + }, + { + "level": 3, + "difficulty": "13.3" + } + ] + }, { "id": 10315, "name": "深海少女", @@ -18053,6 +18214,29 @@ } ] }, + { + "id": 10367, + "name": "Dragoon", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "11.0" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, { "id": 10375, "name": "One Step Ahead", @@ -18697,6 +18881,29 @@ } ] }, + { + "id": 10835, + "name": "Believe the Rainbow", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.2" + }, + { + "level": 2, + "difficulty": "9.9" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, { "id": 11001, "name": "BLACK ROSE", @@ -36431,6 +36638,263 @@ } ] }, + { + "id": 11810, + "name": "ATLAS RUSH", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "5.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "12.6" + }, + { + "level": 3, + "difficulty": "14.7" + } + ] + }, + { + "id": 11811, + "name": "概して過誤", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "10.8" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, + { + "id": 11812, + "name": "Unfinished Epic", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "5.0" + }, + { + "level": 1, + "difficulty": "8.7" + }, + { + "level": 2, + "difficulty": "11.5" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11813, + "name": "忙シー日", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.9" + }, + { + "level": 2, + "difficulty": "11.8" + }, + { + "level": 3, + "difficulty": "14.2" + } + ] + }, + { + "id": 11814, + "name": "FLΛME/FRΦST", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "5.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "12.9" + }, + { + "level": 3, + "difficulty": "14.8" + } + ] + }, + { + "id": 11815, + "name": "IMBRUED:FLUX", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "11.0" + }, + { + "level": 3, + "difficulty": "14.1" + } + ] + }, + { + "id": 11816, + "name": "砂の函", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.2" + }, + { + "level": 2, + "difficulty": "11.2" + }, + { + "level": 3, + "difficulty": "14.0" + } + ] + }, + { + "id": 11817, + "name": "Amereistr", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "5.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "12.5" + }, + { + "level": 3, + "difficulty": "13.9" + } + ] + }, + { + "id": 11818, + "name": "World's end BLACKBOX", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "7.8" + }, + { + "level": 1, + "difficulty": "10.5" + }, + { + "level": 2, + "difficulty": "13.1" + }, + { + "level": 3, + "difficulty": "14.9" + } + ] + }, + { + "id": 11820, + "name": "Xaleid◆scopiX", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "7.9" + }, + { + "level": 1, + "difficulty": "11.0" + }, + { + "level": 2, + "difficulty": "13.7" + }, + { + "level": 3, + "difficulty": "14.9" + }, + { + "level": 4, + "difficulty": "15.0" + } + ] + }, + { + "id": 11821, + "name": "Ref:rain (for 7th Heaven)", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "12.5" + }, + { + "level": 3, + "difficulty": "14.0" + } + ] + }, { "id": 11822, "name": "Supersonic Generation", @@ -36477,6 +36941,167 @@ } ] }, + { + "id": 11824, + "name": "なんかノイズにきこえる", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.5" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, + { + "id": 11825, + "name": "JIGOKU STATION CENTRAL GATE", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "11.4" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11826, + "name": "Lover's Trick", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.0" + }, + { + "level": 2, + "difficulty": "10.8" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, + { + "id": 11827, + "name": "サウンドプレイヤー", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.0" + }, + { + "level": 2, + "difficulty": "10.0" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, + { + "id": 11828, + "name": "crazy (about you)", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.0" + }, + { + "level": 2, + "difficulty": "10.8" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11829, + "name": "Drivessover", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "12.2" + }, + { + "level": 3, + "difficulty": "13.6" + } + ] + }, + { + "id": 11830, + "name": "Tidal Wave", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "12.3" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, { "id": 11831, "name": "きゅびずむ", @@ -36765,6 +37390,1287 @@ } ] }, + { + "id": 11843, + "name": "もういいよ", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.0" + }, + { + "level": 2, + "difficulty": "9.8" + }, + { + "level": 3, + "difficulty": "13.1" + } + ] + }, + { + "id": 11844, + "name": "モエチャッカファイア", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.7" + }, + { + "level": 2, + "difficulty": "10.5" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11845, + "name": "マヌルネコのうた", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.0" + }, + { + "level": 2, + "difficulty": "9.8" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, + { + "id": 11846, + "name": "スナネコのうた", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.0" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "13.4" + } + ] + }, + { + "id": 11847, + "name": "M@GICAL☆CURE! LOVE ♥ SHOT!", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "11.2" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, + { + "id": 11848, + "name": "Overjoy ★ OVERDOSE!!", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "11.0" + }, + { + "level": 3, + "difficulty": "14.1" + } + ] + }, + { + "id": 11849, + "name": "DATAERR0R", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "5.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "11.7" + }, + { + "level": 3, + "difficulty": "14.0" + } + ] + }, + { + "id": 11850, + "name": "あいたい星人", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.2" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "13.2" + } + ] + }, + { + "id": 11851, + "name": "ハオ", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.0" + }, + { + "level": 2, + "difficulty": "10.0" + }, + { + "level": 3, + "difficulty": "13.2" + } + ] + }, + { + "id": 11852, + "name": "好きな惣菜発表ドラゴン", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.5" + }, + { + "level": 3, + "difficulty": "12.5" + } + ] + }, + { + "id": 11853, + "name": "Help me, ERINNNNNN!!", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "10.7" + }, + { + "level": 3, + "difficulty": "13.3" + } + ] + }, + { + "id": 11854, + "name": "超最終鬼畜妹フランドール・S", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "5.0" + }, + { + "level": 1, + "difficulty": "8.2" + }, + { + "level": 2, + "difficulty": "12.6" + }, + { + "level": 3, + "difficulty": "13.9" + } + ] + }, + { + "id": 11855, + "name": "Destined Marionette", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "8.2" + }, + { + "level": 2, + "difficulty": "12.5" + }, + { + "level": 3, + "difficulty": "14.2" + } + ] + }, + { + "id": 11856, + "name": "MIRA", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.0" + }, + { + "level": 2, + "difficulty": "9.5" + }, + { + "level": 3, + "difficulty": "12.9" + } + ] + }, + { + "id": 11857, + "name": "空回りライブラリ", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "12.8" + } + ] + }, + { + "id": 11858, + "name": "お呪い", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.2" + }, + { + "level": 2, + "difficulty": "10.2" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, + { + "id": 11859, + "name": "ありきたりな恋の歌", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.5" + }, + { + "level": 2, + "difficulty": "10.5" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11860, + "name": "MYTH Re:LEASE", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "6.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "12.9" + }, + { + "level": 3, + "difficulty": "14.5" + } + ] + }, + { + "id": 11861, + "name": "∀", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "6.0" + }, + { + "level": 1, + "difficulty": "8.2" + }, + { + "level": 2, + "difficulty": "11.9" + }, + { + "level": 3, + "difficulty": "14.2" + } + ] + }, + { + "id": 11862, + "name": "㋰責任集合体", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.5" + }, + { + "level": 2, + "difficulty": "9.8" + }, + { + "level": 3, + "difficulty": "13.5" + } + ] + }, + { + "id": 11863, + "name": "三日月ステップ 2023", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "10.0" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, + { + "id": 11864, + "name": "少女レイ", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.9" + }, + { + "level": 3, + "difficulty": "12.9" + } + ] + }, + { + "id": 11865, + "name": "少女A", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.2" + }, + { + "level": 2, + "difficulty": "9.9" + }, + { + "level": 3, + "difficulty": "13.3" + } + ] + }, + { + "id": 11866, + "name": "帝国少女", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.0" + }, + { + "level": 2, + "difficulty": "9.2" + }, + { + "level": 3, + "difficulty": "13.3" + } + ] + }, + { + "id": 11867, + "name": "うぇいびー", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "10.5" + }, + { + "level": 3, + "difficulty": "13.0" + }, + { + "level": 4, + "difficulty": "13.7" + } + ] + }, + { + "id": 11868, + "name": "RED", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "13.3" + } + ] + }, + { + "id": 11869, + "name": "ホラフキパペット", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "10.8" + }, + { + "level": 3, + "difficulty": "13.6" + } + ] + }, + { + "id": 11870, + "name": "BlackFlagBreaker!!", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "11.0" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11871, + "name": "クーネル・エンゲイザー", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.0" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "12.8" + } + ] + }, + { + "id": 11872, + "name": "ゼロトーキング", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.0" + }, + { + "level": 2, + "difficulty": "9.8" + }, + { + "level": 3, + "difficulty": "13.2" + } + ] + }, + { + "id": 11873, + "name": "抜錨", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.7" + }, + { + "level": 2, + "difficulty": "10.7" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, + { + "id": 11874, + "name": "NO ONE YES MAN", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "12.0" + }, + { + "level": 3, + "difficulty": "13.9" + } + ] + }, + { + "id": 11875, + "name": "Leave All Behind", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.8" + }, + { + "level": 2, + "difficulty": "11.2" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11876, + "name": "Retribution ~ Cycle of Redemption ~", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "6.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "13.0" + }, + { + "level": 3, + "difficulty": "14.4" + } + ] + }, + { + "id": 11877, + "name": "Luminescence", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.6" + }, + { + "level": 2, + "difficulty": "11.2" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11878, + "name": "Pixel Galaxy", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.4" + }, + { + "level": 2, + "difficulty": "9.9" + }, + { + "level": 3, + "difficulty": "13.1" + } + ] + }, + { + "id": 11879, + "name": "Xaleid◆scopiX (2)", + "version": 24, + "levels": [ + { + "level": 0, + "difficulty": "7.9" + }, + { + "level": 1, + "difficulty": "11.0" + }, + { + "level": 2, + "difficulty": "13.7" + }, + { + "level": 3, + "difficulty": "14.9" + } + ] + }, + { + "id": 11880, + "name": "CiRCLE CAMPAiGN", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "11.0" + }, + { + "level": 3, + "difficulty": "13.7" + } + ] + }, + { + "id": 11881, + "name": "Magical Paradox", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "5.0" + }, + { + "level": 1, + "difficulty": "8.5" + }, + { + "level": 2, + "difficulty": "11.7" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11882, + "name": "殿ッ!?ご乱心!?", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "6.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "12.7" + }, + { + "level": 3, + "difficulty": "14.2" + } + ] + }, + { + "id": 11899, + "name": "イーヴィルガール", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.8" + }, + { + "level": 2, + "difficulty": "11.2" + }, + { + "level": 3, + "difficulty": "13.8" + } + ] + }, + { + "id": 11900, + "name": "Dazzle hop", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "6.0" + }, + { + "level": 1, + "difficulty": "9.0" + }, + { + "level": 2, + "difficulty": "12.8" + }, + { + "level": 3, + "difficulty": "14.2" + } + ] + }, + { + "id": 11906, + "name": "Unwelcome School", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.2" + }, + { + "level": 2, + "difficulty": "10.7" + }, + { + "level": 3, + "difficulty": "12.2" + }, + { + "level": 4, + "difficulty": "14.0" + } + ] + }, + { + "id": 11907, + "name": "彩りキャンバス", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "10.2" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, + { + "id": 11908, + "name": "死ぬな!", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.5" + }, + { + "level": 2, + "difficulty": "9.8" + }, + { + "level": 3, + "difficulty": "13.3" + } + ] + }, + { + "id": 11909, + "name": "どんぐりGAME", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "2.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "10.2" + }, + { + "level": 3, + "difficulty": "13.6" + } + ] + }, + { + "id": 11910, + "name": "君だったから", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.8" + }, + { + "level": 3, + "difficulty": "12.8" + } + ] + }, + { + "id": 11911, + "name": "Overdose", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "1.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "9.7" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, + { + "id": 11912, + "name": "Bring it on", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.5" + }, + { + "level": 2, + "difficulty": "10.2" + }, + { + "level": 3, + "difficulty": "13.4" + } + ] + }, + { + "id": 11913, + "name": "モニタリング", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "6.2" + }, + { + "level": 2, + "difficulty": "10.7" + }, + { + "level": 3, + "difficulty": "11.8" + }, + { + "level": 4, + "difficulty": "13.4" + } + ] + }, + { + "id": 11914, + "name": "テトリス", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.0" + }, + { + "level": 2, + "difficulty": "10.8" + }, + { + "level": 3, + "difficulty": "12.0" + }, + { + "level": 4, + "difficulty": "13.7" + } + ] + }, + { + "id": 11916, + "name": "有頂天ドリーマーズ", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.2" + }, + { + "level": 2, + "difficulty": "10.8" + }, + { + "level": 3, + "difficulty": "13.1" + } + ] + }, + { + "id": 11917, + "name": "Eureka", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "3.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "11.8" + }, + { + "level": 3, + "difficulty": "14.1" + } + ] + }, + { + "id": 11918, + "name": "ニルヴの心臓", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "6.0" + }, + { + "level": 1, + "difficulty": "8.0" + }, + { + "level": 2, + "difficulty": "12.7" + }, + { + "level": 3, + "difficulty": "14.3" + } + ] + }, + { + "id": 11951, + "name": "サイエンス", + "version": 25, + "levels": [ + { + "level": 0, + "difficulty": "4.0" + }, + { + "level": 1, + "difficulty": "7.7" + }, + { + "level": 2, + "difficulty": "10.0" + }, + { + "level": 3, + "difficulty": "13.0" + } + ] + }, { "id": 100017, "name": "[星]Future", @@ -36955,11 +38861,11 @@ { "id": 100207, "name": "[蛸]時空を超えて久しぶり!", - "version": 21, + "version": 25, "levels": [ { "level": 5, - "difficulty": "13.6" + "difficulty": "12.7" } ] }, @@ -37438,12 +39344,12 @@ }, { "id": 100851, - "name": "[宴]犬日和。(はっぴー歌唱Ver)", - "version": 21, + "name": "[幸]犬日和。(はっぴー歌唱Ver)", + "version": 24, "levels": [ { "level": 5, - "difficulty": "12.7" + "difficulty": "13.0" } ] }, @@ -37612,6 +39518,17 @@ } ] }, + { + "id": 110781, + "name": "[協]Seyana. ~何でも言うことを聞いてくれるアカネチャン~", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "13.0" + } + ] + }, { "id": 110793, "name": "[疑]ロキ", @@ -37623,6 +39540,17 @@ } ] }, + { + "id": 111023, + "name": "[蔵]Blows Up Everything", + "version": 13, + "levels": [ + { + "level": 5, + "difficulty": "0.0" + } + ] + }, { "id": 111069, "name": "[協]太陽系デスコ", @@ -37777,6 +39705,17 @@ } ] }, + { + "id": 111479, + "name": "[覚]Hainuwele", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "13.7" + } + ] + }, { "id": 111488, "name": "[覚]スカーレット警察のゲットーパトロール24時", @@ -37810,6 +39749,17 @@ } ] }, + { + "id": 111545, + "name": "[餡]隠密あんみつDX", + "version": 25, + "levels": [ + { + "level": 5, + "difficulty": "12.7" + } + ] + }, { "id": 111557, "name": "[蛸]不機嫌なスリーカード", @@ -37843,6 +39793,17 @@ } ] }, + { + "id": 111628, + "name": "[逆]WE'RE BACK!!", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "12.7" + } + ] + }, { "id": 111634, "name": "[協]青春コンプレックス", @@ -37865,6 +39826,39 @@ } ] }, + { + "id": 111638, + "name": "[耐]星界ちゃんと可不ちゃんのおつかい合騒曲", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "14.0" + } + ] + }, + { + "id": 111670, + "name": "[奏]のじゃロリック", + "version": 25, + "levels": [ + { + "level": 5, + "difficulty": "13.0" + } + ] + }, + { + "id": 111697, + "name": "[音]ラビットホール", + "version": 25, + "levels": [ + { + "level": 5, + "difficulty": "13.7" + } + ] + }, { "id": 111714, "name": "[匿]匿名M", @@ -37887,6 +39881,17 @@ } ] }, + { + "id": 111770, + "name": "[協]Ultimate taste", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "13.7" + } + ] + }, { "id": 111772, "name": "[X]人マニア", @@ -37909,6 +39914,39 @@ } ] }, + { + "id": 111852, + "name": "[好]好きな惣菜発表ドラゴン", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "14.0" + } + ] + }, + { + "id": 111859, + "name": "[騒]ありきたりな恋の歌", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "13.7" + } + ] + }, + { + "id": 111908, + "name": "[耐]死ぬな!", + "version": 25, + "levels": [ + { + "level": 5, + "difficulty": "13.0" + } + ] + }, { "id": 120227, "name": "[r]Garakuta Doll Play", @@ -37931,6 +39969,17 @@ } ] }, + { + "id": 121852, + "name": "[譜]好きな惣菜発表ドラゴン", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "14.0" + } + ] + }, { "id": 130227, "name": "[玉]Garakuta Doll Play", @@ -37942,6 +39991,17 @@ } ] }, + { + "id": 131852, + "name": "[面]好きな惣菜発表ドラゴン", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "14.0" + } + ] + }, { "id": 140227, "name": "[某]Garakuta Doll Play", @@ -37953,6 +40013,39 @@ } ] }, + { + "id": 141852, + "name": "[発]好きな惣菜発表ドラゴン", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "13.7" + } + ] + }, + { + "id": 151852, + "name": "[表]好きな惣菜発表ドラゴン", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "13.7" + } + ] + }, + { + "id": 161852, + "name": "[龍]好きな惣菜発表ドラゴン", + "version": 24, + "levels": [ + { + "level": 5, + "difficulty": "13.7" + } + ] + }, { "id": 200429, "name": "[宴]Wonderland Wars オープニング", diff --git a/sdgb-api/src/title/model/get_user_rating_api/mod.rs b/sdgb-api/src/title/model/get_user_rating_api/mod.rs index 0304f8f..cb7fbd7 100644 --- a/sdgb-api/src/title/model/get_user_rating_api/mod.rs +++ b/sdgb-api/src/title/model/get_user_rating_api/mod.rs @@ -74,6 +74,7 @@ pub struct MusicRatingFlatten { pub level: u32, pub rom_version: i64, pub achievement: i32, + pub dx_rating: u32, } #[cfg_attr(feature = "bincode", derive(bincode::Encode, bincode::Decode))] diff --git a/sdgb-cli/Cargo.toml b/sdgb-cli/Cargo.toml index 2e9b2fb..1821b1d 100644 --- a/sdgb-cli/Cargo.toml +++ b/sdgb-cli/Cargo.toml @@ -11,10 +11,17 @@ default = ["compio", "fetchall"] compio = ["dep:compio", "sdgb-api/compio"] tokio = ["dep:tokio", "sdgb-api/tokio"] -fetchall = ["dep:redb", "dep:futures-util", "dep:parquet", "sdgb-api/parquet"] +fetchall = [ + "dep:redb", + "dep:futures-util", + "dep:parquet", + "dep:music-db", + "sdgb-api/parquet", +] [dependencies] sdgb-api = { workspace = true, features = ["bincode"] } +music-db = { workspace = true, optional = true } # (de)serialization serde = { workspace = true } @@ -35,7 +42,7 @@ compio = { workspace = true, features = ["macros"], optional = true } nyquest-preset = { version = "0.3.0", features = ["async"] } -palc = { version = "0.0.1", features = ["derive"] } +palc = { version = "0.0.2" } futures-util = { version = "0.3.31", optional = true } ctrlc = { version = "3.4.7", features = ["termination"] } diff --git a/sdgb-cli/src/commands.rs b/sdgb-cli/src/commands.rs index 1c8a29d..51c6102 100644 --- a/sdgb-cli/src/commands.rs +++ b/sdgb-cli/src/commands.rs @@ -3,7 +3,7 @@ use palc::Subcommand; use strum::EnumString; #[derive(Parser)] -#[command(about = "SDGB api tool", long_about = env!("CARGO_PKG_DESCRIPTION"))] +#[command(long_about = env!("CARGO_PKG_DESCRIPTION"))] pub struct Cli { /// Try to generate machine readable format. /// @@ -139,7 +139,7 @@ pub enum Commands { }, } -#[derive(Debug, Default, EnumString)] +#[derive(Debug, Default, EnumString, strum::Display)] #[strum(serialize_all = "snake_case")] pub enum RatingFormat { #[default] diff --git a/sdgb-cli/src/main.rs b/sdgb-cli/src/main.rs index 6bbfb69..2af5754 100644 --- a/sdgb-cli/src/main.rs +++ b/sdgb-cli/src/main.rs @@ -383,20 +383,24 @@ async fn main() -> Result<(), Box> { .rating_list .into_iter() .chain(user_rating.next_rating_list) - .map( + .filter_map( move |MusicRating { music_id, level, rom_version, achievement, }| { - MusicRatingFlatten { + let (_rank, dx_rating) = + music_db::query_music_level(music_id, level)? + .dx_rating(achievement); + Some(MusicRatingFlatten { user_id, music_id, level, rom_version, achievement, - } + dx_rating, + }) }, ) }, diff --git a/utils/music_db_dump.py b/utils/music_db_dump.py index 18642ea..f4950ca 100644 --- a/utils/music_db_dump.py +++ b/utils/music_db_dump.py @@ -4,6 +4,7 @@ import xml.dom.minidom as minidom from pathlib import Path ONLY_REMOVED = True +EXTEND_LIST = ["C:/MaimaiDX/SDGA-1.55/StreamingAssets/A100"] def makeMusicDBJson(): @@ -13,24 +14,31 @@ def makeMusicDBJson(): 免得国服每次更新还要重新生成太麻烦 """ # 记得改 - A000_DIR = Path( - "C:/MaimaiDX/SDEZ-1.56-B/Standard/Package/Sinmai_Data/StreamingAssets/A000" - ) - OPTION_DIR = Path("C:/MaimaiDX/SDGA-1.55/StreamingAssets") + A000_DIR = Path("C:/MaimaiDX/SDEZ-1.60/Package/Sinmai_Data/StreamingAssets/A000") + OPTION_DIR = Path("C:/MaimaiDX/SDEZ-1.60/Package/option") music_db: list[dict[str, str | int | list[dict[str, str | int]]]] = [] - DEST_PATH = Path("./musicDB.json") + DEST_PATH = Path("./music_db/src/musicDB.json") dup_count = 0 music_ids = set() music_folders = [f for f in (A000_DIR / "music").iterdir() if f.is_dir()] + for extend_dir in EXTEND_LIST: + extend_dir = Path(extend_dir) + + if (extend_dir / "music").exists(): + print(f"adding {extend_dir.name} patch...") + music_folders.extend( + [f for f in (extend_dir / "music").iterdir() if f.is_dir()] + ) for option_dir in OPTION_DIR.iterdir(): - # only removed ones - if ONLY_REMOVED and option_dir.name != "A100": + # only removed songs + if ONLY_REMOVED and not option_dir.name.endswith("100"): continue if (option_dir / "music").exists(): + print("adding mega omnimix patch...") music_folders.extend( [f for f in (option_dir / "music").iterdir() if f.is_dir()] )