Skip to content

Commit

Permalink
Merge pull request #365 from nthduy-deevotech/fix/sonarr-radarr-api
Browse files Browse the repository at this point in the history
Support for Radarr, Sonarr V3 API
  • Loading branch information
bastienwirtz authored Feb 10, 2022
2 parents d92444e + 096c7ed commit dec7e46
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 10 deletions.
10 changes: 10 additions & 0 deletions docs/customservices.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,16 @@ Two lines are needed in the config.yml :

The url must be the root url of Lidarr, Prowlarr, Radarr or Sonarr application.
The Lidarr, Prowlarr, Radarr or Sonarr API key can be found in Settings > General. It is needed to access the API.
If you are using an older version of Radarr or Sonarr which don't support the new V3 api endpoints, add the following line to your service config "legacyApi: true", example:

```yaml
- name: "Radarr"
type: "Radarr"
url: "http://localhost:7878/"
apikey: "MY-SUPER-SECRET-API-KEY"
target: "_blank"
legacyApi: true
```

## PaperlessNG

Expand Down
27 changes: 22 additions & 5 deletions src/components/services/Radarr.vue
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
import service from "@/mixins/service.js";
import Generic from "./Generic.vue";
const V3_API = "/api/v3";
const LEGACY_API = "/api";
export default {
name: "Radarr",
mixins: [service],
Expand All @@ -46,9 +49,14 @@ export default {
created: function () {
this.fetchConfig();
},
computed: {
apiPath() {
return this.item.legacyApi ? LEGACY_API : V3_API;
},
},
methods: {
fetchConfig: function () {
this.fetch(`/api/health?apikey=${this.item.apikey}`)
this.fetch(`${this.apiPath}/health?apikey=${this.item.apikey}`)
.then((health) => {
this.warnings = 0;
this.errors = 0;
Expand All @@ -64,12 +72,21 @@ export default {
console.error(e);
this.serverError = true;
});
this.fetch(`/api/queue?apikey=${this.item.apikey}`)
this.fetch(`${this.apiPath}/queue?apikey=${this.item.apikey}`)
.then((queue) => {
this.activity = 0;
for (var i = 0; i < queue.length; i++) {
if (queue[i].movie) {
this.activity++;
if (this.item.legacyApi) {
for (var i = 0; i < queue.length; i++) {
if (queue[i].movie) {
this.activity++;
}
}
} else {
for (const record of queue.records) {
if (record.movieId) {
this.activity++;
}
}
}
})
Expand Down
26 changes: 21 additions & 5 deletions src/components/services/Sonarr.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
import service from "@/mixins/service.js";
import Generic from "./Generic.vue";
const V3_API = "/api/v3";
const LEGACY_API = "/api";
export default {
name: "Sonarr",
mixins: [service],
Expand All @@ -36,6 +39,11 @@ export default {
components: {
Generic,
},
computed: {
apiPath() {
return this.item.legacyApi ? LEGACY_API : V3_API;
},
},
data: () => {
return {
activity: null,
Expand All @@ -49,7 +57,7 @@ export default {
},
methods: {
fetchConfig: function () {
this.fetch(`/api/health?apikey=${this.item.apikey}`)
this.fetch(`${this.apiPath}/health?apikey=${this.item.apikey}`)
.then((health) => {
this.warnings = 0;
this.errors = 0;
Expand All @@ -65,12 +73,20 @@ export default {
console.error(e);
this.serverError = true;
});
this.fetch(`/api/queue?apikey=${this.item.apikey}`)
this.fetch(`${this.apiPath}/queue?apikey=${this.item.apikey}`)
.then((queue) => {
this.activity = 0;
for (var i = 0; i < queue.length; i++) {
if (queue[i].series) {
this.activity++;
if (this.item.legacyApi) {
for (var i = 0; i < queue.length; i++) {
if (queue[i].series) {
this.activity++;
}
}
} else {
for (const record of queue.records) {
if (record.seriesId) {
this.activity++;
}
}
}
})
Expand Down

0 comments on commit dec7e46

Please sign in to comment.