Skip to content

Commit

Permalink
Adds SABnzbd custom service; fixes bastienwirtz#494
Browse files Browse the repository at this point in the history
Signed-off-by: Matt Bentley <[email protected]>
  • Loading branch information
mbentley committed Nov 19, 2022
1 parent a8292ef commit 8077e76
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 0 deletions.
15 changes: 15 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)
- [SABnnzbd](#sabnzbd)

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

Expand Down Expand Up @@ -361,3 +362,17 @@ 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"
```
94 changes: 94 additions & 0 deletions src/components/services/SABnzbd.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<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() {
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 8077e76

Please sign in to comment.