adding logging. only errors will make it to the log file.
This commit is contained in:
parent
e73dca7557
commit
85f9dac29e
@ -100,7 +100,9 @@ optional arguments:
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import random
|
||||
import logging
|
||||
import requests
|
||||
import argparse
|
||||
import operator
|
||||
@ -109,6 +111,26 @@ import unicodedata
|
||||
from collections import Counter
|
||||
from plexapi.server import PlexServer, CONFIG
|
||||
|
||||
filename = os.path.basename(__file__)
|
||||
filename = filename.split('.')[0]
|
||||
|
||||
logger = logging.getLogger(filename)
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
error_format = logging.Formatter('%(asctime)s:%(name)s:%(funcName)s:%(message)s')
|
||||
stream_format = logging.Formatter('%(message)s')
|
||||
|
||||
file_handler = logging.FileHandler('{}.log'.format(filename))
|
||||
file_handler.setLevel(logging.ERROR)
|
||||
file_handler.setFormatter(error_format)
|
||||
|
||||
stream_handler = logging.StreamHandler()
|
||||
stream_handler.setFormatter(stream_format)
|
||||
|
||||
logger.addHandler(file_handler)
|
||||
logger.addHandler(stream_handler)
|
||||
|
||||
|
||||
# ### EDIT SETTINGS ###
|
||||
|
||||
PLEX_URL = ''
|
||||
@ -273,9 +295,9 @@ def sort_by_dates(video, date_type):
|
||||
return [[video.ratingKey] + [str(video.originallyAvailableAt)]]
|
||||
|
||||
# todo-me return object
|
||||
except Exception:
|
||||
# print(e)
|
||||
return
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
exit()
|
||||
|
||||
|
||||
def multi_filter_search(keyword_dict, library, search_eps=None):
|
||||
@ -450,6 +472,7 @@ def get_content(libraries, jbop, filters=None, search=None, limit=None):
|
||||
# Remove date used for sorting
|
||||
play_lst = [x[0] for x in aired_lst]
|
||||
else:
|
||||
# todo-me probably will want to check limit by itself
|
||||
if jbop == "random" and limit:
|
||||
child_lst = random.sample(child_lst, limit)
|
||||
play_lst = child_lst
|
||||
@ -487,8 +510,8 @@ def build_playlist(jbop, libraries=None, days=None, top=None, filters=None, sear
|
||||
try:
|
||||
keys_list = get_content(libraries, jbop, filters, search, limit)
|
||||
except TypeError as e:
|
||||
print("Libraries are not defined for {}. Use --libraries.".format(jbop))
|
||||
exit("Error: {}".format(e))
|
||||
logger.exception("Libraries are not defined for {}. Use --libraries.".format(jbop))
|
||||
exit()
|
||||
|
||||
return keys_list
|
||||
|
||||
@ -504,7 +527,7 @@ def share_playlists(playlist_titles, users):
|
||||
"""
|
||||
for user in users:
|
||||
for title in playlist_titles:
|
||||
print("...Shared {title} playlist to '{user}'.".format(title=title, user=user))
|
||||
logger.info("...Shared {title} playlist to '{user}'.".format(title=title, user=user))
|
||||
plex.playlist(title).copyToUser(user)
|
||||
|
||||
exit()
|
||||
@ -533,7 +556,7 @@ def show_playlist(playlist_title, playlist_keys):
|
||||
title = unicodedata.normalize('NFKD', title).encode('ascii', 'ignore').translate(None, "'")
|
||||
playlist_list.append(title)
|
||||
|
||||
print(u"Contents of Playlist {title}:\n{playlist}".format(
|
||||
logger.info(u"Contents of Playlist {title}:\n{playlist}".format(
|
||||
title=playlist_title,
|
||||
playlist=', '.join(playlist_list)))
|
||||
exit()
|
||||
@ -564,16 +587,14 @@ def create_playlist(playlist_title, playlist_keys, server, user):
|
||||
except Exception:
|
||||
try:
|
||||
obj = plex.fetchItem(key)
|
||||
print("{} may not have permission to this title: {}".format(user, obj.title))
|
||||
# print("Error: {}".format(e))
|
||||
logger.exception("{} may not have permission to this title: {}".format(user, obj.title))
|
||||
pass
|
||||
except Exception:
|
||||
print('Rating Key: {}, may have been deleted or moved.'.format(key))
|
||||
# print("Error: {}".format(e))
|
||||
logger.exception('Rating Key: {}, may have been deleted or moved.'.format(key))
|
||||
|
||||
if playlist_list:
|
||||
server.createPlaylist(playlist_title, playlist_list)
|
||||
print("...Added Playlist: {title} to '{user}'.".format(title=playlist_title, user=user))
|
||||
logger.info("...Added Playlist: {title} to '{user}'.".format(title=playlist_title, user=user))
|
||||
|
||||
|
||||
def delete_playlist(playlist_dict, title):
|
||||
@ -595,17 +616,17 @@ def delete_playlist(playlist_dict, title):
|
||||
# If str then updating playlist
|
||||
if playlist.title == title:
|
||||
playlist.delete()
|
||||
print("...Deleted Playlist: {playlist.title} for '{user}'."
|
||||
logger.info("...Deleted Playlist: {playlist.title} for '{user}'."
|
||||
.format(playlist=playlist, user=user))
|
||||
if isinstance(title, list):
|
||||
# If list then removing selected playlists
|
||||
if playlist.title in title:
|
||||
playlist.delete()
|
||||
print("...Deleted Playlist: {playlist.title} for '{user}'."
|
||||
logger.info("...Deleted Playlist: {playlist.title} for '{user}'."
|
||||
.format(playlist=playlist, user=user))
|
||||
|
||||
except Exception:
|
||||
# print("Playlist not found on '{user}' account".format(user=user))
|
||||
logger.exception("Playlist not found on '{user}' account".format(user=user))
|
||||
pass
|
||||
|
||||
|
||||
@ -668,7 +689,7 @@ def create_title(jbop, libraries, days, filters, search, limit):
|
||||
|
||||
elif jbop == 'random':
|
||||
if not limit:
|
||||
print("Random selector needs a limit. Use --limit.")
|
||||
logger.info("Random selector needs a limit. Use --limit.")
|
||||
exit()
|
||||
title = selectors()['random'].format(count=limit, libraries='/'.join(libraries.values()))
|
||||
|
||||
@ -756,7 +777,7 @@ if __name__ == "__main__":
|
||||
filters[k] = v.split(",")
|
||||
# Check if provided filter exist, exit if it doesn't exist
|
||||
if not (set(filters.keys()) & set(filters_lst)):
|
||||
print('({}) was not found in filters list: [{}]'
|
||||
logger.error('({}) was not found in filters list: [{}]'
|
||||
.format(' '.join(filters.keys()), ', '.join(filters_lst)))
|
||||
exit()
|
||||
|
||||
@ -774,7 +795,7 @@ if __name__ == "__main__":
|
||||
for user in users:
|
||||
# todo-me smart playlists will have to recreated in users server instance
|
||||
if opts.action == 'share' and selected_playlists:
|
||||
print("Sharing playlist(s)...")
|
||||
logger.info("Sharing playlist(s)...")
|
||||
share_playlists(selected_playlists, users)
|
||||
user_acct = account.user(user)
|
||||
user_server = PlexServer(PLEX_URL, user_acct.get_token(plex.machineIdentifier))
|
||||
@ -794,11 +815,11 @@ if __name__ == "__main__":
|
||||
'all_playlists': playlist_lst})
|
||||
|
||||
if not opts.jbop and opts.action == 'show':
|
||||
print("Displaying the user's playlist(s)...")
|
||||
logger.info("Displaying the user's playlist(s)...")
|
||||
for data in playlist_dict['data']:
|
||||
user = data['user']
|
||||
playlists = data['all_playlists']
|
||||
print("{}'s current playlist(s): {}".format(user, ', '.join(playlists)))
|
||||
logger.info("{}'s current playlist(s): {}".format(user, ', '.join(playlists)))
|
||||
exit()
|
||||
|
||||
if libraries:
|
||||
@ -807,7 +828,7 @@ if __name__ == "__main__":
|
||||
|
||||
# Remove or build playlists
|
||||
if opts.action == 'remove':
|
||||
print("Deleting the playlist(s)...")
|
||||
logger.info("Deleting the playlist(s)...")
|
||||
for data in playlist_dict['data']:
|
||||
titles = data['user_selected']
|
||||
delete_playlist(data, titles)
|
||||
@ -824,19 +845,23 @@ if __name__ == "__main__":
|
||||
title = opts.name
|
||||
|
||||
if opts.jbop and opts.action == 'show':
|
||||
show_playlist(title, keys_list)
|
||||
if len(libraries) > 0:
|
||||
show_playlist(title, keys_list)
|
||||
else:
|
||||
logger.error("Missing --libraries or --allLibraries")
|
||||
exit()
|
||||
|
||||
if opts.action == 'update':
|
||||
print("Deleting the playlist(s)...")
|
||||
logger.info("Deleting the playlist(s)...")
|
||||
for data in playlist_dict['data']:
|
||||
delete_playlist(data, title)
|
||||
print('Creating playlist(s)...')
|
||||
logger.info('Creating playlist(s)...')
|
||||
for data in playlist_dict['data']:
|
||||
create_playlist(title, keys_list, data['server'], data['user'])
|
||||
|
||||
if opts.action == 'add':
|
||||
print('Creating playlist(s)...')
|
||||
logger.info('Creating playlist(s)...')
|
||||
for data in playlist_dict['data']:
|
||||
create_playlist(title, keys_list, data['server'], data['user'])
|
||||
|
||||
print("Done.")
|
||||
logger.info("Done.")
|
||||
|
Loading…
Reference in New Issue
Block a user