From b97762097b8b6301d3d1d75cce431e74e9fbfdce Mon Sep 17 00:00:00 2001 From: Olivier Mehani Date: Thu, 10 Oct 2019 12:18:10 +1100 Subject: [PATCH] [sickbeard] Add multigraph plugin doing both shows and episodes Signed-off-by: Olivier Mehani --- plugins/sickbeard/sickbeard | 94 +++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 plugins/sickbeard/sickbeard diff --git a/plugins/sickbeard/sickbeard b/plugins/sickbeard/sickbeard new file mode 100755 index 00000000..d3a764f9 --- /dev/null +++ b/plugins/sickbeard/sickbeard @@ -0,0 +1,94 @@ +#!/usr/bin/perl +# +# Munin plugins for Sick-Beard +# +# Copyright (C) 2012 - Blauwbek +# Copyright (C) 2012 - Thiago +# Copyright (C) 2019 - Olivier Mehani , for the +# multigraph support and better error handling +# +# Sick-Beard : http://sickbeard.com/ +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Requires: JSON::Any +# LWP::UserAgent +# +# Configuration example +# [sickbeard*] +# env.host http://host:port/ +# env.api apikey +# + +use strict; +use JSON::Any; +use LWP::UserAgent; + +#defines +my $HOST = exists $ENV{'host'} ? $ENV{'host'} : "http://localhost:8081/"; +my $API = exists $ENV{'api'} ? $ENV{'api'} : ""; +my $URL = $HOST."/api/".$API."/?cmd=shows.stats"; +my $sURL = sprintf $URL; + +#config output +if(defined $ARGV[0] && $ARGV[0] eq 'config') +{ + print <new; +my $req = $get->get($sURL); +if (!$req->is_success) { + die $req->status_line; +} +my $json = JSON::Any->jsonToObj($req->content()); + +if ($json->{result} eq 'success') { + print "multigraph sickbeard_episodes\n"; + print "total.value $json->{data}->{ep_total}\n"; + print "down.value $json->{data}->{ep_downloaded}\n"; + print "snatched.value $json->{data}->{ep_snatched}\n"; + + print "multigraph sickbeard_shows\n"; + print "total.value $json->{data}->{shows_total}\n"; + print "active.value $json->{data}->{shows_active}\n"; + exit 0; +} else { + die "$json->{message}"; +}