sane-bt-search: more precisely specify the --tracker argument options
This commit is contained in:
@@ -78,6 +78,7 @@ def parse_time(t: str) -> datetime:
|
||||
|
||||
@dataclass(eq=True, order=True, unsafe_hash=True)
|
||||
class Tracker:
|
||||
id_: str
|
||||
name: str
|
||||
# preference: major, minor.
|
||||
# lower value = more preferable.
|
||||
@@ -86,14 +87,14 @@ class Tracker:
|
||||
order: int
|
||||
|
||||
@staticmethod
|
||||
def by_name(name: str) -> 'Tracker':
|
||||
if name in KNOWN_TRACKERS:
|
||||
return KNOWN_TRACKERS[name]
|
||||
logger.warning(f"unknown tracker: {name!r}")
|
||||
return Tracker(name, TrackerQuality.Unknown, len(KNOWN_TRACKERS))
|
||||
def by_id(id_: str) -> 'Tracker':
|
||||
if id_ in KNOWN_TRACKERS:
|
||||
return KNOWN_TRACKERS[id_]
|
||||
logger.warning(f"unknown tracker: {id_!r}")
|
||||
return Tracker(id_, TrackerQuality.Unknown, len(KNOWN_TRACKERS))
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return self.name
|
||||
return self.id_
|
||||
|
||||
def _KNOWN_TRACKERS() -> dict[str, Tracker]:
|
||||
trackers = {}
|
||||
@@ -103,28 +104,28 @@ def _KNOWN_TRACKERS() -> dict[str, Tracker]:
|
||||
nonlocal order
|
||||
t = Tracker(*args, order)
|
||||
order += 1
|
||||
trackers[t.name] = t
|
||||
trackers[t.id_] = t
|
||||
|
||||
# the order of this list (even withint sections) is significant:
|
||||
# most preferred -> least preferred
|
||||
add_tracker('BitMagnet (Local DHT)', TrackerQuality.Authoritative)
|
||||
add_tracker('bitmagnet', 'BitMagnet (Local DHT)', TrackerQuality.Authoritative)
|
||||
|
||||
add_tracker('BakaBT', TrackerQuality.Trustworthy)
|
||||
add_tracker('SubsPlease', TrackerQuality.Trustworthy)
|
||||
add_tracker('Nyaa.si', TrackerQuality.Trustworthy)
|
||||
add_tracker('sukebei.nyaa.si', TrackerQuality.Trustworthy)
|
||||
add_tracker('bakabt', 'BakaBT', TrackerQuality.Trustworthy)
|
||||
add_tracker('subsplease', 'SubsPlease', TrackerQuality.Trustworthy)
|
||||
add_tracker('nyaasi', 'Nyaa.si', TrackerQuality.Trustworthy)
|
||||
add_tracker('sukebeinyaasi', 'sukebei.nyaa.si', TrackerQuality.Trustworthy)
|
||||
|
||||
add_tracker('YTS', TrackerQuality.Good)
|
||||
add_tracker('Tokyo Toshokan', TrackerQuality.Good)
|
||||
add_tracker('yts', 'YTS', TrackerQuality.Good)
|
||||
add_tracker('tokyotosho', 'Tokyo Toshokan', TrackerQuality.Good)
|
||||
|
||||
add_tracker('Internet Archive', TrackerQuality.Mediocre)
|
||||
add_tracker('The Pirate Bay', TrackerQuality.Mediocre)
|
||||
add_tracker('MioBT', TrackerQuality.Mediocre)
|
||||
add_tracker('Bengumi Moe', TrackerQuality.Mediocre)
|
||||
add_tracker('Torlock', TrackerQuality.Mediocre)
|
||||
add_tracker('internetarchive', 'Internet Archive', TrackerQuality.Mediocre)
|
||||
add_tracker('thepiratebay', 'The Pirate Bay', TrackerQuality.Mediocre)
|
||||
add_tracker('miobt', 'MioBT', TrackerQuality.Mediocre)
|
||||
add_tracker('bangumi-moe', 'Bangumi Moe', TrackerQuality.Mediocre)
|
||||
add_tracker('torlock', 'Torlock', TrackerQuality.Mediocre)
|
||||
|
||||
add_tracker('1337x', TrackerQuality.Bad)
|
||||
add_tracker('kickasstorrents.to', TrackerQuality.Bad)
|
||||
# add_tracker(UNKNOWN_ID, '1337x', TrackerQuality.Bad)
|
||||
# add_tracker(UNKNOWN_ID, 'kickasstorrents.to', TrackerQuality.Bad)
|
||||
|
||||
return trackers
|
||||
|
||||
@@ -237,14 +238,14 @@ class Torrent:
|
||||
"Seeders",
|
||||
"Size",
|
||||
"Title",
|
||||
"Tracker",
|
||||
"TrackerId",
|
||||
) and v != None and v != "" and v != [] and v != {}:
|
||||
logger.debug(f" {k} = {v}")
|
||||
|
||||
seeders = d.get("Seeders")
|
||||
pub_date = d.get("PublishDate")
|
||||
size = d.get("Size")
|
||||
tracker = d.get("Tracker")
|
||||
tracker_id = d.get("TrackerId")
|
||||
title = d.get("Title")
|
||||
info_hash = d.get("InfoHash")
|
||||
magnet = d.get("MagnetUri") or d.get("Guid")
|
||||
@@ -278,7 +279,7 @@ class Torrent:
|
||||
seeders=seeders,
|
||||
pub_date=pub_date,
|
||||
size=size,
|
||||
tracker=Tracker.by_name(tracker),
|
||||
tracker=Tracker.by_id(tracker_id),
|
||||
title=title,
|
||||
info_hash=info_hash,
|
||||
magnet=magnet,
|
||||
@@ -361,9 +362,7 @@ def main(args: list[str]):
|
||||
parser.add_argument('--top', help=f'how many results to show (default: {DEFAULT_RESULT_COUNT})')
|
||||
parser.add_argument('--sort-by', default=SortMethod.Balanced, type=SortMethod, help='how to rank matches (seeders, tracker)')
|
||||
parser.add_argument('--json', action='store_true', help='output results in json')
|
||||
# TODO: add `choices`, populated from the API name of each KNOWN_TRACKERS.
|
||||
# (i.e. 'TrackerId' instead of 'Tracker' field)
|
||||
parser.add_argument('--tracker', type=str, action='append', help='query only this tracker(s) e.g. "bitmagnet" or "bakabt"')
|
||||
parser.add_argument('--tracker', type=str, action='append', help='query only this tracker(s)', choices=KNOWN_TRACKERS.keys())
|
||||
parser.add_argument('--verbose', action='store_true')
|
||||
parser.add_argument('--book', action='store_true', help='show only book (ebook or audiobook) results')
|
||||
parser.add_argument('--h265', action='store_true', help='show only H.265/HEVC results (might cause false negatives)')
|
||||
|
Reference in New Issue
Block a user