2020-02-06 11:40:39 +00:00
{% extends '_main.html' %}
{% block title %}Movie - Bazarr{% endblock %}
2020-03-11 10:58:45 +00:00
{% block page_head %}
2020-02-06 11:40:39 +00:00
< style >
#movieFanart {
background-repeat: no-repeat;
background-size: cover;
background-position: top center;
box-sizing: initial;
margin-left: -32px;
2020-02-13 09:12:23 +00:00
margin-top: -5px;
2020-02-06 11:40:39 +00:00
padding: 2em;
}
2019-04-20 21:15:00 +00:00
2020-02-06 11:40:39 +00:00
#movieDetails {
padding: 30px;
background: rgba(0, 0, 0, 0.7);
color: white;
margin: -32px;
}
2019-04-20 21:15:00 +00:00
2020-02-06 11:40:39 +00:00
#moviePoster {
2020-02-07 17:40:43 +00:00
max-height: 250px;
2020-02-06 11:40:39 +00:00
}
2019-04-20 21:15:00 +00:00
2020-02-06 11:40:39 +00:00
h1 {
color: white;
}
2019-05-21 13:13:49 +00:00
2020-02-06 11:40:39 +00:00
span {
margin-right: 0.5em;
}
2020-02-07 17:40:43 +00:00
.badge {
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
vertical-align: middle;
}
2020-02-06 11:40:39 +00:00
< / style >
2020-03-11 10:58:45 +00:00
{% endblock page_head %}
2020-02-06 11:40:39 +00:00
{% block bcleft %}
< div class = "" >
< button class = "btn btn-outline" id = "scan_button" >
< div > < i class = "fas fa-sync align-top text-themecolor text-center font-20" aria-hidden = "true" > < / i > < / div >
< div class = "align-bottom text-themecolor small text-center" > Scan Disk< / div >
< / button >
< button class = "btn btn-outline" id = "search_button" >
< div > < i class = "fas fa-search align-top text-themecolor text-center font-20" aria-hidden = "true" > < / i > < / div >
< div class = "align-bottom text-themecolor small text-center" > Search< / div >
< / button >
2020-02-08 13:38:59 +00:00
< button class = "btn btn-outline" id = "manual_button" >
< div > < i class = "fas fa-user align-top text-themecolor text-center font-20" aria-hidden = "true" > < / i > < / div >
< div class = "align-bottom text-themecolor small text-center" > Manual< / div >
< / button >
< button class = "btn btn-outline" id = "upload_button" >
< div > < i class = " fas fa-cloud-upload-alt align-top text-themecolor text-center font-20" aria-hidden = "true" > < / i > < / div >
< div class = "align-bottom text-themecolor small text-center" > Upload< / div >
< / button >
< button class = "btn btn-outline" id = "history_button" >
< div > < i class = "fas fa-history align-top text-themecolor text-center font-20" aria-hidden = "true" > < / i > < / div >
< div class = "align-bottom text-themecolor small text-center" > History< / div >
< / button >
2020-06-12 19:08:44 +00:00
< button class = "btn btn-outline" id = "tools_button" >
< div > < i class = "fa fa-briefcase align-top text-themecolor text-center font-20" aria-hidden = "true" > < / i > < / div >
< div class = "align-bottom text-themecolor small text-center" > Tools< / div >
< / button >
2020-02-06 11:40:39 +00:00
< / div >
{% endblock bcleft %}
{% block bcright %}
< div class = "d-flex m-t-5 justify-content-end" >
< button class = "btn btn-outline" id = "edit_button" >
< div > < i class = "fas fa-wrench align-top text-themecolor text-center font-20" aria-hidden = "true" > < / i > < / div >
< div class = "align-bottom text-themecolor small text-center" > Edit Movie< / div >
< / button >
< / div >
{% endblock bcright %}
{% block body %}
< div class = "container-fluid" id = "movieFanart" >
< div class = "row justify-content-md-center" id = "movieDetails" >
< div class = "col-sm-auto" id = "moviePosterColumn" >
< img id = "moviePoster" src = "" >
< / div >
2020-02-07 17:40:43 +00:00
< div class = "col" id = "movieDetailsColumn" >
2020-02-06 11:40:39 +00:00
< div class = "container-fluid" >
< div class = "row" >
< h1 > < span id = "movieTitle" > < / span > < / h1 >
< i class = "far fa-clone" id = "moviealternativeTitles" data-toggle = "tooltip" data-placement = "right" title = "None" data-html = "true" > < / i >
2018-04-19 23:45:10 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< div class = "row" >
< h5 > < span id = "movieAudioLanguage" class = "badge badge-secondary" > < / span > < / h5 >
2020-02-07 17:40:43 +00:00
< h5 > < span id = "movieMappedPath" data-toggle = "tooltip" data-placement = "right" title = "None" class = "badge badge-secondary" > < / span > < / h5 >
2020-02-06 11:40:39 +00:00
< / div >
< div class = "row" >
< h5 > < span id = "movieSubtitlesLanguages" > < / span > < / h5 >
< / div >
< div class = "row" >
< h5 > < span id = "movieHearingImpaired" class = "badge badge-secondary" > < / span > < / h5 >
< h5 > < span id = "movieForced" class = "badge badge-secondary" > < / span > < / h5 >
< / div >
< div class = "row" >
< span id = "movieDescription" > < / span >
2018-04-24 14:48:52 +00:00
< / div >
2018-04-19 23:45:10 +00:00
< / div >
< / div >
2020-02-06 11:40:39 +00:00
< / div >
< / div >
2020-02-13 16:37:32 +00:00
<!-- Bread crumb and right sidebar toggle -->
<!-- ============================================================== -->
< table id = "movieSubtitles" class = "table table-striped" style = "width:100%" >
< thead >
< tr >
< th > Subtitles Path< / th >
< th > Language(s)< / th >
< th > < / th >
< / tr >
< / thead >
< / table >
< br >
< h5 style = "font-weight: 500;" > Missing Subtitles< / h5 >
< span id = "missingSubtitles" > < / span >
2020-02-06 11:40:39 +00:00
2020-04-20 09:21:18 +00:00
< div id = "manualSearchModal" class = "modal" tabindex = "-1" role = "dialog" data-backdrop = "static" >
2020-03-23 01:03:49 +00:00
< div class = "modal-dialog modal-xl" role = "document" >
2020-02-06 11:40:39 +00:00
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" > < span id = "movie_title_span" > < / span > < / h5 > < br >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >
< span aria-hidden = "true" > × < / span >
< / button >
2018-09-10 21:10:33 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< div class = "modal-body" >
< h6 > Movie path is: < span id = "movie_path_span" class = "badge badge-secondary" > < / span >
< br > Scenename is: < span id = "movie_scenename_span" class = "badge badge-secondary" > < / span > < / h6 >
2020-04-20 09:21:18 +00:00
< div class = "container-fluid" style = "padding:0px;" >
2020-05-13 04:20:14 +00:00
< table id = "search_result" class = "table table-striped" style = "width:100%" >
2020-02-06 11:40:39 +00:00
< thead >
2018-09-10 21:10:33 +00:00
< tr >
< th style = "text-align: left;" > Score:< / th >
2020-04-20 09:21:18 +00:00
< th > < / th >
2018-09-10 21:10:33 +00:00
< th style = "text-align: left;" > Provider:< / th >
2019-10-01 03:29:08 +00:00
< th style = "text-align: left;" > Matching:< / th >
2019-10-20 12:09:43 +00:00
< th style = "text-align: left;" > Releases:< / th >
2020-04-20 09:21:18 +00:00
< th style = "text-align: left;" > Uploader:< / th >
2020-02-06 11:40:39 +00:00
< th > < / th >
2018-09-10 21:10:33 +00:00
< / tr >
2020-02-06 11:40:39 +00:00
< / thead >
< / table >
< / div >
2018-09-10 21:10:33 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-dismiss = "modal" > Cancel< / button >
2018-09-10 21:10:33 +00:00
< / div >
< / div >
2020-02-06 11:40:39 +00:00
< / div >
< / div >
< div id = "uploadModal" class = "modal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-lg" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" > < span id = "upload_movie_title_span" > < / span > < / h5 > < br >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >
< span aria-hidden = "true" > × < / span >
< / button >
2019-08-23 00:02:11 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< form class = "form" name = "upload_form" id = "upload_form" >
< div class = "modal-body" >
< div class = "container-fluid" >
< div class = "row" >
< div class = "col-sm-2 text-right" >
Language
2019-08-23 00:02:11 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< div class = "form-group col-sm-8 pl-sm-0" >
< select class = "selectpicker" id = "manual_language_select" name = "language" > < / select >
2019-08-23 00:02:11 +00:00
< / div >
< / div >
2020-02-06 11:40:39 +00:00
< div class = "row" >
< div class = "col-sm-2 text-right" >
Forced
2019-08-23 00:02:11 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< div class = "form-group col-sm-1 pl-sm-0" >
< label class = "custom-control custom-checkbox" >
< input type = "checkbox" class = "custom-control-input" id = "forced_checkbox" name = "forced" >
< span class = "custom-control-label" for = "forced_checkbox" > < / span >
< / label >
2019-08-23 00:02:11 +00:00
< / div >
< / div >
2020-02-06 11:40:39 +00:00
< div class = "row" >
< div class = "col-sm-2 text-right" >
File
2019-08-23 00:02:11 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< div class = "form-group col-sm-7 pl-sm-0" >
< div class = "custom-file" >
< input type = "file" class = "custom-file-input" id = "upload" name = "upload" >
< label class = "custom-file-label" for = "upload" > Choose file< / label >
< / div >
2019-08-23 00:02:11 +00:00
< / div >
< / div >
< / div >
2020-02-06 11:40:39 +00:00
2019-08-23 00:02:11 +00:00
< input type = "hidden" id = "upload_moviePath" name = "moviePath" value = "" / >
< input type = "hidden" id = "upload_sceneName" name = "sceneName" value = "" / >
< input type = "hidden" id = "upload_radarrId" name = "radarrId" value = "" / >
< input type = "hidden" id = "upload_title" name = "title" value = "" / >
2020-06-01 01:59:33 +00:00
< input type = "hidden" id = "upload_audioLanguage" name = "audioLanguage" value = "" / >
2020-02-06 11:40:39 +00:00
< / div >
< div class = "modal-footer" >
2020-02-12 21:51:31 +00:00
< button type = "submit" id = "upload_save_button" class = "btn btn-info" > Save< / button >
2020-02-06 11:40:39 +00:00
< button type = "button" class = "btn btn-secondary" data-dismiss = "modal" > Cancel< / button >
< / div >
< / form >
< / div >
< / div >
< / div >
< div id = "editModal" class = "modal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-lg" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" > < span id = "edit_movie_title_span" > < / span > < / h5 > < br >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >
< span aria-hidden = "true" > × < / span >
< / button >
< / div >
< form class = "form" name = "edit_form" id = "edit_form" >
< div class = "modal-body" >
< div class = "container-fluid" >
< div class = "row" >
< div class = "col-sm-3 text-right" >
Audio Language
< / div >
< div class = "form-group col-sm-8 pl-sm-0" >
< span id = "edit_audio_language_span" > < / span >
< / div >
< / div >
< div class = "row" >
< div class = "col-sm-3 text-right" >
Subtitles Language(s)
< / div >
< div class = "form-group col-sm-8 pl-sm-0" >
< select class = "selectpicker" id = "edit_languages_select" name = "languages" multiple data-live-search = "true" > < / select >
< / div >
< / div >
< div class = "row" >
< div class = "col-sm-3 text-right" >
Hearing-Impaired
< / div >
< div class = "form-group col-sm-1 pl-sm-0" >
< label class = "custom-control custom-checkbox" >
< input type = "checkbox" class = "custom-control-input" id = "hi_checkbox" name = "hi" >
< span class = "custom-control-label" for = "hi_checkbox" > < / span >
< / label >
< / div >
< / div >
< div class = "row" >
< div class = "col-sm-3 text-right" >
Forced
< / div >
< div class = "form-group col-sm-8 pl-sm-0" >
< select class = "selectpicker" id = "edit_forced_select" name = "forced" >
< option value = "False" > False< / option >
< option value = "True" > True< / option >
< option value = "Both" > Both< / option >
< / select >
< / div >
< / div >
< / div >
< input type = "hidden" id = "edit_radarrId" name = "radarrId" value = "" / >
< / div >
< div class = "modal-footer" >
2020-02-12 21:51:31 +00:00
< button type = "submit" id = "edit_save_button" class = "btn btn-info" > Save< / button >
2020-02-06 11:40:39 +00:00
< button type = "button" class = "btn btn-secondary" data-dismiss = "modal" > Cancel< / button >
< / div >
< / form >
< / div >
< / div >
< / div >
< div id = "movieHistoryModal" class = "modal" tabindex = "-1" role = "dialog" >
2020-05-15 00:34:10 +00:00
< div class = "modal-dialog modal-xl" role = "document" >
2020-02-06 11:40:39 +00:00
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" > < span id = "movie_history_title_span" > < / span > < / h5 > < br >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >
< span aria-hidden = "true" > × < / span >
< / button >
< / div >
< div class = "modal-body" >
< div class = "container-fluid" >
2020-05-15 00:34:10 +00:00
< table id = "movie_history_result" class = "table table-striped" style = "width:100%" >
2020-02-06 11:40:39 +00:00
< thead >
< tr >
< th > < / th >
< th style = "text-align: left;" > Language.:< / th >
< th style = "text-align: left;" > Provider:< / th >
< th style = "text-align: left;" > Score:< / th >
< th style = "text-align: left;" > Date:< / th >
< / tr >
< / thead >
< / table >
< / div >
2019-08-23 00:02:11 +00:00
< / div >
2020-02-06 11:40:39 +00:00
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-dismiss = "modal" > Cancel< / button >
2019-08-23 00:02:11 +00:00
< / div >
< / div >
2020-02-06 11:40:39 +00:00
< / div >
< / div >
2020-06-12 19:08:44 +00:00
< div id = "movieToolsModal" class = "modal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" > < span id = "movie_tools_title_span" > < / span > < / h5 > < br >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >
< span aria-hidden = "true" > × < / span >
< / button >
< / div >
< div class = "modal-body" >
< div class = "container-fluid" >
< table id = "movie_tools_result" class = "table table-striped" style = "width:100%" >
< thead >
< tr >
< th style = "text-align: left;" > Language:< / th >
< th style = "text-align: left;" > Filename:< / th >
< th style = "text-align: left;" > Sync:< / th >
< / tr >
< / thead >
< / table >
< / div >
< / div >
< div class = "modal-footer" >
2020-06-14 12:14:01 +00:00
< button type = "button" class = "btn btn-secondary" data-dismiss = "modal" > Close< / button >
2020-06-12 19:08:44 +00:00
< / div >
< / div >
< / div >
< / div >
2020-02-06 11:40:39 +00:00
{% endblock body %}
2019-08-23 00:02:11 +00:00
2020-02-06 11:40:39 +00:00
{% block tail %}
2018-04-19 23:45:10 +00:00
< script >
2020-02-06 11:40:39 +00:00
// make the filename appear in upload file dialog once a file have been selected.
$(document).ready(function () {
document.querySelector('.custom-file-input').addEventListener('change',function(e){
var fileName = document.getElementById("upload").files[0].name;
var nextSibling = e.target.nextElementSibling;
nextSibling.innerText = fileName;
});
2018-09-10 21:10:33 +00:00
2020-02-06 11:40:39 +00:00
$('#movies_nav').addClass("active");
2018-09-10 21:10:33 +00:00
2020-02-06 11:40:39 +00:00
movieDetailsRefresh();
getLanguages();
getEnabledLanguages();
2020-02-08 13:38:59 +00:00
//test
2020-02-07 17:40:43 +00:00
$('#movieSubtitles').on('click', '.remove_subtitles', function(e){
2020-02-06 11:40:39 +00:00
$(this).tooltip('dispose');
e.preventDefault();
const values = {
2020-02-08 13:38:59 +00:00
moviePath: movieDetails['mapped_path'],
language: $(this).data("language"),
subtitlesPath: $(this).data("subtitlespath"),
2020-02-07 17:40:43 +00:00
radarrId: movieDetails['radarrId'],
tmdbid: movieDetails['tmdbId']
2020-02-06 11:40:39 +00:00
};
2020-02-12 17:41:40 +00:00
var cell = $(this).parent();
2020-02-06 11:40:39 +00:00
$.ajax({
2020-02-07 17:40:43 +00:00
url: "{{ url_for('api.moviesubtitlesdelete') }}",
2020-02-06 11:40:39 +00:00
type: "DELETE",
dataType: "json",
data: values,
beforeSend: function() {
cell.html('< div class = "spinner-border spinner-border-sm" role = "status" > < span class = "sr-only" > Loading...< / span > < / div > ');
}
});
2018-09-10 21:10:33 +00:00
});
2020-02-06 11:40:39 +00:00
2020-02-08 13:38:59 +00:00
$(document).on('click', '.get_subtitle', function(e){
2020-02-06 11:40:39 +00:00
$(this).tooltip('dispose');
e.preventDefault();
const values = {
2020-02-08 13:38:59 +00:00
moviePath: movieDetails['mapped_path'],
sceneName: movieDetails['sceneName'],
2020-02-06 11:40:39 +00:00
language: $(this).attr("data-language"),
2020-02-08 13:38:59 +00:00
hi: movieDetails['hearing_impaired'],
2020-02-12 17:41:40 +00:00
forced:$(this).attr("data-forced"),
2020-02-07 17:40:43 +00:00
radarrId: movieDetails['radarrId'],
title: movieDetails['title']
2020-02-06 11:40:39 +00:00
};
2020-02-12 17:41:40 +00:00
var button = $(this).closest('button' + '');
2020-02-06 11:40:39 +00:00
$.ajax({
2020-02-07 17:40:43 +00:00
url: "{{ url_for('api.moviesubtitlesdownload') }}",
2020-02-06 11:40:39 +00:00
type: "POST",
dataType: "json",
data: values,
beforeSend: function() {
2020-02-07 17:40:43 +00:00
button.html('< div class = "spinner-border spinner-border-sm" role = "status" > < span class = "sr-only" > Loading...< / span > < / div > ');
2020-02-06 11:40:39 +00:00
}
});
2018-09-10 21:10:33 +00:00
});
2018-04-19 23:45:10 +00:00
2020-02-08 13:38:59 +00:00
$('#manual_button').on('click', function(e){
2020-02-06 11:40:39 +00:00
e.preventDefault();
2020-02-07 17:40:43 +00:00
$("#movie_title_span").html(movieDetails['title']);
2020-02-08 13:38:59 +00:00
$("#movie_path_span").html(movieDetails['mapped_path']);
$("#movie_scenename_span").html(movieDetails['sceneName']);
2020-02-06 11:40:39 +00:00
2020-02-08 13:38:59 +00:00
moviePath = movieDetails['mapped_path'];
sceneName = movieDetails['sceneName'];
language = movieDetails['desired_languages'];
2020-02-07 17:40:43 +00:00
hi = movieDetails['hearing_impaired'];
forced = movieDetails['forced'];
radarrId = movieDetails['radarrId'];
var languages = Array.from(movieDetails['languages']);
2020-02-06 11:40:39 +00:00
var is_pb = languages.includes('pb');
var is_pt = languages.includes('pt');
const values = {
2020-02-07 17:40:43 +00:00
moviePath: moviePath,
2020-02-06 11:40:39 +00:00
sceneName: sceneName,
language: language,
hi: hi,
forced: forced,
2020-02-07 17:40:43 +00:00
radarrId: radarrId,
title: movieDetails['title']
2020-02-06 11:40:39 +00:00
};
$('#search_result').DataTable( {
destroy: true,
language: {
2020-02-07 17:40:43 +00:00
zeroRecords: 'No Subtitles Found For This Movie',
2020-05-06 08:33:21 +00:00
processing: "Searching{% if settings.general.anti_captcha_provider != 'None' %} (possibly solving captcha){% endif %}...",
search: "Filter:"
2020-02-06 11:40:39 +00:00
},
paging: true,
2020-04-20 14:28:12 +00:00
lengthChange: true,
pageLength: {{ settings.general.page_size_manual_search }},
lengthMenu: [ 5, 10, 15, 20, 25 ],
2020-05-03 09:03:09 +00:00
searching: true,
2020-05-15 00:34:10 +00:00
scrollX: true,
2020-02-06 11:40:39 +00:00
ordering: false,
processing: true,
serverSide: false,
ajax: {
2020-02-07 17:40:43 +00:00
url: '{{ url_for('api.moviesubtitlesmanualsearch') }}',
2020-02-06 11:40:39 +00:00
type: 'POST',
data: values
},
columns: [
{ data: 'score',
render: function ( data ) {
return data +'%';
}
},
{ data: null,
render: function ( data ) {
2020-04-20 09:21:18 +00:00
let lng = data.language;
2020-02-06 11:40:39 +00:00
if ( data.language === "pt" & & is_pb === true & & is_pt === false) {
2020-04-20 09:21:18 +00:00
lng = 'pb'
}
let text = '< div class = "badge badge-secondary" style = "margin:1px;" > ' + lng.toUpperCase() + '< / div > ';
if (data.hearing_impaired == "True") {
text += '< div class = "badge badge-dark" style = "margin:1px;" > HI< / div > ';
2020-02-06 11:40:39 +00:00
}
2020-04-20 09:21:18 +00:00
return text;
2020-02-06 11:40:39 +00:00
}
},
{ data: null,
render: function ( data ) {
return '< a href = "'+data.url+'" target = "_blank" > '+data.provider+'< / a > ';
}
},
{ data: null,
2020-05-03 09:03:09 +00:00
searchable: false,
2020-02-06 11:40:39 +00:00
render: function ( data ) {
const array_matches = data.matches;
const array_dont_matches = data.dont_matches;
let i;
2020-04-20 09:21:18 +00:00
let text = '< div class = "dropdown" > < div class = "btn-group dropdown" > < button class = "btn btn-secondary btn-sm dropdown-toggle" type = "button" id = "dropdownMenuButton" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" style = "margin:1px;" > < i class = "fas fa-check-circle" style = "color: green;" > < / i > '+array_matches.length+'< / button > < div class = "dropdown-menu" aria-labelledby = "dropdownMenuButton" > ';
2020-02-06 11:40:39 +00:00
for (i = 0; i < array_matches.length ; i + + ) {
text += '< a class = "dropdown-item disabled" href = "#" > ' + array_matches[i] + '< / a > ';
}
text += '< / div > ';
2020-04-20 09:21:18 +00:00
text += '< div class = "dropdown" > < button class = "btn btn-secondary btn-sm dropdown-toggle" type = "button" id = "dropdownMenuButton" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" style = "margin:1px;" > < i class = "fas fa-times-circle" style = "color: red;" > < / i > '+array_dont_matches.length+'< / button > < div class = "dropdown-menu" aria-labelledby = "dropdownMenuButton" > ';
2020-02-06 11:40:39 +00:00
for (i = 0; i < array_dont_matches.length ; i + + ) {
text += '< a class = "dropdown-item disabled" href = "#" > ' + array_dont_matches[i] + '< / a > ';
}
text += '< / div > < / div > < / div > ';
return text;
}
},
{ data: null,
render: function ( data ) {
const array_release_info = data.release_info;
let i;
2020-04-21 07:43:51 +00:00
let text;
if (array_release_info.length == 1) {
text = '< div style = "font-size: 75%;font-weight: 400;" > ' + array_release_info[0] + '< / div > ';
}
else {
text = '< div class = "dropdown" > < button class = "btn btn-secondary btn-sm dropdown-toggle" type = "button" id = "dropdownMenuButton" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" > < i class = "\tfas fa-comment-dots" > < / i > ' + array_release_info.length + '< / button > < div class = "dropdown-menu" aria-labelledby = "dropdownMenuButton" > ';
for (i = 0; i < array_release_info.length ; i + + ) {
text += '< a class = "dropdown-item" href = "#" > ' + array_release_info[i] + '< / a > ';
}
text += '< / div > < / div > ';
}
2020-02-06 11:40:39 +00:00
return text;
}
},
2020-04-20 09:21:18 +00:00
{ data: 'uploader',
2020-04-20 14:28:12 +00:00
render: function ( data ) {
2020-04-20 09:21:18 +00:00
return '< div class = "badge badge-secondary" > ' + data + '< / div > ';
}
},
2020-02-06 11:40:39 +00:00
{ data: null,
2020-05-03 09:03:09 +00:00
searchable: false,
2020-02-06 11:40:39 +00:00
render: function ( data ) {
2020-02-07 17:40:43 +00:00
return '< a href = "" class = "manual_download badge badge-secondary" data-moviePath = "'+moviePath+'" data-sceneName = "'+sceneName+'" data-subtitle = "'+data.subtitle+'" data-provider = "'+data.provider+'" data-language = "'+data.language+'" data-forced = "'+forced+'" > < i class = "fas fa-download" style = "margin-right:0px" > < / i > < / a > ';
2020-02-06 11:40:39 +00:00
}
}
]
} );
2018-09-10 21:10:33 +00:00
2020-02-06 11:40:39 +00:00
$('#manualSearchModal')
.modal({
focus: false
});
});
2018-09-10 21:10:33 +00:00
2020-02-06 11:40:39 +00:00
$('#search_result').on('click', '.manual_download', function(e){
e.preventDefault();
const values = {
2020-02-07 17:40:43 +00:00
moviePath: $(this).attr("data-moviepath"),
2020-02-06 11:40:39 +00:00
sceneName: $(this).attr("data-scenename"),
language: $(this).attr("data-language"),
2020-02-07 17:40:43 +00:00
hi: movieDetails['hearing_impaired'],
2020-02-06 11:40:39 +00:00
forced: $(this).attr("data-forced"),
provider: $(this).attr("data-provider"),
subtitle: $(this).attr("data-subtitle"),
2020-02-07 17:40:43 +00:00
radarrId: movieDetails['radarrId'],
title: movieDetails['title']
2020-02-06 11:40:39 +00:00
};
2020-02-12 17:41:40 +00:00
var cell = $(this).parent();
2020-02-06 11:40:39 +00:00
$.ajax({
2020-02-07 17:40:43 +00:00
url: "{{ url_for('api.moviesubtitlesmanualdownload') }}",
2020-02-06 11:40:39 +00:00
type: "POST",
dataType: "json",
data: values,
beforeSend: function() {
cell.html('< div class = "spinner-border spinner-border-sm" role = "status" > < span class = "sr-only" > Loading...< / span > < / div > ');
},
complete: function(data) {
$('#manualSearchModal').modal('hide');
}
});
2018-09-10 21:10:33 +00:00
});
2020-02-06 11:40:39 +00:00
2020-02-08 13:38:59 +00:00
$('#upload_button').on('click', function(e){
2020-02-06 11:40:39 +00:00
e.preventDefault();
2020-02-07 17:40:43 +00:00
$("#upload_movie_title_span").html(movieDetails['title']);
2020-06-01 01:59:33 +00:00
$('#upload_moviePath').val(movieDetails['mapped_path']);
$('#upload_sceneName').val(movieDetails['sceneName']);
$('#upload_radarrId').val(movieDetails['radarrId']);
$('#upload_title').val(movieDetails['title']);
$('#upload_audioLanguage').val(movieDetails['audio_language']['name']);
2020-02-06 11:40:39 +00:00
$('#manual_language_select').empty();
$.each(enabledLanguages, function (i, item) {
$('#manual_language_select').append('< option value = "'+item.code2+'" > '+item.name+'< / option > ');
});
$("#manual_language_select").selectpicker("refresh");
$('#uploadModal')
.modal({
focus: false
});
2018-09-10 21:10:33 +00:00
});
2020-02-06 11:40:39 +00:00
$('#upload_form').on('submit', function(e){
e.preventDefault();
var formdata = new FormData(document.getElementById("upload_form"));
$.ajax({
2020-02-07 17:40:43 +00:00
url: "{{ url_for('api.moviesubtitlesupload') }}",
2020-02-06 11:40:39 +00:00
data: formdata,
processData: false,
contentType: false,
type: 'POST',
2020-06-12 19:08:44 +00:00
beforeSend: function () {
$('#upload_save_button').html('< div class = "spinner-border spinner-border-sm" role = "status" > < span class = "sr-only" > Loading...< / span > < / div > ');
},
complete: function(){
2020-02-06 11:40:39 +00:00
$('#uploadModal').modal('hide');
}
});
2018-09-10 21:10:33 +00:00
});
2018-04-19 23:45:10 +00:00
2020-02-06 11:40:39 +00:00
$('#scan_button').on('click', function(e){
e.preventDefault();
$.ajax({
2020-02-07 17:40:43 +00:00
url: "{{ url_for('api.moviescandisk', radarrid=id) }}",
2020-02-06 11:40:39 +00:00
type: 'GET',
beforeSend: function() {
$('#scan_button').find("i").addClass('fa-spin');
},
complete: function() {
$('#scan_button').find("i").removeClass('fa-spin');
}
});
});
2018-04-19 23:45:10 +00:00
2020-02-06 11:40:39 +00:00
$('#search_button').on('click', function(e){
e.preventDefault();
$.ajax({
2020-02-07 17:40:43 +00:00
url: "{{ url_for('api.moviesearchmissing', radarrid=id) }}",
2020-02-06 11:40:39 +00:00
type: 'GET',
beforeSend: function() {
$('#search_button').find("i").addClass('fa-spin');
},
complete: function() {
$('#search_button').find("i").removeClass('fa-spin');
}
});
});
2018-04-19 23:45:10 +00:00
2020-02-06 11:40:39 +00:00
$('#edit_button').on('click', function(e){
e.preventDefault();
2020-02-07 17:40:43 +00:00
$("#edit_movie_title_span").html(movieDetails['title']);
$("#edit_audio_language_span").text(movieDetails['audio_language']['name']);
$('#edit_radarrId').val(movieDetails['radarrId']);
2018-04-19 23:45:10 +00:00
2020-02-06 11:40:39 +00:00
$('#edit_languages_select').empty();
if ('{{settings.general.single_language}}' === 'True') {
$('#edit_languages_select').selectpicker({maxOptions: 1});
$('#edit_languages_select').append('< option value = "None" > None< / option > ');
}
$.each(enabledLanguages, function (i, item) {
$('#edit_languages_select').append('< option value = "'+item.code2+'" > '+item.name+'< / option > ');
});
$("#edit_languages_select").selectpicker("refresh");
var selected_languages = Array();
2020-02-07 17:40:43 +00:00
$.each(Array.from(movieDetails['languages']), function (i, item) {
2020-02-06 11:40:39 +00:00
selected_languages.push(item.code2);
});
$('#edit_languages_select').selectpicker('val', selected_languages);
2020-02-07 17:40:43 +00:00
$('#hi_checkbox').prop('checked', (movieDetails['hearing_impaired'] === 'True'));
$('#edit_forced_select').val(movieDetails['forced']).change();
2020-02-06 11:40:39 +00:00
$('#editModal')
.modal({
focus: false
});
});
2018-04-19 23:45:10 +00:00
2020-02-06 11:40:39 +00:00
$('#edit_form').on('submit', function(e){
e.preventDefault();
var formdata = new FormData(document.getElementById("edit_form"));
2019-05-22 03:33:59 +00:00
2020-02-06 11:40:39 +00:00
$.ajax({
2020-02-07 17:40:43 +00:00
url: "{{ url_for('api.movies') }}?radarrid={{id}}",
2020-02-06 11:40:39 +00:00
data: formdata,
processData: false,
contentType: false,
type: 'POST',
success: function(){
2020-02-07 17:40:43 +00:00
movieDetailsRefresh();
2020-02-06 11:40:39 +00:00
$('#editModal').modal('hide');
}
});
});
2018-04-19 23:45:10 +00:00
2020-02-06 11:40:39 +00:00
$('#uploadModal').on('hidden.bs.modal', function () {
$(this).find('form')[0].reset();
});
2018-09-10 21:10:33 +00:00
2020-02-06 11:40:39 +00:00
events.on('event', function(event) {
var event_json = JSON.parse(event);
2020-02-12 17:41:40 +00:00
if (event_json.type === 'movie') {
if (event_json.movie === {{id}}) {
2020-02-07 17:40:43 +00:00
movieDetailsRefresh();
2020-02-06 11:40:39 +00:00
}
}
});
2020-02-08 13:38:59 +00:00
$('#history_button').on('click', function(e){
2020-02-06 11:40:39 +00:00
$(this).tooltip('dispose');
e.preventDefault();
2020-02-07 17:40:43 +00:00
$("#movie_history_title_span").html(movieDetails['title']);
2020-02-06 11:40:39 +00:00
2020-02-08 13:38:59 +00:00
radarrId = movieDetails['radarrId'];
2020-02-06 11:40:39 +00:00
2020-02-07 17:40:43 +00:00
$('#movie_history_result').DataTable( {
2020-02-06 11:40:39 +00:00
destroy: true,
language: {
2020-02-07 17:40:43 +00:00
zeroRecords: 'No History Records Found For This Movie'
2018-09-10 21:10:33 +00:00
},
2020-02-06 11:40:39 +00:00
paging: true,
lengthChange: false,
pageLength: 5,
searching: true,
ordering: false,
2020-05-15 00:34:10 +00:00
scrollX: true,
2020-02-06 11:40:39 +00:00
processing: false,
serverSide: false,
ajax: {
2020-02-07 17:40:43 +00:00
url: '{{ url_for( 'api.moviehistory' )}}?radarrid=' + radarrId
2019-10-01 03:29:08 +00:00
},
2020-02-06 11:40:39 +00:00
columns: [
{ data: 'action',
"render": function(data) {
if (data === 0) {return "< i class = 'fas fa-trash' title = 'Subtitle file has been erased.' data-toggle = 'tooltip' data-placement = 'right' > < / i > ";}
else if (data === 1) {return "< i class = 'fas fa-download' title = 'Subtitle file has been downloaded.' data-toggle = 'tooltip' data-placement = 'right' > < / i > ";}
else if (data === 2) {return "< i class = 'fas fa-user' title = 'Subtitle file has been manually downloaded.' data-toggle = 'tooltip' data-placement = 'right' > < / i > ";}
else if (data === 3) {return "< i class = 'fas fa-recycle' title = 'Subtitle file has been upgraded.' data-toggle = 'tooltip' data-placement = 'right' > < / i > ";}
else if (data === 4) {return "< i class = 'fas fa-cloud-upload-alt' title = 'Subtitle file has been manually uploaded.' data-toggle = 'tooltip' data-placement = 'right' > < / i > ";}
2020-06-12 19:08:44 +00:00
else if (data === 5) {return "< i class = 'fas fa-clock' title = 'Subtitle file has been synced.' data-toggle = 'tooltip' data-placement = 'right' > < / i > ";}
2020-02-06 11:40:39 +00:00
}},
{ data: 'language' },
{ data: 'provider' },
{ data: 'score'},
{ data: 'timestamp' }
]
} );
2020-02-07 17:40:43 +00:00
$('#movieHistoryModal')
2020-02-06 11:40:39 +00:00
.modal({
focus: false
});
});
2020-06-12 19:08:44 +00:00
$('#tools_button').on('click', function (e) {
$(this).tooltip('dispose');
e.preventDefault();
$("#movie_tools_title_span").html(movieDetails['title']);
radarrId = movieDetails['radarrId'];
$('#movie_tools_result').DataTable({
destroy: true,
language: {
zeroRecords: 'No External Subtitles Found For This Movie'
},
paging: true,
lengthChange: false,
pageLength: 5,
searching: true,
ordering: false,
scrollX: true,
processing: false,
serverSide: false,
ajax: {
url: '{{ url_for( 'api.movietools' )}}?movieid=' + radarrId
},
columns: [
{data: 'language.name'},
{data: 'filename'},
{
data: null,
"render": function (data) {
return '< a href = "" class = "subtitles_sync badge badge-secondary" data-language = "' + data.language.code3 + '" data-path = "' + data.path + '" data-videopath = "' + data.videopath + '" > < i class = "far fa-play-circle" > < / i > < / a > ';
}
}
]
});
$('#movieToolsModal')
.modal({
focus: false
});
});
$('#movie_tools_result').on('click', '.subtitles_sync', function (e) {
e.preventDefault();
const values = {
language: $(this).attr("data-language"),
subtitlesPath: $(this).attr("data-path"),
videoPath: $(this).attr("data-videopath"),
mediaType: 'movies'
};
var cell = $(this).parent()
;
$.ajax({
url: "{{ url_for('api.syncsubtitles') }}",
type: "POST",
dataType: "json",
data: values,
beforeSend: function () {
cell.html('< div class = "spinner-border spinner-border-sm" role = "status" > < span class = "sr-only" > Loading...< / span > < / div > ');
},
complete: function (data) {
$('#movieToolsModal').modal('hide');
}
});
});
2019-08-23 00:02:11 +00:00
});
2020-02-06 11:40:39 +00:00
function movieDetailsRefresh() {
$.ajax({
url: "{{ url_for('api.movies') }}?radarrid={{id}}"
}).done(function (data) {
movieDetails = data.data[0];
$(document).prop('title', movieDetails['title'] + ' - Bazarr');
$('#movieFanart').css('background-image', "url('{{ url_for('image_proxy_movies', url='MediaCover/'+id+'/fanart.jpg') }}')");
$('#moviePoster').attr("src", "{{ url_for('image_proxy_movies', url='MediaCover/'+id+'/poster-250.jpg') }}");
$('#movieTitle').text(movieDetails['title']);
if (movieDetails['alternativeTitles'].length > 0) {
$('#moviealternativeTitles').attr("data-original-title", "< b > Alternative Titles:< / b > < br > " + movieDetails['alternativeTitles']);
} else {
$('#moviealternativeTitles').hide();
}
2018-09-10 21:10:33 +00:00
2020-06-01 01:59:33 +00:00
$('#movieAudioLanguage').text(movieDetails['audio_language']['name']);
2020-02-06 11:40:39 +00:00
$('#movieMappedPath').text(movieDetails['mapped_path']);
2020-02-07 17:40:43 +00:00
$('#movieMappedPath').attr("data-original-title", movieDetails['mapped_path']);
2018-09-10 21:10:33 +00:00
2020-02-08 13:46:02 +00:00
var languages = '';
2020-03-24 21:04:59 +00:00
if (movieDetails['languages'] & & movieDetails['languages'] !== 'None') {
2020-02-06 11:40:39 +00:00
movieDetails['languages'].forEach(appendFunc);
}
2018-09-10 21:10:33 +00:00
2020-02-06 11:40:39 +00:00
function appendFunc(value) {
2020-02-08 13:38:59 +00:00
languages += '< span class = "badge badge-secondary" data-toggle = "tooltip" data-placement = "right" title = "' + value.name + '" > ' + value.code2 + '< / span > ';
2020-02-06 11:40:39 +00:00
}
$('#movieSubtitlesLanguages').html(languages);
$('#movieHearingImpaired').text('Hearing-Impaired: ' + movieDetails['hearing_impaired']);
$('#movieForced').text('Forced: ' + movieDetails['forced']);
$('#movieDescription').text(movieDetails['overview']);
2020-02-08 13:46:02 +00:00
var missing_languages = '';
2020-02-08 13:38:59 +00:00
if (movieDetails['missing_subtitles'] !== 'None') {
movieDetails['missing_subtitles'].forEach(missingAppendFunc);
}
function missingAppendFunc(value) {
2020-02-12 17:41:40 +00:00
if (value.forced) {
missing_languages += '< button class = "get_subtitle btn btn-secondary btn-sm" type = "button" data-toggle = "tooltip" data-placement = "right" data-original-title = "' + value.name + '" data-language = "' + value.code3 + '" data-forced = ' + value.forced + ' > ' + value.code2 + ':forced < i class = "fas fa-search" > < / i > < / button > ';
} else {
missing_languages += '< button class = "get_subtitle btn btn-secondary btn-sm" type = "button" data-toggle = "tooltip" data-placement = "right" data-original-title = "' + value.name + '" data-language = "' + value.code3 + '" data-forced = ' + value.forced + ' > ' + value.code2 + ' < i class = "fas fa-search" > < / i > < / button > ';
}
2020-02-08 13:38:59 +00:00
}
$('#missingSubtitles').html(missing_languages);
2020-02-06 11:40:39 +00:00
$('[data-toggle="tooltip"]').tooltip({html: true});
2020-02-07 17:40:43 +00:00
2020-02-08 13:38:59 +00:00
if (movieDetails['desired_languages'] == '[]') {
$('#search_button').hide();
$('#manual_button').hide();
$('#upload_button').hide();
} else {
$('#search_button').show();
$('#manual_button').show();
$('#upload_button').show();
}
2020-02-07 17:40:43 +00:00
var table = $('#movieSubtitles').DataTable({
destroy: true,
language: {
zeroRecords: 'No Subtitles Found For This Movie'
},
"searching": false,
"ordering": false,
"paging": false,
"info": false,
"lengthChange": false,
2020-02-12 17:41:40 +00:00
"responsive": true,
2020-02-07 17:40:43 +00:00
"data" : movieDetails['subtitles'],
"columns" : [
{ "data" : null,
"render": function(data) {
if (data['path']) {
return data['path'];
} else {
return 'Video File Subtitles Track';
}
}
},
{ "data" : null,
"render": function(data) {
if (data['forced']) {
return '< span class = "badge badge-secondary" > ' + data['name'] + ' forced< / span > ';
} else {
return '< span class = "badge badge-secondary" > ' + data['name'] + '< / span > ';
}
}
2020-02-08 13:38:59 +00:00
},
{ "data" : null,
"render": function(data) {
if (data['path']) {
return '< button type = "button" class = "remove_subtitles close" aria-label = "Close" data-toggle = "tooltip" data-placement = "right" title = "Delete Subtitles File" data-language = '+data[' code3 ' ] + ' data-subtitlesPath = "'+data['path']+'" > < span aria-hidden = "true" > × < / span > < / button > ';
} else {
return '';
}
}
2020-02-07 17:40:43 +00:00
}
]
});
2020-02-06 11:40:39 +00:00
});
}
2018-09-10 21:10:33 +00:00
2020-02-06 11:40:39 +00:00
function getLanguages() {
2018-09-10 21:10:33 +00:00
$.ajax({
2020-02-06 11:40:39 +00:00
url: "{{ url_for('api.languages') }}?enabled=false",
success:function(data) {
availableLanguages = data;
}
2018-09-10 21:10:33 +00:00
});
2020-02-06 11:40:39 +00:00
}
function getEnabledLanguages() {
$.ajax({
url: "{{ url_for('api.languages') }}?enabled=true",
success:function(data) {
enabledLanguages = data;
}
2018-09-10 21:10:33 +00:00
});
2018-12-15 00:36:28 +00:00
}
2019-09-17 14:57:34 +00:00
< / script >
2020-02-06 11:40:39 +00:00
{% endblock tail %}