mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-11 15:56:07 -07:00
Allow custom search query to update metadata
This commit is contained in:
parent
b24e9a2185
commit
cc287607cd
5 changed files with 72 additions and 33 deletions
|
@ -245,7 +245,7 @@ ${next.headerIncludes()}
|
|||
$.ajax({
|
||||
type: 'post',
|
||||
url: 'search',
|
||||
data: { 'query': $('#query').val() }
|
||||
data: { query: $('#query').val() }
|
||||
})
|
||||
} else {
|
||||
e.preventDefault();
|
||||
|
|
|
@ -2641,6 +2641,14 @@ table[id^='media_info_child'] table[id^='media_info_child'] thead th {
|
|||
-o-transition: background 0.3s;
|
||||
transition: background 0.3s;
|
||||
}
|
||||
#update_search_form div.input-group {
|
||||
display: inline-table;
|
||||
vertical-align: middle;
|
||||
max-width: 250px;
|
||||
}
|
||||
#update_search_form #update_query {
|
||||
margin: 5px 0 0 0.5em;
|
||||
}
|
||||
.notification-params {
|
||||
margin-top: 10px;
|
||||
background-color: #282828;
|
||||
|
|
|
@ -515,11 +515,15 @@ DOCUMENTATION :: END
|
|||
</script>
|
||||
% endif
|
||||
<script>
|
||||
$('#row-edit-mode').after('<a href="update_metadata?rating_key=${data['rating_key']}" class="btn btn-danger btn-edit" id="fix-metadata"> \
|
||||
<i class="fa fa-wrench"></i> Fix Metadata</a>');
|
||||
$("#airdate").html(moment($("#airdate").text()).format('MMM DD, YYYY'));
|
||||
$("#runtime").html(millisecondsToMinutes($("#runtime").text(), true));
|
||||
$('div.art-face').animate({ opacity: 0.2 }, { duration: 1000 });
|
||||
</script>
|
||||
% if source == 'history':
|
||||
<script>
|
||||
$('#row-edit-mode').after('<a href="update_metadata?rating_key=${data['rating_key']}&update=True" class="btn btn-danger btn-edit" id="fix-metadata"> \
|
||||
<i class="fa fa-wrench"></i> Fix Metadata</a>');
|
||||
</script>
|
||||
% endif
|
||||
% endif
|
||||
</%def>
|
||||
|
|
|
@ -71,15 +71,28 @@ DOCUMENTATION :: END
|
|||
</div>
|
||||
<div class="summary-content-wrapper">
|
||||
<div class='col-md-12'>
|
||||
% if not update:
|
||||
<div style="text-align: center; margin-top: 20px;">
|
||||
<i class="fa fa-exclamation-triangle"></i> Error retrieving item metadata. This media item is not available in the Plex Media Server library.
|
||||
<i class="fa fa-exclamation-triangle"></i> PlexPy cannot find this item's metadata. Either this media item is not available in the Plex Media Server library or it has been moved.
|
||||
</div>
|
||||
% endif
|
||||
<div style="text-align: center; margin-top: 20px;">
|
||||
Please select the correct match below to update the PlexPy database.
|
||||
<i class="fa fa-info-circle"></i> Please select the correct match below to update the PlexPy database.
|
||||
</div>
|
||||
<div class='table-card-header'>
|
||||
<div class="header-bar">
|
||||
<span>Search Results for <strong>${query['query_string']}</strong></span>
|
||||
<span>Search Results for <strong><span id="update_query_title">${query['query_string']}</span></strong></span>
|
||||
</div>
|
||||
<div class="button-bar">
|
||||
<form class="form" id="update_search_form">
|
||||
Incorrect search results? Try a different query:
|
||||
<div class="input-group" role="group" aria-label="Update Metadata Query">
|
||||
<input type="search" class="form-control" name="update_query" id="update_query" aria-label="Query" placeholder="Query..." value="${query['query_string']}" />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-form btn-dark btn-inactive" type="submit" id="update_search_button"><i class="fa fa-search"></i></button>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class='table-card-back'>
|
||||
|
@ -143,7 +156,7 @@ DOCUMENTATION :: END
|
|||
<div class="summary-content-wrapper">
|
||||
<div class='col-md-12'>
|
||||
<div style="text-align: center; margin-top: 20px;">
|
||||
<i class="fa fa-exclamation-triangle"></i> Error retrieving item metadata. This media item is not available in the Plex Media Server library.
|
||||
<i class="fa fa-exclamation-triangle"></i> PlexPy cannot find this item's metadata. Either this media item is not available in the Plex Media Server library or it has been moved.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -157,36 +170,43 @@ DOCUMENTATION :: END
|
|||
|
||||
% if query:
|
||||
<script>
|
||||
function getSearchResults() {
|
||||
var query_string = $('#update_query').val();
|
||||
$.ajax({
|
||||
url: 'get_search_results_children',
|
||||
type: 'GET',
|
||||
async: true,
|
||||
data: {'query': "${query['query_string']}",
|
||||
'media_type': "${query['media_type']}",
|
||||
'season_index': "${query['parent_media_index']}"
|
||||
data: {
|
||||
query: query_string,
|
||||
media_type: '${query["media_type"]}',
|
||||
season_index: '${query["parent_media_index"]}'
|
||||
},
|
||||
complete: function (xhr, status) {
|
||||
$("#search-results-list").html(xhr.responseText); }
|
||||
$('#search-results-list').html(xhr.responseText);
|
||||
$('#update_query_title').html(query_string)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('click', '#search-results-list a', function (e) {
|
||||
e.preventDefault();
|
||||
var new_rating_key = $(this).attr("id");
|
||||
var new_href = $(this).attr("href");
|
||||
var new_rating_key = $(this).attr('id');
|
||||
var new_href = $(this).attr('href');
|
||||
|
||||
$('#new_title').html($(this).find('.item-children-instance-text-wrapper').html());
|
||||
|
||||
$('#confirm-modal').modal();
|
||||
$('#confirm-modal').one('click', '#confirm-update', function () {
|
||||
$(this).prop('disabled', true);
|
||||
var msg = "<i class='fa fa-refresh fa-spin'></i> Updating database..."
|
||||
var msg = '<i class="fa fa-refresh fa-spin"></i> Updating database...'
|
||||
showMsg(msg, false, false, 0)
|
||||
|
||||
$.ajax({
|
||||
url: 'update_metadata_details',
|
||||
data: {
|
||||
old_rating_key: "${query['rating_key']}",
|
||||
old_rating_key: '${query["rating_key"]}',
|
||||
new_rating_key: new_rating_key,
|
||||
media_type: "${query['media_type']}"
|
||||
media_type: '${query["media_type"]}'
|
||||
},
|
||||
async: true,
|
||||
success: function (data) {
|
||||
|
@ -195,6 +215,15 @@ DOCUMENTATION :: END
|
|||
});
|
||||
});
|
||||
});
|
||||
|
||||
getSearchResults();
|
||||
$('#update_search_form').submit(function (e) {
|
||||
e.preventDefault();
|
||||
if ($('#update_query').val().trim() != '')
|
||||
{
|
||||
getSearchResults();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
% endif
|
||||
</%def>
|
|
@ -1469,7 +1469,7 @@ class WebInterface(object):
|
|||
metadata = result['metadata']
|
||||
|
||||
if metadata:
|
||||
return serve_template(templatename="info.html", data=metadata, title="Info", config=config)
|
||||
return serve_template(templatename="info.html", data=metadata, title="Info", config=config, source=source)
|
||||
else:
|
||||
return self.update_metadata(rating_key, query)
|
||||
|
||||
|
@ -1542,10 +1542,8 @@ class WebInterface(object):
|
|||
if media_type:
|
||||
result['results_list'] = {media_type: result['results_list'][media_type]}
|
||||
if media_type == 'season' and season_index:
|
||||
for season in result['results_list']['season']:
|
||||
if season['media_index'] == season_index:
|
||||
result['results_list']['season'] = [season]
|
||||
break
|
||||
result['results_list']['season'] = [season for season in result['results_list']['season']
|
||||
if season['media_index'] == season_index]
|
||||
|
||||
if result:
|
||||
return serve_template(templatename="info_search_results_list.html", data=result, title="Search Result List")
|
||||
|
@ -1558,9 +1556,9 @@ class WebInterface(object):
|
|||
##### Update Metadata #####
|
||||
|
||||
@cherrypy.expose
|
||||
def update_metadata(self, rating_key=None, query=None, **kwargs):
|
||||
|
||||
def update_metadata(self, rating_key=None, query=None, update=False, **kwargs):
|
||||
query_string = query
|
||||
update = True if update == 'True' else False
|
||||
|
||||
data_factory = datafactory.DataFactory()
|
||||
query = data_factory.get_search_query(rating_key=rating_key)
|
||||
|
@ -1568,10 +1566,10 @@ class WebInterface(object):
|
|||
query['query_string'] = query_string
|
||||
|
||||
if query:
|
||||
return serve_template(templatename="update_metadata.html", query=query, title="Info")
|
||||
return serve_template(templatename="update_metadata.html", query=query, update=update, title="Info")
|
||||
else:
|
||||
logger.warn(u"Unable to retrieve data for update_metadata.")
|
||||
return serve_template(templatename="update_metadata.html", query=query, title="Info")
|
||||
return serve_template(templatename="update_metadata.html", query=query, update=update, title="Info")
|
||||
|
||||
@cherrypy.expose
|
||||
def update_metadata_details(self, old_rating_key, new_rating_key, media_type, **kwargs):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue