add filename and headleass arguments
This commit is contained in:
parent
65cc36e9a4
commit
81eac90620
@ -1,3 +1,5 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import time
|
||||||
import argparse
|
import argparse
|
||||||
from plexapi.myplex import MyPlexAccount
|
from plexapi.myplex import MyPlexAccount
|
||||||
from plexapi.server import PlexServer
|
from plexapi.server import PlexServer
|
||||||
@ -23,6 +25,7 @@ if not TAUTULLI_APIKEY:
|
|||||||
|
|
||||||
VERIFY_SSL = False
|
VERIFY_SSL = False
|
||||||
|
|
||||||
|
timestr = time.strftime("%Y%m%d-%H%M%S")
|
||||||
|
|
||||||
class Connection:
|
class Connection:
|
||||||
def __init__(self, url=None, apikey=None, verify_ssl=False):
|
def __init__(self, url=None, apikey=None, verify_ssl=False):
|
||||||
@ -171,10 +174,13 @@ class Plex:
|
|||||||
return section_totals
|
return section_totals
|
||||||
|
|
||||||
|
|
||||||
def make_pie(user_dict, sections_dict, title):
|
def make_pie(user_dict, sections_dict, title, filename=None, headless=None):
|
||||||
|
|
||||||
import matplotlib.pyplot as plt
|
if headless:
|
||||||
|
import matplotlib as mpl
|
||||||
|
mpl.use("Agg")
|
||||||
|
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
user_len = len(user_dict.keys())
|
user_len = len(user_dict.keys())
|
||||||
section_len = len(sections_dict.keys())
|
section_len = len(sections_dict.keys())
|
||||||
user_position = 0
|
user_position = 0
|
||||||
@ -187,7 +193,6 @@ def make_pie(user_dict, sections_dict, title):
|
|||||||
library_total = sections_dict.get(library)
|
library_total = sections_dict.get(library)
|
||||||
fracs = [watched_value, library_total]
|
fracs = [watched_value, library_total]
|
||||||
ax = plt.subplot2grid((user_len, section_len), (user_position, section_position))
|
ax = plt.subplot2grid((user_len, section_len), (user_position, section_position))
|
||||||
# ax.xaxis.set_major_formatter(plt.NullFormatter())
|
|
||||||
ax.pie(fracs, autopct='%1.1f%%', shadow=True)
|
ax.pie(fracs, autopct='%1.1f%%', shadow=True)
|
||||||
if user_position == 0:
|
if user_position == 0:
|
||||||
ax.set_title("\n{}: {}".format(library, library_total))
|
ax.set_title("\n{}: {}".format(library, library_total))
|
||||||
@ -197,28 +202,38 @@ def make_pie(user_dict, sections_dict, title):
|
|||||||
ax.set_xlabel("User watched: {}".format(watched_value))
|
ax.set_xlabel("User watched: {}".format(watched_value))
|
||||||
section_position += 1
|
section_position += 1
|
||||||
user_position += 1
|
user_position += 1
|
||||||
|
|
||||||
plt.suptitle(title)
|
plt.suptitle(title)
|
||||||
plt.tight_layout()
|
plt.tight_layout()
|
||||||
fig.subplots_adjust(top=0.88)
|
fig.subplots_adjust(top=0.88)
|
||||||
plt.show()
|
|
||||||
|
if filename:
|
||||||
|
plt.savefig('{}_{}.png'.format(filename, timestr))
|
||||||
|
print('Image saved as: {}_{}.png'.format(filename, timestr))
|
||||||
|
if not headless:
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description="Show watched percentage of users by libraries.",
|
parser = argparse.ArgumentParser(description="Show watched percentage of users by libraries.",
|
||||||
formatter_class=argparse.RawTextHelpFormatter)
|
formatter_class=argparse.RawTextHelpFormatter)
|
||||||
|
|
||||||
servers = parser.add_mutually_exclusive_group()
|
servers = parser.add_mutually_exclusive_group()
|
||||||
servers.add_argument('--plex', default=False, action='store_true',
|
servers.add_argument('--plex', default=False, action='store_true',
|
||||||
help='Pull data from Plex')
|
help='Pull data from Plex')
|
||||||
servers.add_argument('--tautulli', default=False, action='store_true',
|
servers.add_argument('--tautulli', default=False, action='store_true',
|
||||||
help='Pull data from Tautulli')
|
help='Pull data from Tautulli')
|
||||||
|
|
||||||
parser.add_argument('--libraries', nargs='*', metavar='library',
|
parser.add_argument('--libraries', nargs='*', metavar='library',
|
||||||
help='Libraries to scan for watched content.')
|
help='Libraries to scan for watched content.')
|
||||||
parser.add_argument('--users', nargs='*', metavar='users',
|
parser.add_argument('--users', nargs='*', metavar='users',
|
||||||
help='Users to scan for watched content.')
|
help='Users to scan for watched content.')
|
||||||
parser.add_argument('--pie', default=False, action='store_true',
|
parser.add_argument('--pie', default=False, action='store_true',
|
||||||
help='Display pie chart')
|
help='Display pie chart')
|
||||||
|
parser.add_argument('--filename', type=str, default='Users_Watched_{}'.format(timestr), metavar='',
|
||||||
|
help='Filename of pie chart. None will not save. \n(default: %(default)s)')
|
||||||
|
parser.add_argument('--headless', action='store_true', help='Run headless.')
|
||||||
|
|
||||||
opts = parser.parse_args()
|
opts = parser.parse_args()
|
||||||
|
|
||||||
@ -320,4 +335,4 @@ if __name__ == '__main__':
|
|||||||
user_dict[user] = {library: section_watched_total}
|
user_dict[user] = {library: section_watched_total}
|
||||||
|
|
||||||
if opts.pie:
|
if opts.pie:
|
||||||
make_pie(user_dict, sections_totals_dict, title)
|
make_pie(user_dict, sections_totals_dict, title, opts.filename, opts.headless)
|
Loading…
x
Reference in New Issue
Block a user