Add nzbhydra2 widget

This commit is contained in:
Jack Bailey 2023-04-27 21:13:26 +01:00
parent 863fd797a2
commit 90ea4d3132
No known key found for this signature in database
45 changed files with 271 additions and 1 deletions

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -591,5 +591,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -591,5 +591,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -582,5 +582,10 @@
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"
},
"nzbhydra2": {
"indexersenabled": "Enabled Indexers",
"mostpopular": "Most Popular Indexer",
"responsetime": "Average response time"
}
}

View File

@ -18,7 +18,7 @@ export default async function credentialedProxyHandler(req, res, map) {
}
if (widget) {
const url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget }));
let url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget }));
const headers = {
"Content-Type": "application/json",
@ -54,6 +54,8 @@ export default async function credentialedProxyHandler(req, res, map) {
} else {
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
}
} else if (widget.type === "nzbhydra2") {
url += `?apikey=${widget.key}`;
} else {
headers["X-API-Key"] = `${widget.key}`;
}

View File

@ -46,6 +46,7 @@ const components = {
nextdns: dynamic(() => import("./nextdns/component")),
npm: dynamic(() => import("./npm/component")),
nzbget: dynamic(() => import("./nzbget/component")),
nzbhydra2: dynamic(() => import("./nzbhydra2/component")),
octoprint: dynamic(() => import("./octoprint/component")),
omada: dynamic(() => import("./omada/component")),
ombi: dynamic(() => import("./ombi/component")),

View File

@ -0,0 +1,51 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
const calculateAverage = (key, data) => {
const count = data.length;
const sum = data.reduce((a,b) => a + b[key], 0);
const average = (sum / count).toFixed(1);
return average;
}
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: nzbhydra2Data, error: nzbhydra2Error } = useWidgetAPI(widget, "stats");
if (nzbhydra2Error) {
return <Container error={nzbhydra2Error} />;
}
if (!nzbhydra2Data) {
return (
<Container service={service}>
<Block label="nzbhydra2.indexersenabled" />
<Block label="nzbhydra2.mostpopular" />
<Block label="nzbhydra2.responsetime" />
</Container>
);
}
const indexerCount = nzbhydra2Data.numberOfConfiguredIndexers;
const enabledIndexers = nzbhydra2Data.numberOfEnabledIndexers;
const highestDailyAccesses = Math.max(...nzbhydra2Data.indexerApiAccessStats.map(indexer => indexer.averageAccessesPerDay));
const mostPopularIndexer = nzbhydra2Data.indexerApiAccessStats.find((indexer) => indexer.averageAccessesPerDay === highestDailyAccesses);
const averageResponseTime = calculateAverage("avgResponseTime", nzbhydra2Data.avgResponseTimes);
return (
<Container service={service}>
<Block label="nzbhydra2.indexersenabled" value={`${enabledIndexers}/${indexerCount}` } />
<Block label="nzbhydra2.mostpopular" value={ mostPopularIndexer.indexerName } />
<Block label="nzbhydra2.responsetime" value={t("common.ms", { value: averageResponseTime, style: "unit", unit: "millisecond" })} />
</Container>
);
}

View File

@ -0,0 +1,14 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "{url}/{endpoint}",
proxyHandler: credentialedProxyHandler,
mappings: {
stats: {
endpoint: "api/stats",
},
},
};
export default widget;

View File

@ -40,6 +40,7 @@ import nextcloud from "./nextcloud/widget";
import nextdns from "./nextdns/widget";
import npm from "./npm/widget";
import nzbget from "./nzbget/widget";
import nzbhydra2 from "./nzbhydra2/widget";
import octoprint from "./octoprint/widget";
import omada from "./omada/widget";
import ombi from "./ombi/widget";
@ -122,6 +123,7 @@ const widgets = {
nextdns,
npm,
nzbget,
nzbhydra2,
octoprint,
omada,
ombi,