From 8e4d5d732e1b1cb429cf9683559365e7b48dc4ca Mon Sep 17 00:00:00 2001 From: "Alfie \"Azelphur\" Day" Date: Thu, 13 Feb 2020 14:57:36 +0000 Subject: [PATCH] Add deluge platform --- dashmachine/platform/deluge.py | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 dashmachine/platform/deluge.py diff --git a/dashmachine/platform/deluge.py b/dashmachine/platform/deluge.py new file mode 100644 index 0000000..2afd7d3 --- /dev/null +++ b/dashmachine/platform/deluge.py @@ -0,0 +1,37 @@ +from flask import render_template_string +import requests + + +class Platform: + def __init__(self, *args, **kwargs): + for key, value in kwargs.items(): + self.__dict__[key] = value + + if not hasattr(self, "resource"): + self.resource = "http://localhost/json" + + if not hasattr(self, "password"): + self.password = "" + + self.id = 1 + self.session = requests.Session() + self._api_call("auth.login", [self.password]) + self.password = None # Discard password, no longer needed. + + def _api_call(self, method, params=[]): + json = { + "id": self.id, + "method": method, + "params": params + } + return self.session.post(self.resource, json=json) + + def process(self): + r = self._api_call("web.update_ui", ["download_rate", "upload_rate"]) + json = r.json() + data = {} + for key, field in json["result"]["stats"].items(): + data[key] = field + + value_template = render_template_string(self.value_template, **data) + return value_template