sane-bt-search: add --json
flag to control output format
This commit is contained in:
parent
fa5bc18721
commit
25d2234c69
|
@ -10,6 +10,7 @@ returns select results and magnet links
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
import json
|
||||||
import natsort
|
import natsort
|
||||||
import requests
|
import requests
|
||||||
import sys
|
import sys
|
||||||
|
@ -48,6 +49,16 @@ class Torrent:
|
||||||
pub_date = datetime.fromisoformat(pub_date).astimezone()
|
pub_date = datetime.fromisoformat(pub_date).astimezone()
|
||||||
return Torrent(seeders, pub_date, size, tracker, title, magnet)
|
return Torrent(seeders, pub_date, size, tracker, title, magnet)
|
||||||
|
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
return dict(
|
||||||
|
seeders=self.seeders,
|
||||||
|
pub_date=self.pub_date.strftime("%Y-%m-%d"),
|
||||||
|
size=self.size,
|
||||||
|
tracker=self.tracker,
|
||||||
|
title=self.title,
|
||||||
|
magnet=self.magnet,
|
||||||
|
)
|
||||||
|
|
||||||
class Client:
|
class Client:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.apikey = open("/run/secrets/jackett_apikey").read()
|
self.apikey = open("/run/secrets/jackett_apikey").read()
|
||||||
|
@ -57,10 +68,7 @@ class Client:
|
||||||
url = f"{SERVICE}/{endpoint}"
|
url = f"{SERVICE}/{endpoint}"
|
||||||
params = params.copy()
|
params = params.copy()
|
||||||
params.update(apikey=self.apikey, _=str(int(time.time())))
|
params.update(apikey=self.apikey, _=str(int(time.time())))
|
||||||
print(url)
|
|
||||||
print(params)
|
|
||||||
resp = requests.get(url, params=params)
|
resp = requests.get(url, params=params)
|
||||||
print(resp)
|
|
||||||
return resp.json()
|
return resp.json()
|
||||||
|
|
||||||
def query(self, q: str) -> list:
|
def query(self, q: str) -> list:
|
||||||
|
@ -77,6 +85,7 @@ def parse_args(args: list) -> dict:
|
||||||
options = dict(
|
options = dict(
|
||||||
full=False,
|
full=False,
|
||||||
query="",
|
query="",
|
||||||
|
json=False,
|
||||||
)
|
)
|
||||||
while args:
|
while args:
|
||||||
arg = args[0]
|
arg = args[0]
|
||||||
|
@ -99,9 +108,13 @@ def main(args: list):
|
||||||
num_listings = 100 if options["full"] else 5
|
num_listings = 100 if options["full"] else 5
|
||||||
client = Client()
|
client = Client()
|
||||||
res = client.query(query)
|
res = client.query(query)
|
||||||
print(f"found {len(res)} result(s)")
|
if options["json"]:
|
||||||
for r in res[:num_listings]:
|
dumpable = [t.to_dict() for t in res[:num_listings]]
|
||||||
print(r)
|
print(json.dumps(dumpable))
|
||||||
|
else:
|
||||||
|
print(f"found {len(res)} result(s)")
|
||||||
|
for r in res[:num_listings]:
|
||||||
|
print(r)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main(sys.argv[1:])
|
main(sys.argv[1:])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user