feat: accelerate metainfo parsing with rust

This commit is contained in:
jxxghp
2026-05-23 17:45:39 +08:00
parent ad38f51d6b
commit ed0f8c471b
8 changed files with 3634 additions and 0 deletions
+24
View File
@@ -20,6 +20,12 @@ dependencies = [
"libc",
]
[[package]]
name = "anitomy-pure"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33f525032668d2aff5dff115958157db7aecf1dc2fd5f5df93cf1be1452dfd4a"
[[package]]
name = "autocfg"
version = "1.5.0"
@@ -170,6 +176,12 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "fst"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a"
[[package]]
name = "futf"
version = "0.1.5"
@@ -375,6 +387,16 @@ dependencies = [
"rustversion",
]
[[package]]
name = "inputx-pinyin"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fa1bf26d5923bb73e34c63e7ef21fc976c37e016ea13872045bf72335f0a43c"
dependencies = [
"fst",
"phf",
]
[[package]]
name = "itoa"
version = "1.0.18"
@@ -483,7 +505,9 @@ dependencies = [
name = "moviepilot-rust"
version = "0.1.0"
dependencies = [
"anitomy-pure",
"chrono",
"inputx-pinyin",
"minijinja",
"once_cell",
"pyo3",
+2
View File
@@ -8,6 +8,8 @@ name = "moviepilot_rust"
crate-type = ["cdylib"]
[dependencies]
anitomy-pure = "0.1"
inputx-pinyin = "1.0.2"
minijinja = "2.20"
chrono = "0.4"
once_cell = "1.20"
+4
View File
@@ -1,5 +1,6 @@
mod filter;
mod indexer;
mod metainfo;
mod rss;
mod utils;
@@ -17,6 +18,9 @@ fn moviepilot_rust(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(is_available, m)?)?;
m.add_function(wrap_pyfunction!(filter::parse_filter_rule_fast, m)?)?;
m.add_function(wrap_pyfunction!(indexer::parse_indexer_torrents_fast, m)?)?;
m.add_function(wrap_pyfunction!(metainfo::parse_metainfo_fast, m)?)?;
m.add_function(wrap_pyfunction!(metainfo::parse_metainfo_path_fast, m)?)?;
m.add_function(wrap_pyfunction!(metainfo::find_metainfo_fast, m)?)?;
m.add_function(wrap_pyfunction!(rss::parse_rss_items_fast, m)?)?;
Ok(())
}
File diff suppressed because it is too large Load Diff