mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-14 01:02:59 -07:00
Add shared libraries and filters to database
This commit is contained in:
parent
ae60b21375
commit
2aa059a170
3 changed files with 74 additions and 15 deletions
|
@ -449,7 +449,8 @@ def dbcheck():
|
||||||
'thumb TEXT, custom_avatar_url TEXT, email TEXT, is_home_user INTEGER DEFAULT NULL, '
|
'thumb TEXT, custom_avatar_url TEXT, email TEXT, is_home_user INTEGER DEFAULT NULL, '
|
||||||
'is_allow_sync INTEGER DEFAULT NULL, is_restricted INTEGER DEFAULT NULL, do_notify INTEGER DEFAULT 1, '
|
'is_allow_sync INTEGER DEFAULT NULL, is_restricted INTEGER DEFAULT NULL, do_notify INTEGER DEFAULT 1, '
|
||||||
'keep_history INTEGER DEFAULT 1, deleted_user INTEGER DEFAULT 0, allow_guest INTEGER DEFAULT 0, '
|
'keep_history INTEGER DEFAULT 1, deleted_user INTEGER DEFAULT 0, allow_guest INTEGER DEFAULT 0, '
|
||||||
'user_token TEXT, server_token TEXT)'
|
'user_token TEXT, server_token TEXT, shared_libraries TEXT, filter_all TEXT, filter_movies TEXT, filter_tv TEXT, '
|
||||||
|
'filter_music TEXT, filter_photos TEXT)'
|
||||||
)
|
)
|
||||||
|
|
||||||
# notify_log table :: This is a table which logs notifications sent
|
# notify_log table :: This is a table which logs notifications sent
|
||||||
|
@ -768,6 +769,30 @@ def dbcheck():
|
||||||
'ALTER TABLE users ADD COLUMN server_token TEXT'
|
'ALTER TABLE users ADD COLUMN server_token TEXT'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Upgrade users table from earlier versions
|
||||||
|
try:
|
||||||
|
c_db.execute('SELECT shared_libraries FROM users')
|
||||||
|
except sqlite3.OperationalError:
|
||||||
|
logger.debug(u"Altering database. Updating database table users.")
|
||||||
|
c_db.execute(
|
||||||
|
'ALTER TABLE users ADD COLUMN shared_libraries TEXT'
|
||||||
|
)
|
||||||
|
c_db.execute(
|
||||||
|
'ALTER TABLE users ADD COLUMN filter_all TEXT'
|
||||||
|
)
|
||||||
|
c_db.execute(
|
||||||
|
'ALTER TABLE users ADD COLUMN filter_movies TEXT'
|
||||||
|
)
|
||||||
|
c_db.execute(
|
||||||
|
'ALTER TABLE users ADD COLUMN filter_tv TEXT'
|
||||||
|
)
|
||||||
|
c_db.execute(
|
||||||
|
'ALTER TABLE users ADD COLUMN filter_music TEXT'
|
||||||
|
)
|
||||||
|
c_db.execute(
|
||||||
|
'ALTER TABLE users ADD COLUMN filter_photos TEXT'
|
||||||
|
)
|
||||||
|
|
||||||
# Upgrade notify_log table from earlier versions
|
# Upgrade notify_log table from earlier versions
|
||||||
try:
|
try:
|
||||||
c_db.execute('SELECT poster_url FROM notify_log')
|
c_db.execute('SELECT poster_url FROM notify_log')
|
||||||
|
|
|
@ -22,23 +22,39 @@ import xmltodict
|
||||||
from xml.dom import minidom
|
from xml.dom import minidom
|
||||||
|
|
||||||
import plexpy
|
import plexpy
|
||||||
from plexpy import logger, helpers, http_handler, database, users, session
|
from plexpy import logger, helpers, http_handler, database, users, session, pmsconnect
|
||||||
|
|
||||||
|
|
||||||
def refresh_users():
|
def refresh_users():
|
||||||
logger.info(u"PlexPy PlexTV :: Requesting users list refresh...")
|
logger.info(u"PlexPy PlexTV :: Requesting users list refresh...")
|
||||||
result = PlexTV().get_full_users_list()
|
result = PlexTV().get_full_users_list()
|
||||||
monitor_db = database.MonitorDatabase()
|
|
||||||
|
|
||||||
if len(result) > 0:
|
monitor_db = database.MonitorDatabase()
|
||||||
|
user_data = users.Users()
|
||||||
|
|
||||||
|
if result:
|
||||||
for item in result:
|
for item in result:
|
||||||
|
|
||||||
|
shared_libraries = ''
|
||||||
|
user_tokens = user_data.get_tokens(user_id=item['user_id'])
|
||||||
|
if user_tokens and user_tokens['server_token']:
|
||||||
|
pms_connect = pmsconnect.PmsConnect(token=user_tokens['server_token'])
|
||||||
|
library_details = pms_connect.get_server_children()
|
||||||
|
shared_libraries = ';'.join(d['section_id'] for d in library_details['libraries_list'])
|
||||||
|
|
||||||
control_value_dict = {"user_id": item['user_id']}
|
control_value_dict = {"user_id": item['user_id']}
|
||||||
new_value_dict = {"username": item['username'],
|
new_value_dict = {"username": item['username'],
|
||||||
"thumb": item['thumb'],
|
"thumb": item['thumb'],
|
||||||
"email": item['email'],
|
"email": item['email'],
|
||||||
"is_home_user": item['is_home_user'],
|
"is_home_user": item['is_home_user'],
|
||||||
"is_allow_sync": item['is_allow_sync'],
|
"is_allow_sync": item['is_allow_sync'],
|
||||||
"is_restricted": item['is_restricted']
|
"is_restricted": item['is_restricted'],
|
||||||
|
"shared_libraries": shared_libraries,
|
||||||
|
"filter_all": item['filter_all'],
|
||||||
|
"filter_movies": item['filter_movies'],
|
||||||
|
"filter_tv": item['filter_tv'],
|
||||||
|
"filter_music": item['filter_music'],
|
||||||
|
"filter_photos": item['filter_photos']
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if we've set a custom avatar if so don't overwrite it.
|
# Check if we've set a custom avatar if so don't overwrite it.
|
||||||
|
@ -115,7 +131,16 @@ class PlexTV(object):
|
||||||
self.password = password
|
self.password = password
|
||||||
self.ssl_verify = plexpy.CONFIG.VERIFY_SSL_CERT
|
self.ssl_verify = plexpy.CONFIG.VERIFY_SSL_CERT
|
||||||
|
|
||||||
token = token if token else plexpy.CONFIG.PMS_TOKEN
|
if token == 'admin':
|
||||||
|
token = plexpy.CONFIG.PMS_TOKEN
|
||||||
|
elif not token:
|
||||||
|
# Check if we should use the admin token, or the guest server token
|
||||||
|
if session.get_session_user_id():
|
||||||
|
user_data = users.Users()
|
||||||
|
user_tokens = user_data.get_tokens(user_id=session.get_session_user_id())
|
||||||
|
token = user_tokens['server_token']
|
||||||
|
else:
|
||||||
|
token = plexpy.CONFIG.PMS_TOKEN
|
||||||
|
|
||||||
self.request_handler = http_handler.HTTPHandler(host='plex.tv',
|
self.request_handler = http_handler.HTTPHandler(host='plex.tv',
|
||||||
port=443,
|
port=443,
|
||||||
|
@ -262,7 +287,12 @@ class PlexTV(object):
|
||||||
"email": helpers.get_xml_attr(a, 'email'),
|
"email": helpers.get_xml_attr(a, 'email'),
|
||||||
"is_home_user": helpers.get_xml_attr(a, 'home'),
|
"is_home_user": helpers.get_xml_attr(a, 'home'),
|
||||||
"is_allow_sync": None,
|
"is_allow_sync": None,
|
||||||
"is_restricted": helpers.get_xml_attr(a, 'restricted')
|
"is_restricted": helpers.get_xml_attr(a, 'restricted'),
|
||||||
|
"filter_all": helpers.get_xml_attr(a, 'filterAll'),
|
||||||
|
"filter_movies": helpers.get_xml_attr(a, 'filterMovies'),
|
||||||
|
"filter_tv": helpers.get_xml_attr(a, 'filterTelevision'),
|
||||||
|
"filter_music": helpers.get_xml_attr(a, 'filterMusic'),
|
||||||
|
"filter_photos": helpers.get_xml_attr(a, 'filterPhotos')
|
||||||
}
|
}
|
||||||
|
|
||||||
users_list.append(own_details)
|
users_list.append(own_details)
|
||||||
|
@ -287,7 +317,12 @@ class PlexTV(object):
|
||||||
"email": helpers.get_xml_attr(a, 'email'),
|
"email": helpers.get_xml_attr(a, 'email'),
|
||||||
"is_home_user": helpers.get_xml_attr(a, 'home'),
|
"is_home_user": helpers.get_xml_attr(a, 'home'),
|
||||||
"is_allow_sync": helpers.get_xml_attr(a, 'allowSync'),
|
"is_allow_sync": helpers.get_xml_attr(a, 'allowSync'),
|
||||||
"is_restricted": helpers.get_xml_attr(a, 'restricted')
|
"is_restricted": helpers.get_xml_attr(a, 'restricted'),
|
||||||
|
"filter_all": helpers.get_xml_attr(a, 'filterAll'),
|
||||||
|
"filter_movies": helpers.get_xml_attr(a, 'filterMovies'),
|
||||||
|
"filter_tv": helpers.get_xml_attr(a, 'filterTelevision'),
|
||||||
|
"filter_music": helpers.get_xml_attr(a, 'filterMusic'),
|
||||||
|
"filter_photos": helpers.get_xml_attr(a, 'filterPhotos')
|
||||||
}
|
}
|
||||||
|
|
||||||
users_list.append(friend)
|
users_list.append(friend)
|
||||||
|
|
|
@ -527,8 +527,7 @@ class PmsConnect(object):
|
||||||
}
|
}
|
||||||
recents_list.append(recent_items)
|
recents_list.append(recent_items)
|
||||||
|
|
||||||
output = {'recently_added': session.filter_session_info(
|
output = {'recently_added': sorted(recents_list, key=lambda k: k['added_at'], reverse=True)}
|
||||||
sorted(recents_list, key=lambda k: k['added_at'], reverse=True), filter_key='section_id')}
|
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
@ -595,8 +594,8 @@ class PmsConnect(object):
|
||||||
genres.append(helpers.get_xml_attr(genre, 'tag'))
|
genres.append(helpers.get_xml_attr(genre, 'tag'))
|
||||||
|
|
||||||
if metadata_main.getElementsByTagName('Label'):
|
if metadata_main.getElementsByTagName('Label'):
|
||||||
for labels in metadata_main.getElementsByTagName('Label'):
|
for label in metadata_main.getElementsByTagName('Label'):
|
||||||
labels.append(helpers.get_xml_attr(labels, 'tag'))
|
labels.append(helpers.get_xml_attr(label, 'tag'))
|
||||||
|
|
||||||
if metadata_type == 'movie':
|
if metadata_type == 'movie':
|
||||||
metadata = {'media_type': metadata_type,
|
metadata = {'media_type': metadata_type,
|
||||||
|
@ -1531,7 +1530,7 @@ class PmsConnect(object):
|
||||||
output = {'children_count': helpers.get_xml_attr(xml_head[0], 'size'),
|
output = {'children_count': helpers.get_xml_attr(xml_head[0], 'size'),
|
||||||
'children_type': helpers.get_xml_attr(xml_head[0], 'viewGroup'),
|
'children_type': helpers.get_xml_attr(xml_head[0], 'viewGroup'),
|
||||||
'title': helpers.get_xml_attr(xml_head[0], 'title2'),
|
'title': helpers.get_xml_attr(xml_head[0], 'title2'),
|
||||||
'children_list': session.filter_session_info(children_list, 'section_id')
|
'children_list': children_list
|
||||||
}
|
}
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
@ -1979,7 +1978,7 @@ class PmsConnect(object):
|
||||||
search_results_count += 1
|
search_results_count += 1
|
||||||
|
|
||||||
output = {'results_count': search_results_count,
|
output = {'results_count': search_results_count,
|
||||||
'results_list': {k: session.filter_session_info(v, 'section_id') for k, v in search_results_list.iteritems()}
|
'results_list': {k: v for k, v in search_results_list.iteritems()}
|
||||||
}
|
}
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue