45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
import time
|
|
from urllib.parse import urljoin
|
|
|
|
import requests as RQ
|
|
|
|
|
|
class Jackett(object):
|
|
def __init__(self, url, api_key):
|
|
self.url = url
|
|
self.api_key = api_key
|
|
self.session = RQ.Session()
|
|
self.session.post("http://192.168.2.25:9117/jackett/UI/Dashboard")
|
|
|
|
def search(self, query, indexers=None):
|
|
params = {"apikey": self.api_key,
|
|
"Query": query, "_": str(int(time.time()))}
|
|
if indexers:
|
|
params["Tracker[]"] = indexers
|
|
res = self.session.get(
|
|
urljoin(self.url, "api/v2.0/indexers/all/results"), params=params
|
|
)
|
|
res.raise_for_status()
|
|
res = res.json()
|
|
for val in res["Results"]:
|
|
for prop in ["Gain", "Seeders", "Peers", "Grabs", "Files"]:
|
|
val[prop] = val.get(prop) or 0
|
|
return res
|
|
|
|
def indexers(self):
|
|
return [
|
|
(t["id"], t["name"])
|
|
for t in self.session.get(urljoin(self.url, "api/v2.0/indexers")).json()
|
|
if t.get("configured")
|
|
]
|
|
|
|
def test(self):
|
|
errors = {}
|
|
for idx, name in self.indexers():
|
|
print("Testing indexer", name)
|
|
result = self.session.post(
|
|
urljoin(self.url, "api/v2.0/indexers/{}/test".format(idx))
|
|
)
|
|
if result.text:
|
|
errors[name] = result.json()["error"]
|
|
return errors
|