sane-bt-search: implement --h265 flag
This commit is contained in:
parent
c862b559e7
commit
b6a878757c
|
@ -153,6 +153,12 @@ class Torrent:
|
||||||
def is_manga(self, default: bool = False) -> bool:
|
def is_manga(self, default: bool = False) -> bool:
|
||||||
return is_cat(self.categories, MANGA_CATS, default)
|
return is_cat(self.categories, MANGA_CATS, default)
|
||||||
|
|
||||||
|
def is_h265(self) -> bool:
|
||||||
|
meta = self.title.lower()
|
||||||
|
return "h265" in meta \
|
||||||
|
or "x265" in meta \
|
||||||
|
or "HEVC" in meta
|
||||||
|
|
||||||
class Client:
|
class Client:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.apikey = open("/run/secrets/jackett_apikey").read().strip()
|
self.apikey = open("/run/secrets/jackett_apikey").read().strip()
|
||||||
|
@ -176,12 +182,14 @@ class Client:
|
||||||
return sorted(torrents, reverse=True)
|
return sorted(torrents, reverse=True)
|
||||||
|
|
||||||
|
|
||||||
def filter_results(results: list[Torrent], full: bool, top: int, manga: bool) -> list[Torrent]:
|
def filter_results(results: list[Torrent], full: bool, top: int, manga: bool, h265: bool) -> list[Torrent]:
|
||||||
"""
|
"""
|
||||||
take the complete query and filter further based on CLI options
|
take the complete query and filter further based on CLI options
|
||||||
"""
|
"""
|
||||||
if manga:
|
if manga:
|
||||||
results = [t for t in results if t.is_manga(default=True)]
|
results = [t for t in results if t.is_manga(default=True)]
|
||||||
|
if h265:
|
||||||
|
results = [t for t in results if t.is_h265()]
|
||||||
if not full:
|
if not full:
|
||||||
results = results[:top]
|
results = results[:top]
|
||||||
return results
|
return results
|
||||||
|
@ -195,6 +203,7 @@ def parse_args(args: list[str]) -> dict:
|
||||||
top="5",
|
top="5",
|
||||||
verbose=False,
|
verbose=False,
|
||||||
manga=False,
|
manga=False,
|
||||||
|
h265=False,
|
||||||
)
|
)
|
||||||
while args:
|
while args:
|
||||||
arg = args[0]
|
arg = args[0]
|
||||||
|
@ -222,6 +231,7 @@ def main(args: list[str]):
|
||||||
top = int(options.pop("top"))
|
top = int(options.pop("top"))
|
||||||
verbose = options.pop("verbose")
|
verbose = options.pop("verbose")
|
||||||
manga = options.pop("manga")
|
manga = options.pop("manga")
|
||||||
|
h265 = options.pop("h265")
|
||||||
|
|
||||||
if options != {}:
|
if options != {}:
|
||||||
raise BadCliArgs(f"unexpected options: {options}")
|
raise BadCliArgs(f"unexpected options: {options}")
|
||||||
|
@ -236,7 +246,7 @@ def main(args: list[str]):
|
||||||
results = client.query(query)
|
results = client.query(query)
|
||||||
num_results = len(results)
|
num_results = len(results)
|
||||||
|
|
||||||
results = filter_results(results, full, top, manga)
|
results = filter_results(results, full, top, manga, h265)
|
||||||
|
|
||||||
if json:
|
if json:
|
||||||
dumpable = [t.to_dict() for t in results]
|
dumpable = [t.to_dict() for t in results]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user