Allow custom search query to update metadata

This commit is contained in:
JonnyWong16 2016-01-23 12:40:41 -08:00
parent b24e9a2185
commit cc287607cd
5 changed files with 72 additions and 33 deletions

View file

@ -245,7 +245,7 @@ ${next.headerIncludes()}
$.ajax({
type: 'post',
url: 'search',
data: { 'query': $('#query').val() }
data: { query: $('#query').val() }
})
} else {
e.preventDefault();

View file

@ -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;

View file

@ -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>

View file

@ -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>
$.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']}"
},
complete: function(xhr, status) {
$("#search-results-list").html(xhr.responseText); }
});
function getSearchResults() {
var query_string = $('#update_query').val();
$.ajax({
url: 'get_search_results_children',
type: 'GET',
async: true,
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);
$('#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>&nbspUpdating database..."
var msg = '<i class="fa fa-refresh fa-spin"></i>&nbspUpdating 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>

View file

@ -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):