mirror of
https://github.com/YGGverse/btracker.git
synced 2026-03-31 17:15:31 +00:00
add multi-keyword search support
This commit is contained in:
parent
59e668ba67
commit
6a2e4b586f
1 changed files with 37 additions and 24 deletions
|
|
@ -114,32 +114,45 @@ impl Public {
|
||||||
&& !k.is_empty()
|
&& !k.is_empty()
|
||||||
&& !librqbit_core::torrent_metainfo::torrent_from_bytes(&fs::read(&path)?)
|
&& !librqbit_core::torrent_metainfo::torrent_from_bytes(&fs::read(&path)?)
|
||||||
.is_ok_and(|m: librqbit_core::torrent_metainfo::TorrentMetaV1Owned| {
|
.is_ok_and(|m: librqbit_core::torrent_metainfo::TorrentMetaV1Owned| {
|
||||||
let q = k.to_lowercase();
|
k.split([
|
||||||
m.info_hash.as_string().to_lowercase().contains(&q)
|
'_', '-', ':', ';', ',', '(', ')', '[', ']', '/', '!', '?',
|
||||||
|| m.info
|
' ', // @TODO make separators list optional
|
||||||
.name
|
])
|
||||||
.is_some_and(|n| n.to_string().to_lowercase().contains(&q))
|
.filter(|s| !s.is_empty())
|
||||||
|| m.comment
|
.map(|s| s.trim().to_lowercase())
|
||||||
.is_some_and(|c| c.to_string().to_lowercase().contains(&q))
|
.all(|q| {
|
||||||
|| m.created_by
|
m.info_hash.as_string().to_lowercase().contains(&q)
|
||||||
.is_some_and(|c| c.to_string().to_lowercase().contains(&q))
|
|| m.info
|
||||||
|| m.publisher
|
.name
|
||||||
.is_some_and(|p| p.to_string().to_lowercase().contains(&q))
|
.as_ref()
|
||||||
|| m.publisher_url
|
.is_some_and(|n| n.to_string().to_lowercase().contains(&q))
|
||||||
.is_some_and(|u| u.to_string().to_lowercase().contains(&q))
|
|| m.comment
|
||||||
|| m.announce
|
.as_ref()
|
||||||
.is_some_and(|a| a.to_string().to_lowercase().contains(&q))
|
.is_some_and(|c| c.to_string().to_lowercase().contains(&q))
|
||||||
|| m.announce_list.iter().any(|l| {
|
|| m.created_by
|
||||||
l.iter().any(|a| a.to_string().to_lowercase().contains(&q))
|
.as_ref()
|
||||||
})
|
.is_some_and(|c| c.to_string().to_lowercase().contains(&q))
|
||||||
|| m.info.files.is_some_and(|f| {
|
|| m.publisher
|
||||||
f.iter().any(|f| {
|
.as_ref()
|
||||||
let mut p = PathBuf::new();
|
.is_some_and(|p| p.to_string().to_lowercase().contains(&q))
|
||||||
f.full_path(&mut p).is_ok_and(|_| {
|
|| m.publisher_url
|
||||||
p.to_string_lossy().to_lowercase().contains(&q)
|
.as_ref()
|
||||||
|
.is_some_and(|u| u.to_string().to_lowercase().contains(&q))
|
||||||
|
|| m.announce
|
||||||
|
.as_ref()
|
||||||
|
.is_some_and(|a| a.to_string().to_lowercase().contains(&q))
|
||||||
|
|| m.announce_list.iter().any(|l| {
|
||||||
|
l.iter().any(|a| a.to_string().to_lowercase().contains(&q))
|
||||||
|
})
|
||||||
|
|| m.info.files.as_ref().is_some_and(|f| {
|
||||||
|
f.iter().any(|f| {
|
||||||
|
let mut p = PathBuf::new();
|
||||||
|
f.full_path(&mut p).is_ok_and(|_| {
|
||||||
|
p.to_string_lossy().to_lowercase().contains(&q)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue