Skip to content

Commit

Permalink
Adds SABnzbd custom service; fixes #494 (#555)
Browse files Browse the repository at this point in the history
* Adds SABnzbd custom service; fixes #494
  • Loading branch information
mbentley authored Nov 19, 2022
1 parent f62972f commit 98fe0a3
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 0 deletions.
16 changes: 16 additions & 0 deletions docs/customservices.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ within Homer:
- [CopyToClipboard](#copy-to-clipboard)
- [Speedtest Tracker](#SpeedtestTracker)
- [What's Up Docker](#whats-up-docker)
- [SABnzbd](#sabnzbd)

If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.

Expand Down Expand Up @@ -361,3 +362,18 @@ The following configuration is available for the WUD service.
url: "http://192.168.1.12:3001"
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 changes: 99 additions & 0 deletions src/components/services/SABnzbd.vue
Original file line number Diff line number Diff line change
@@ -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>

0 comments on commit 98fe0a3

Please sign in to comment.