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