From bbcd8e8ee4cf4be48af17ce70c1715f8da5753bd Mon Sep 17 00:00:00 2001 From: lkhsss Date: Thu, 4 Sep 2025 17:39:59 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=89=8B=E5=8A=A8=E5=BC=80=E5=85=B3=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E8=BE=93=E5=87=BA=E5=BD=A9=E8=89=B2=202.=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BE=9D=E8=B5=96=203.=E6=9B=B4=E6=96=B0readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- CHANGELOG.md | 7 ++- Cargo.lock | 159 +++++++++++++++++++++++++++++++-------------------- Cargo.toml | 6 +- README.md | 36 +++++++++++- src/clap.rs | 5 ++ src/main.rs | 5 ++ 7 files changed, 151 insertions(+), 70 deletions(-) diff --git a/.gitignore b/.gitignore index 33d6c3d..aa80b20 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ src/*.old src/*.bak /testfile /output -/test \ No newline at end of file +/test +/NcmmiaoOutput \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 2991377..99df99d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,4 +83,9 @@ ## [2.8.20] - 2025.8.26 ### Features :sparkles: - - 自动构建增加upx压缩 \ No newline at end of file + - 自动构建增加upx压缩 + + + ## [2.8.20] - 2025.9.4 + ### Features :sparkles: + - 可以手动开关是否输出彩色 \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 7f2f6f8..aa8c333 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -179,21 +179,15 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bit_field" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" [[package]] name = "bitflags" -version = "1.3.2" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "bitstream-io" @@ -233,10 +227,11 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "cc" -version = "1.2.34" +version = "1.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" +checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -282,9 +277,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" dependencies = [ "clap_builder", "clap_derive", @@ -292,9 +287,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" dependencies = [ "anstream", "anstyle", @@ -304,9 +299,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck", "proc-macro2", @@ -343,15 +338,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.11" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" dependencies = [ "encode_unicode", "libc", "once_cell", "unicode-width", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -500,6 +495,26 @@ dependencies = [ "zune-inflate", ] +[[package]] +name = "fax" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" +dependencies = [ + "fax_derive", +] + +[[package]] +name = "fax_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "fdeflate" version = "0.3.7" @@ -509,6 +524,12 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" + [[package]] name = "flate2" version = "1.1.2" @@ -549,7 +570,7 @@ dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.3+wasi-0.2.4", ] [[package]] @@ -626,16 +647,16 @@ version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aadb14a5ba1a0d58ecd4a29bfc9b8f1d119eee24aa01a62c1ec93eb9630a1d86" dependencies = [ - "bitflags 2.9.3", + "bitflags", "byteorder", "flate2", ] [[package]] name = "image" -version = "0.25.6" +version = "0.25.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" dependencies = [ "bytemuck", "byteorder-lite", @@ -643,6 +664,7 @@ dependencies = [ "exr", "gif", "image-webp", + "moxcms", "num-traits", "png", "qoi", @@ -656,9 +678,9 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" dependencies = [ "byteorder-lite", "quick-error", @@ -682,14 +704,14 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.11" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" dependencies = [ "console", - "number_prefix", "portable-atomic", "unicode-width", + "unit-prefix", "web-time", ] @@ -744,12 +766,6 @@ dependencies = [ "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" - [[package]] name = "js-sys" version = "0.3.77" @@ -790,9 +806,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "loop9" @@ -845,6 +861,16 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "moxcms" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08" +dependencies = [ + "num-traits", + "pxfm", +] + [[package]] name = "mp4ameta" version = "0.11.0" @@ -863,7 +889,7 @@ checksum = "07dcca13d1740c0a665f77104803360da0bdb3323ecce2e93fa2c959a6d52806" [[package]] name = "ncmmiao" -version = "2.8.20" +version = "2.9.20" dependencies = [ "aes", "audiotags", @@ -966,12 +992,6 @@ dependencies = [ "libc", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "once_cell" version = "1.21.3" @@ -998,11 +1018,11 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "png" -version = "0.17.16" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 1.3.2", + "bitflags", "crc32fast", "fdeflate", "flate2", @@ -1052,6 +1072,15 @@ dependencies = [ "syn", ] +[[package]] +name = "pxfm" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e790881194f6f6e86945f0a42a6981977323669aeb6c40e9c7ec253133b96f8" +dependencies = [ + "num-traits", +] + [[package]] name = "qoi" version = "0.4.1" @@ -1341,13 +1370,16 @@ dependencies = [ [[package]] name = "tiff" -version = "0.9.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" dependencies = [ + "fax", "flate2", - "jpeg-decoder", + "half", + "quick-error", "weezl", + "zune-jpeg", ] [[package]] @@ -1402,6 +1434,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +[[package]] +name = "unit-prefix" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" + [[package]] name = "utf8parse" version = "0.2.2" @@ -1433,9 +1471,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -1449,11 +1487,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -1755,13 +1793,10 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.3", -] +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" [[package]] name = "zerocopy" diff --git a/Cargo.toml b/Cargo.toml index cbf3854..bcd4a7a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ncmmiao" -version = "2.8.20" +version = "2.9.20" edition = "2021" authors = ["Lkhsss "] description = "A magic tool convert ncm to flac" @@ -21,14 +21,14 @@ colored = { version = "3.0.0", default-features = false } crossbeam-channel = "0.5.15" env_logger = { version = "0.11.7", default-features = false } image = "0.25.*" -indicatif = "0.17.9" +indicatif = "0.18.*" lazy_static = "1.5.0" log = "0.4.20" num_cpus = "1.17.0" serde = { version = "1.0.195", features = ["derive"] } serde_derive = "1.0.*" serde_json = "1.0.*" -walkdir = "2.4.*" +walkdir = "2.5.0" [badges] maintenance = { status = "actively-developed" } diff --git a/README.md b/README.md index a215888..b3041f7 100644 --- a/README.md +++ b/README.md @@ -20,16 +20,45 @@ cargo build -r ## 使用 支持单一文件,多文件夹递归批量解密。 ``` -ncmmiao [OPTIONS] +Usage: ncmmiao [OPTIONS] + Options: - -w, --workers 并发的最大线程数,默认为8线程(性能还行的话建议直接32-64,嘎嘎快) + -w, --workers 并发的最大线程数,默认为cpu核心数 -i, --input <输入文件/目录> 需要解密的文件夹或文件 -o, --output <输出目录> 输出目录 [default: NcmmiaoOutput] -f, --forcesave 强制覆盖保存开关 -a, --autoopen 自动打开输出目录 + -n, --nocolor 是否关闭彩色输出。在不支持真彩色的老机型中关闭。 + -d, --debug... 设定输出日志的的等级。v越多日志越详细 + -h, --help Print help + -V, --version Print version +``` +### 例 +文件位于`D:/Music`中,要求使用64线程,并且完成后自动打开文件夹,不强制覆盖保存 +```bash +ncmmiao -i "D:/Music" -w 64 -a ``` -~~输出文件夹在output。等我想写了再写命令行解析(bushi。~~ 写了写了 +### 关于`覆盖保存` +覆盖保存用于当解密进行一半时突然终止程序,不知道程序是否已解密完成时启用,可以强制覆盖已存在的文件,保证文件完整性。 + +### 关于日志系统 +日志共六个等级: Error Warn Info Debug Trace +v越多,日志越详细。 +仅输出错误的日志 Error +```bash +ncmmiao -v +``` +输出警告以上的日志 Warn +```bash +ncmmiao -vv +``` +输出提示以上的日志 INFO (默认) +```bash +ncmmiao -vvv +``` +以此类推 + --- @@ -43,6 +72,7 @@ Options: - [x] 自动覆盖开关 - [x] 优化并发设置 - [x] 优化信息传递 + - [x] 颜色控制 --- diff --git a/src/clap.rs b/src/clap.rs index b7875d0..2eb5602 100644 --- a/src/clap.rs +++ b/src/clap.rs @@ -24,6 +24,11 @@ pub struct Cli { #[arg(short, long, name = "自动打开输出目录")] pub autoopen: bool, + /// 是否关闭彩色输出。在不支持真彩色的老机型中关闭。 + #[arg(short, long, default_value = "false")] + pub nocolor: bool, + + /// 设定输出日志的的等级。v越多日志越详细 #[arg(short, long, action = clap::ArgAction::Count)] pub debug: u8, } diff --git a/src/main.rs b/src/main.rs index 6fdb9c7..7b2cc79 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,7 @@ fn main() -> Result<(), AppError> { exit(1) } }; + // 初始化日志系统 match logger::init_logger() { Ok(_) => (), @@ -42,6 +43,10 @@ fn main() -> Result<(), AppError> { let cli = clap::Cli::parse(); + //设置彩色输出 + let if_colorful = !cli.nocolor; + colored::control::set_override(if_colorful); + //获取cpu核心数 let cpus = num_cpus::get(); // 最大线程数