mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-08 06:00:51 -07:00
Log recently added items to the database
* Temporarily disable recently added upgrade notifications
This commit is contained in:
parent
eac31d10f1
commit
fc7b396e45
9 changed files with 173 additions and 90 deletions
|
@ -68,6 +68,7 @@ DOCUMENTATION :: END
|
||||||
|
|
||||||
<%def name="body()">
|
<%def name="body()">
|
||||||
% if data:
|
% if data:
|
||||||
|
<% media_info = data['media_info'][0] if data['media_info'] else {} %>
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="art-face" style="background-image:url(pms_image_proxy?img=${data['art']}&width=1920&height=1080)"></div>
|
<div class="art-face" style="background-image:url(pms_image_proxy?img=${data['art']}&width=1920&height=1080)"></div>
|
||||||
|
@ -187,17 +188,17 @@ DOCUMENTATION :: END
|
||||||
% endif
|
% endif
|
||||||
% if data['media_type'] in ('movie', 'episode', 'track'):
|
% if data['media_type'] in ('movie', 'episode', 'track'):
|
||||||
<div class="summary-content-media-info-wrapper">
|
<div class="summary-content-media-info-wrapper">
|
||||||
% if data['media_type'] != 'track' and data['video_codec']:
|
% if data['media_type'] != 'track' and media_info['video_codec']:
|
||||||
<img class="summary-content-media-flag" title="${data['video_codec']}" src="${http_root}images/media_flags/video_codec/${data['video_codec'] | vf}.png" />
|
<img class="summary-content-media-flag" title="${media_info['video_codec']}" src="${http_root}images/media_flags/video_codec/${media_info['video_codec'] | vf}.png" />
|
||||||
% endif
|
% endif
|
||||||
% if data['media_type'] != 'track' and data['video_resolution']:
|
% if data['media_type'] != 'track' and media_info['video_resolution']:
|
||||||
<img class="summary-content-media-flag" title="${data['video_resolution']}" src="${http_root}images/media_flags/video_resolution/${data['video_resolution']}.png" />
|
<img class="summary-content-media-flag" title="${media_info['video_resolution']}" src="${http_root}images/media_flags/video_resolution/${media_info['video_resolution']}.png" />
|
||||||
% endif
|
% endif
|
||||||
% if data['audio_codec']:
|
% if media_info['audio_codec']:
|
||||||
<img class="summary-content-media-flag" title="${data['audio_codec']}" src="${http_root}images/media_flags/audio_codec/${data['audio_codec'] | af}.png" />
|
<img class="summary-content-media-flag" title="${media_info['audio_codec']}" src="${http_root}images/media_flags/audio_codec/${media_info['audio_codec'] | af}.png" />
|
||||||
% endif
|
% endif
|
||||||
% if data['audio_channels']:
|
% if media_info['audio_channels']:
|
||||||
<img class="summary-content-media-flag" title="${data['audio_channels']}" src="${http_root}images/media_flags/audio_channels/${data['audio_channels']}.png" />
|
<img class="summary-content-media-flag" title="${media_info['audio_channels']}" src="${http_root}images/media_flags/audio_channels/${media_info['audio_channels']}.png" />
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
% endif
|
% endif
|
||||||
|
|
|
@ -1013,7 +1013,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" name="notify_recently_added_upgrade" id="notify_recently_added_upgrade" value="1" ${config['notify_recently_added_upgrade']}> Send a Notification for New Versions
|
<input type="checkbox" name="notify_recently_added_upgrade" id="notify_recently_added_upgrade" value="1" ${config['notify_recently_added_upgrade']}> Send a Notification for New Versions <span style="color: #eb8600; padding-left: 10px;">[Not working]</span>
|
||||||
</label>
|
</label>
|
||||||
<p class="help-block">
|
<p class="help-block">
|
||||||
Enable to send another recently added notification when adding a new version of existing media.<br />
|
Enable to send another recently added notification when adding a new version of existing media.<br />
|
||||||
|
|
|
@ -526,6 +526,14 @@ def dbcheck():
|
||||||
'rating_key INTEGER, poster_title TEXT, poster_url TEXT)'
|
'rating_key INTEGER, poster_title TEXT, poster_url TEXT)'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# recently_added table :: This table keeps record of recently added items
|
||||||
|
c_db.execute(
|
||||||
|
'CREATE TABLE IF NOT EXISTS recently_added (id INTEGER PRIMARY KEY AUTOINCREMENT, '
|
||||||
|
'added_at INTEGER, pms_identifier TEXT, section_id INTEGER, '
|
||||||
|
'rating_key INTEGER, parent_rating_key INTEGER, grandparent_rating_key INTEGER, media_type TEXT, '
|
||||||
|
'media_info TEXT)'
|
||||||
|
)
|
||||||
|
|
||||||
# Upgrade sessions table from earlier versions
|
# Upgrade sessions table from earlier versions
|
||||||
try:
|
try:
|
||||||
c_db.execute('SELECT started FROM sessions')
|
c_db.execute('SELECT started FROM sessions')
|
||||||
|
|
|
@ -268,9 +268,29 @@ class TimelineHandler(object):
|
||||||
metadata = pms_connect.get_metadata_details(rating_key)
|
metadata = pms_connect.get_metadata_details(rating_key)
|
||||||
|
|
||||||
if metadata:
|
if metadata:
|
||||||
data = {'timeline_data': metadata, 'notify_action': 'on_created'}
|
notify = True
|
||||||
data.update(kwargs)
|
|
||||||
plexpy.NOTIFY_QUEUE.put(data)
|
if 'child_keys' not in kwargs:
|
||||||
|
data_factory = datafactory.DataFactory()
|
||||||
|
|
||||||
|
if data_factory.get_recently_added_item(rating_key):
|
||||||
|
logger.debug(u"PlexPy TimelineHandler :: Library item %s added already. Not notifying again." % str(rating_key))
|
||||||
|
notify = False
|
||||||
|
|
||||||
|
if notify:
|
||||||
|
data = {'timeline_data': metadata, 'notify_action': 'on_created'}
|
||||||
|
data.update(kwargs)
|
||||||
|
plexpy.NOTIFY_QUEUE.put(data)
|
||||||
|
|
||||||
|
all_keys = [rating_key]
|
||||||
|
if 'child_keys' in kwargs:
|
||||||
|
all_keys.extend(kwargs['child_keys'])
|
||||||
|
|
||||||
|
for key in all_keys:
|
||||||
|
data_factory.set_recently_added_item(key)
|
||||||
|
|
||||||
|
logger.debug(u"Added %s items to the recently_added database table." % str(len(all_keys)))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logger.error(u"PlexPy TimelineHandler :: Unable to retrieve metadata for rating_key %s" \
|
logger.error(u"PlexPy TimelineHandler :: Unable to retrieve metadata for rating_key %s" \
|
||||||
% str(rating_key))
|
% str(rating_key))
|
||||||
|
@ -300,9 +320,9 @@ class TimelineHandler(object):
|
||||||
|
|
||||||
# Add a new media item to the recently added queue
|
# Add a new media item to the recently added queue
|
||||||
if media_type and section_id > 0 and \
|
if media_type and section_id > 0 and \
|
||||||
((state_type == 0 and metadata_state == 'created') or \
|
((state_type == 0 and metadata_state == 'created')): # or \
|
||||||
(plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_UPGRADE and state_type in (1, 5) and \
|
#(plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_UPGRADE and state_type in (1, 5) and \
|
||||||
media_state == 'analyzing' and queue_size is None)):
|
#media_state == 'analyzing' and queue_size is None)):
|
||||||
|
|
||||||
if media_type in ('episode', 'track'):
|
if media_type in ('episode', 'track'):
|
||||||
metadata = self.get_metadata()
|
metadata = self.get_metadata()
|
||||||
|
@ -373,34 +393,35 @@ class TimelineHandler(object):
|
||||||
self.on_created(rating_key)
|
self.on_created(rating_key)
|
||||||
|
|
||||||
# Remove all keys
|
# Remove all keys
|
||||||
self.del_keys(rating_key)
|
del_keys(rating_key)
|
||||||
|
|
||||||
|
|
||||||
# An episode or track is done processing (upgrade only)
|
# An episode or track is done processing (upgrade only)
|
||||||
elif plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_UPGRADE and \
|
#elif plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_UPGRADE and \
|
||||||
media_type in ('episode', 'track') and section_id > 0 and \
|
# media_type in ('episode', 'track') and section_id > 0 and \
|
||||||
state_type == 5 and metadata_state is None and queue_size is None and \
|
# state_type == 5 and metadata_state is None and queue_size is None and \
|
||||||
rating_key in RECENTLY_ADDED_QUEUE:
|
# rating_key in RECENTLY_ADDED_QUEUE:
|
||||||
|
|
||||||
logger.debug(u"PlexPy TimelineHandler :: Library item '%s' (%s) done processing metadata (upgrade)."
|
# logger.debug(u"PlexPy TimelineHandler :: Library item '%s' (%s) done processing metadata (upgrade)."
|
||||||
% (title, str(rating_key)))
|
# % (title, str(rating_key)))
|
||||||
|
|
||||||
grandparent_rating_key = RECENTLY_ADDED_QUEUE[rating_key]
|
# grandparent_rating_key = RECENTLY_ADDED_QUEUE[rating_key]
|
||||||
self.on_created(rating_key)
|
# self.on_created(rating_key)
|
||||||
|
|
||||||
# Remove all keys
|
# # Remove all keys
|
||||||
self.del_keys(grandparent_rating_key)
|
# del_keys(grandparent_rating_key)
|
||||||
|
|
||||||
# An item was deleted, make sure it is removed from the queue
|
# An item was deleted, make sure it is removed from the queue
|
||||||
elif state_type == 9 and metadata_state == 'deleted':
|
elif state_type == 9 and metadata_state == 'deleted':
|
||||||
if rating_key in RECENTLY_ADDED_QUEUE and not RECENTLY_ADDED_QUEUE[rating_key]:
|
if rating_key in RECENTLY_ADDED_QUEUE and not RECENTLY_ADDED_QUEUE[rating_key]:
|
||||||
logger.debug(u"PlexPy TimelineHandler :: Library item %s removed from recently added queue."
|
logger.debug(u"PlexPy TimelineHandler :: Library item %s removed from recently added queue."
|
||||||
% str(rating_key))
|
% str(rating_key))
|
||||||
self.del_keys(rating_key)
|
del_keys(rating_key)
|
||||||
|
|
||||||
def del_keys(self, key):
|
|
||||||
if isinstance(key, set):
|
def del_keys(key):
|
||||||
for child_key in key:
|
if isinstance(key, set):
|
||||||
self.del_keys(child_key)
|
for child_key in key:
|
||||||
elif key in RECENTLY_ADDED_QUEUE:
|
del_keys(child_key)
|
||||||
self.del_keys(RECENTLY_ADDED_QUEUE.pop(key))
|
elif key in RECENTLY_ADDED_QUEUE:
|
||||||
|
del_keys(RECENTLY_ADDED_QUEUE.pop(key))
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
|
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
import plexpy
|
import plexpy
|
||||||
import common
|
import common
|
||||||
import database
|
import database
|
||||||
|
@ -920,6 +922,15 @@ class DataFactory(object):
|
||||||
genres = item['genres'].split(';') if item['genres'] else []
|
genres = item['genres'].split(';') if item['genres'] else []
|
||||||
labels = item['labels'].split(';') if item['labels'] else []
|
labels = item['labels'].split(';') if item['labels'] else []
|
||||||
|
|
||||||
|
media_info = [{'container': item['container'],
|
||||||
|
'bitrate': item['bitrate'],
|
||||||
|
'video_codec': item['video_codec'],
|
||||||
|
'video_resolution': item['video_resolution'],
|
||||||
|
'video_framerate': item['video_framerate'],
|
||||||
|
'audio_codec': item['audio_codec'],
|
||||||
|
'audio_channels': item['audio_channels']
|
||||||
|
}]
|
||||||
|
|
||||||
metadata = {'media_type': item['media_type'],
|
metadata = {'media_type': item['media_type'],
|
||||||
'rating_key': item['rating_key'],
|
'rating_key': item['rating_key'],
|
||||||
'parent_rating_key': item['parent_rating_key'],
|
'parent_rating_key': item['parent_rating_key'],
|
||||||
|
@ -952,13 +963,7 @@ class DataFactory(object):
|
||||||
'labels': labels,
|
'labels': labels,
|
||||||
'library_name': item['section_name'],
|
'library_name': item['section_name'],
|
||||||
'section_id': item['section_id'],
|
'section_id': item['section_id'],
|
||||||
'container': item['container'],
|
'media_info': media_info
|
||||||
'bitrate': item['bitrate'],
|
|
||||||
'video_codec': item['video_codec'],
|
|
||||||
'video_resolution': item['video_resolution'],
|
|
||||||
'video_framerate': item['video_framerate'],
|
|
||||||
'audio_codec': item['audio_codec'],
|
|
||||||
'audio_channels': item['audio_channels']
|
|
||||||
}
|
}
|
||||||
metadata_list.append(metadata)
|
metadata_list.append(metadata)
|
||||||
|
|
||||||
|
@ -1393,4 +1398,43 @@ class DataFactory(object):
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
return [d['machine_id'] for d in result]
|
return [d['machine_id'] for d in result]
|
||||||
|
|
||||||
|
def get_recently_added_item(self, rating_key=''):
|
||||||
|
monitor_db = database.MonitorDatabase()
|
||||||
|
|
||||||
|
if rating_key:
|
||||||
|
try:
|
||||||
|
query = 'SELECT * FROM recently_added WHERE rating_key = ?'
|
||||||
|
result = monitor_db.select(query=query, args=[rating_key])
|
||||||
|
except Exception as e:
|
||||||
|
logger.warn(u"PlexPy DataFactory :: Unable to execute database query for get_recently_added_item: %s." % e)
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def set_recently_added_item(self, rating_key=''):
|
||||||
|
monitor_db = database.MonitorDatabase()
|
||||||
|
|
||||||
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
|
metadata = pms_connect.get_metadata_details(rating_key)
|
||||||
|
|
||||||
|
keys = {'rating_key': metadata['rating_key']}
|
||||||
|
|
||||||
|
values = {'added_at': metadata['added_at'],
|
||||||
|
'section_id': metadata['section_id'],
|
||||||
|
'parent_rating_key': metadata['parent_rating_key'],
|
||||||
|
'grandparent_rating_key': metadata['grandparent_rating_key'],
|
||||||
|
'media_type': metadata['media_type'],
|
||||||
|
'media_info': json.dumps(metadata['media_info'])
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
monitor_db.upsert(table_name='recently_added', key_dict=keys, value_dict=values)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warn(u"PlexPy DataFactory :: Unable to execute database query for set_recently_added_item: %s." % e)
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
|
@ -388,12 +388,10 @@ class Libraries(object):
|
||||||
pms_connect = pmsconnect.PmsConnect()
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
|
|
||||||
if rating_key:
|
if rating_key:
|
||||||
library_children = pms_connect.get_library_children_details(rating_key=rating_key,
|
library_children = pms_connect.get_library_children_details(rating_key=rating_key)
|
||||||
get_media_info=True)
|
|
||||||
elif section_id:
|
elif section_id:
|
||||||
library_children = pms_connect.get_library_children_details(section_id=section_id,
|
library_children = pms_connect.get_library_children_details(section_id=section_id,
|
||||||
section_type=section_type,
|
section_type=section_type)
|
||||||
get_media_info=True)
|
|
||||||
|
|
||||||
if library_children:
|
if library_children:
|
||||||
library_count = library_children['library_count']
|
library_count = library_children['library_count']
|
||||||
|
@ -404,8 +402,11 @@ class Libraries(object):
|
||||||
|
|
||||||
new_rows = []
|
new_rows = []
|
||||||
for item in children_list:
|
for item in children_list:
|
||||||
|
## TODO: Check list of media info items, currently only grabs first item
|
||||||
|
media_info = item['media_info'][0] if item['media_info'] else {}
|
||||||
|
|
||||||
cached_file_size = cached_items.get(item['rating_key'], None)
|
cached_file_size = cached_items.get(item['rating_key'], None)
|
||||||
file_size = cached_file_size if cached_file_size else item.get('file_size', '')
|
file_size = cached_file_size if cached_file_size else media_info.get('file_size', '')
|
||||||
|
|
||||||
row = {'section_id': library_details['section_id'],
|
row = {'section_id': library_details['section_id'],
|
||||||
'section_type': library_details['section_type'],
|
'section_type': library_details['section_type'],
|
||||||
|
@ -419,13 +420,13 @@ class Libraries(object):
|
||||||
'media_index': item['media_index'],
|
'media_index': item['media_index'],
|
||||||
'parent_media_index': item['parent_media_index'],
|
'parent_media_index': item['parent_media_index'],
|
||||||
'thumb': item['thumb'],
|
'thumb': item['thumb'],
|
||||||
'container': item.get('container', ''),
|
'container': media_info.get('container', ''),
|
||||||
'bitrate': item.get('bitrate', ''),
|
'bitrate': media_info.get('bitrate', ''),
|
||||||
'video_codec': item.get('video_codec', ''),
|
'video_codec': media_info.get('video_codec', ''),
|
||||||
'video_resolution': item.get('video_resolution', ''),
|
'video_resolution': media_info.get('video_resolution', ''),
|
||||||
'video_framerate': item.get('video_framerate', ''),
|
'video_framerate': media_info.get('video_framerate', ''),
|
||||||
'audio_codec': item.get('audio_codec', ''),
|
'audio_codec': media_info.get('audio_codec', ''),
|
||||||
'audio_channels': item.get('audio_channels', ''),
|
'audio_channels': media_info.get('audio_channels', ''),
|
||||||
'file_size': file_size
|
'file_size': file_size
|
||||||
}
|
}
|
||||||
new_rows.append(row)
|
new_rows.append(row)
|
||||||
|
@ -561,11 +562,13 @@ class Libraries(object):
|
||||||
file_size = 0
|
file_size = 0
|
||||||
|
|
||||||
metadata = pms_connect.get_metadata_children_details(rating_key=item['rating_key'],
|
metadata = pms_connect.get_metadata_children_details(rating_key=item['rating_key'],
|
||||||
get_children=True,
|
get_children=True)
|
||||||
get_media_info=True)
|
|
||||||
|
|
||||||
for child_metadata in metadata:
|
for child_metadata in metadata:
|
||||||
file_size += helpers.cast_to_int(child_metadata.get('file_size', 0))
|
## TODO: Check list of media info items, currently only grabs first item
|
||||||
|
media_info = item['media_info'][0] if item['media_info'] else {}
|
||||||
|
|
||||||
|
file_size += helpers.cast_to_int(media_info.get('file_size', 0))
|
||||||
|
|
||||||
item['file_size'] = file_size
|
item['file_size'] = file_size
|
||||||
|
|
||||||
|
|
|
@ -263,12 +263,15 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, *
|
||||||
rating_key = timeline['rating_key']
|
rating_key = timeline['rating_key']
|
||||||
|
|
||||||
pms_connect = pmsconnect.PmsConnect()
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
metadata = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True)
|
metadata = pms_connect.get_metadata_details(rating_key=rating_key)
|
||||||
|
|
||||||
if not metadata:
|
if not metadata:
|
||||||
logger.error(u"PlexPy NotificationHandler :: Unable to retrieve metadata for rating_key %s" % str(rating_key))
|
logger.error(u"PlexPy NotificationHandler :: Unable to retrieve metadata for rating_key %s" % str(rating_key))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
## TODO: Check list of media info items, currently only grabs first item
|
||||||
|
media_info = metadata['media_info'][0] if metadata['media_info'] else {}
|
||||||
|
|
||||||
child_metadata = grandchild_metadata = []
|
child_metadata = grandchild_metadata = []
|
||||||
for key in kwargs.pop('child_keys', []):
|
for key in kwargs.pop('child_keys', []):
|
||||||
child_metadata.append(pms_connect.get_metadata_details(rating_key=key))
|
child_metadata.append(pms_connect.get_metadata_details(rating_key=key))
|
||||||
|
@ -434,16 +437,16 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, *
|
||||||
'machine_id': session.get('machine_id',''),
|
'machine_id': session.get('machine_id',''),
|
||||||
# Metadata parameters
|
# Metadata parameters
|
||||||
'media_type': metadata['media_type'],
|
'media_type': metadata['media_type'],
|
||||||
'container': session.get('container', metadata.get('container','')),
|
'container': session.get('container', media_info.get('container','')),
|
||||||
'video_codec': session.get('video_codec', metadata.get('video_codec','')),
|
'video_codec': session.get('video_codec', media_info.get('video_codec','')),
|
||||||
'video_bitrate': session.get('bitrate', metadata.get('bitrate','')),
|
'video_bitrate': session.get('bitrate', media_info.get('bitrate','')),
|
||||||
'video_width': session.get('width', metadata.get('width','')),
|
'video_width': session.get('width', media_info.get('width','')),
|
||||||
'video_height': session.get('height', metadata.get('height','')),
|
'video_height': session.get('height', media_info.get('height','')),
|
||||||
'video_resolution': session.get('video_resolution', metadata.get('video_resolution','')),
|
'video_resolution': session.get('video_resolution', media_info.get('video_resolution','')),
|
||||||
'video_framerate': session.get('video_framerate', metadata.get('video_framerate','')),
|
'video_framerate': session.get('video_framerate', media_info.get('video_framerate','')),
|
||||||
'aspect_ratio': session.get('aspect_ratio', metadata.get('aspect_ratio','')),
|
'aspect_ratio': session.get('aspect_ratio', media_info.get('aspect_ratio','')),
|
||||||
'audio_codec': session.get('audio_codec', metadata.get('audio_codec','')),
|
'audio_codec': session.get('audio_codec', media_info.get('audio_codec','')),
|
||||||
'audio_channels': session.get('audio_channels', metadata.get('audio_channels','')),
|
'audio_channels': session.get('audio_channels', media_info.get('audio_channels','')),
|
||||||
'title': full_title,
|
'title': full_title,
|
||||||
'library_name': metadata['library_name'],
|
'library_name': metadata['library_name'],
|
||||||
'show_name': show_name,
|
'show_name': show_name,
|
||||||
|
@ -489,8 +492,8 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, *
|
||||||
'themoviedb_url': metadata.get('themoviedb_url',''),
|
'themoviedb_url': metadata.get('themoviedb_url',''),
|
||||||
'lastfm_url': metadata.get('lastfm_url',''),
|
'lastfm_url': metadata.get('lastfm_url',''),
|
||||||
'trakt_url': metadata.get('trakt_url',''),
|
'trakt_url': metadata.get('trakt_url',''),
|
||||||
'file': metadata.get('file',''),
|
'file': media_info.get('file',''),
|
||||||
'file_size': helpers.humanFileSize(metadata.get('file_size','')),
|
'file_size': helpers.humanFileSize(media_info.get('file_size','')),
|
||||||
'section_id': metadata['section_id'],
|
'section_id': metadata['section_id'],
|
||||||
'rating_key': metadata['rating_key'],
|
'rating_key': metadata['rating_key'],
|
||||||
'parent_rating_key': metadata['parent_rating_key'],
|
'parent_rating_key': metadata['parent_rating_key'],
|
||||||
|
|
|
@ -871,29 +871,32 @@ class PmsConnect(object):
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
if get_media_info and metadata_main.getElementsByTagName('Media'):
|
media_info_list = []
|
||||||
item_media = metadata_main.getElementsByTagName('Media')[0]
|
media_items = metadata_main.getElementsByTagName('Media')
|
||||||
media_info = {'container': helpers.get_xml_attr(item_media, 'container'),
|
for item in media_items:
|
||||||
'bitrate': helpers.get_xml_attr(item_media, 'bitrate'),
|
media_info = {'container': helpers.get_xml_attr(item, 'container'),
|
||||||
'height': helpers.get_xml_attr(item_media, 'height'),
|
'bitrate': helpers.get_xml_attr(item, 'bitrate'),
|
||||||
'width': helpers.get_xml_attr(item_media, 'width'),
|
'height': helpers.get_xml_attr(item, 'height'),
|
||||||
'aspect_ratio': helpers.get_xml_attr(item_media, 'aspectRatio'),
|
'width': helpers.get_xml_attr(item, 'width'),
|
||||||
'video_codec': helpers.get_xml_attr(item_media, 'videoCodec'),
|
'aspect_ratio': helpers.get_xml_attr(item, 'aspectRatio'),
|
||||||
'video_resolution': helpers.get_xml_attr(item_media, 'videoResolution'),
|
'video_codec': helpers.get_xml_attr(item, 'videoCodec'),
|
||||||
'video_framerate': helpers.get_xml_attr(item_media, 'videoFrameRate'),
|
'video_resolution': helpers.get_xml_attr(item, 'videoResolution'),
|
||||||
'audio_codec': helpers.get_xml_attr(item_media, 'audioCodec'),
|
'video_framerate': helpers.get_xml_attr(item, 'videoFrameRate'),
|
||||||
'audio_channels': helpers.get_xml_attr(item_media, 'audioChannels'),
|
'audio_codec': helpers.get_xml_attr(item, 'audioCodec'),
|
||||||
'file': helpers.get_xml_attr(item_media.getElementsByTagName('Part')[0], 'file'),
|
'audio_channels': helpers.get_xml_attr(item, 'audioChannels'),
|
||||||
'file_size': helpers.get_xml_attr(item_media.getElementsByTagName('Part')[0], 'size'),
|
'file': helpers.get_xml_attr(item.getElementsByTagName('Part')[0], 'file'),
|
||||||
}
|
'file_size': helpers.get_xml_attr(item.getElementsByTagName('Part')[0], 'size'),
|
||||||
metadata.update(media_info)
|
}
|
||||||
|
media_info_list.append(media_info)
|
||||||
|
|
||||||
|
metadata['media_info'] = media_info_list
|
||||||
|
|
||||||
if metadata_list:
|
if metadata_list:
|
||||||
return metadata_list[0]
|
return metadata_list[0]
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_metadata_children_details(self, rating_key='', get_children=False, get_media_info=False):
|
def get_metadata_children_details(self, rating_key='', get_children=False):
|
||||||
"""
|
"""
|
||||||
Return processed and validated metadata list for all children of requested item.
|
Return processed and validated metadata list for all children of requested item.
|
||||||
|
|
||||||
|
@ -920,7 +923,7 @@ class PmsConnect(object):
|
||||||
metadata_main = a.getElementsByTagName('Video')
|
metadata_main = a.getElementsByTagName('Video')
|
||||||
for item in metadata_main:
|
for item in metadata_main:
|
||||||
child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
|
child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
|
||||||
metadata = self.get_metadata_details(str(child_rating_key), get_media_info)
|
metadata = self.get_metadata_details(str(child_rating_key))
|
||||||
if metadata:
|
if metadata:
|
||||||
metadata_list.append(metadata)
|
metadata_list.append(metadata)
|
||||||
|
|
||||||
|
@ -928,7 +931,7 @@ class PmsConnect(object):
|
||||||
metadata_main = a.getElementsByTagName('Track')
|
metadata_main = a.getElementsByTagName('Track')
|
||||||
for item in metadata_main:
|
for item in metadata_main:
|
||||||
child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
|
child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
|
||||||
metadata = self.get_metadata_details(str(child_rating_key), get_media_info)
|
metadata = self.get_metadata_details(str(child_rating_key))
|
||||||
if metadata:
|
if metadata:
|
||||||
metadata_list.append(metadata)
|
metadata_list.append(metadata)
|
||||||
|
|
||||||
|
@ -937,7 +940,7 @@ class PmsConnect(object):
|
||||||
metadata_main = [d for d in dir_main if helpers.get_xml_attr(d, 'ratingKey')]
|
metadata_main = [d for d in dir_main if helpers.get_xml_attr(d, 'ratingKey')]
|
||||||
for item in metadata_main:
|
for item in metadata_main:
|
||||||
child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
|
child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
|
||||||
metadata = self.get_metadata_children_details(str(child_rating_key), get_children, get_media_info)
|
metadata = self.get_metadata_children_details(str(child_rating_key), get_children)
|
||||||
if metadata:
|
if metadata:
|
||||||
metadata_list.extend(metadata)
|
metadata_list.extend(metadata)
|
||||||
|
|
||||||
|
|
|
@ -3441,7 +3441,7 @@ class WebInterface(object):
|
||||||
metadata.update(poster_info)
|
metadata.update(poster_info)
|
||||||
else:
|
else:
|
||||||
pms_connect = pmsconnect.PmsConnect()
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
metadata = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True)
|
metadata = pms_connect.get_metadata_details(rating_key=rating_key)
|
||||||
if metadata:
|
if metadata:
|
||||||
data_factory = datafactory.DataFactory()
|
data_factory = datafactory.DataFactory()
|
||||||
poster_info = data_factory.get_poster_info(metadata=metadata)
|
poster_info = data_factory.get_poster_info(metadata=metadata)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue