forked from extern/homer
* Adds SABnzbd custom service; fixes #494
This commit is contained in:
parent
f62972f659
commit
98fe0a3939
@ -30,6 +30,7 @@ within Homer:
|
|||||||
- [CopyToClipboard](#copy-to-clipboard)
|
- [CopyToClipboard](#copy-to-clipboard)
|
||||||
- [Speedtest Tracker](#SpeedtestTracker)
|
- [Speedtest Tracker](#SpeedtestTracker)
|
||||||
- [What's Up Docker](#whats-up-docker)
|
- [What's Up Docker](#whats-up-docker)
|
||||||
|
- [SABnzbd](#sabnzbd)
|
||||||
|
|
||||||
If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.
|
If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.
|
||||||
|
|
||||||
@ -361,3 +362,18 @@ The following configuration is available for the WUD service.
|
|||||||
url: "http://192.168.1.12:3001"
|
url: "http://192.168.1.12:3001"
|
||||||
type: "WUD"
|
type: "WUD"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## SABnzbd
|
||||||
|
|
||||||
|
The SABnzbd service can allow you to show the number of currently active
|
||||||
|
downloads on your SABnzbd instance. An API key is required, and can be obtained from
|
||||||
|
the "Config" > "General" section of the SABnzbd config in the SABnzbd web UI.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: "SABnzbd"
|
||||||
|
logo: "assets/tools/sample.png"
|
||||||
|
url: "http://192.168.0.151:8080"
|
||||||
|
type: "SABnzbd"
|
||||||
|
apikey: "MY-SUPER-SECRET-API-KEY"
|
||||||
|
downloadInterval: 5000 # (Optional) Interval (in ms) for updating the download count
|
||||||
|
```
|
||||||
|
99
src/components/services/SABnzbd.vue
Normal file
99
src/components/services/SABnzbd.vue
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<template>
|
||||||
|
<Generic :item="item">
|
||||||
|
<template #indicator>
|
||||||
|
<div class="notifs">
|
||||||
|
<strong
|
||||||
|
v-if="downloads > 0"
|
||||||
|
class="notif downloading"
|
||||||
|
:title="`${downloads} active download${downloads > 1 ? 's' : ''}`"
|
||||||
|
>
|
||||||
|
{{ downloads }}
|
||||||
|
</strong>
|
||||||
|
<i
|
||||||
|
v-if="error"
|
||||||
|
class="notif error fa-solid fa-triangle-exclamation"
|
||||||
|
title="Unable to fetch current status"
|
||||||
|
></i>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Generic>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import service from "@/mixins/service.js";
|
||||||
|
import Generic from "./Generic.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "SABnzbd",
|
||||||
|
mixins: [service],
|
||||||
|
props: {
|
||||||
|
item: Object,
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
Generic,
|
||||||
|
},
|
||||||
|
data: () => ({
|
||||||
|
stats: null,
|
||||||
|
error: false,
|
||||||
|
}),
|
||||||
|
computed: {
|
||||||
|
downloads: function () {
|
||||||
|
if (!this.stats) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return this.stats.noofslots;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
const downloadInterval = parseInt(this.item.downloadInterval, 10) || 0;
|
||||||
|
if (downloadInterval > 0) {
|
||||||
|
setInterval(() => this.fetchStatus(), downloadInterval);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.fetchStatus();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetchStatus: async function () {
|
||||||
|
try {
|
||||||
|
const response = await this.fetch(
|
||||||
|
`/api?output=json&apikey=${this.item.apikey}&mode=queue`
|
||||||
|
);
|
||||||
|
this.error = false;
|
||||||
|
this.stats = response.queue;
|
||||||
|
} catch (e) {
|
||||||
|
this.error = true;
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.notifs {
|
||||||
|
position: absolute;
|
||||||
|
color: white;
|
||||||
|
font-family: sans-serif;
|
||||||
|
top: 0.3em;
|
||||||
|
right: 0.5em;
|
||||||
|
|
||||||
|
.notif {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.2em 0.35em;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
position: relative;
|
||||||
|
margin-left: 0.3em;
|
||||||
|
font-size: 0.8em;
|
||||||
|
|
||||||
|
&.downloading {
|
||||||
|
background-color: #4fb5d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.error {
|
||||||
|
border-radius: 50%;
|
||||||
|
aspect-ratio: 1;
|
||||||
|
background-color: #e51111;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue
Block a user