mirror of
https://github.com/morpheus65535/bazarr.git
synced 2025-02-25 15:25:57 +08:00
WIP
This commit is contained in:
parent
b0c82174be
commit
49c93780bf
3 changed files with 45 additions and 34 deletions
|
@ -4,6 +4,7 @@ import libs
|
|||
from datetime import timedelta
|
||||
import datetime
|
||||
import pretty
|
||||
import time
|
||||
|
||||
from get_args import args
|
||||
from config import settings, base_url
|
||||
|
@ -376,6 +377,27 @@ class EpisodesSearchMissing(Resource):
|
|||
return '', 200
|
||||
|
||||
|
||||
class EpisodesHistory(Resource):
|
||||
def get(self):
|
||||
episodeid = request.args.get('episodeid')
|
||||
|
||||
episode_history = database.execute("SELECT action, timestamp, language, provider, score FROM table_history "
|
||||
"WHERE sonarrEpisodeId=? ORDER BY timestamp DESC", (episodeid,))
|
||||
for item in episode_history:
|
||||
item['timestamp'] = "<div title='" + \
|
||||
time.strftime('%d/%m/%Y %H:%M:%S', time.localtime(item['timestamp'])) + \
|
||||
"' data-toggle='tooltip' data-placement='left'>" + \
|
||||
pretty.date(datetime.datetime.fromtimestamp(item['timestamp'])) + "</div>"
|
||||
if item['language']:
|
||||
item['language'] = language_from_alpha2(item['language'])
|
||||
else:
|
||||
item['language'] = "<i>undefined</i>"
|
||||
if item['score']:
|
||||
item['score'] = str(round((int(item['score']) * 100 / 360), 2)) + "%"
|
||||
|
||||
return jsonify(data=episode_history)
|
||||
|
||||
|
||||
class Movies(Resource):
|
||||
def get(self):
|
||||
start = request.args.get('start') or 0
|
||||
|
@ -691,6 +713,7 @@ api.add_resource(EpisodesSubtitlesManualDownload, '/episodes_subtitles_manual_do
|
|||
api.add_resource(EpisodesSubtitlesUpload, '/episodes_subtitles_upload')
|
||||
api.add_resource(EpisodesScanDisk, '/episodes_scan_disk')
|
||||
api.add_resource(EpisodesSearchMissing, '/episodes_search_missing')
|
||||
api.add_resource(EpisodesHistory, '/episodes_history')
|
||||
api.add_resource(Movies, '/movies')
|
||||
api.add_resource(HistorySeries, '/history_series')
|
||||
api.add_resource(HistoryMovies, '/history_movies')
|
||||
|
|
|
@ -1637,25 +1637,6 @@ def episode_history(no):
|
|||
episode_history = database.execute("SELECT action, timestamp, language, provider, score FROM table_history "
|
||||
"WHERE sonarrEpisodeId=? ORDER BY timestamp DESC", (no,))
|
||||
for item in episode_history:
|
||||
if item['action'] == 0:
|
||||
item['action'] = "<div class ='ui inverted basic compact icon' data-tooltip='Subtitle file has been " \
|
||||
"erased.' data-inverted='' data-position='top left'><i class='ui trash icon'></i></div>"
|
||||
elif item['action'] == 1:
|
||||
item['action'] = "<div class ='ui inverted basic compact icon' data-tooltip='Subtitle file has been " \
|
||||
"downloaded.' data-inverted='' data-position='top left'><i class='ui download " \
|
||||
"icon'></i></div>"
|
||||
elif item['action'] == 2:
|
||||
item['action'] = "<div class ='ui inverted basic compact icon' data-tooltip='Subtitle file has been " \
|
||||
"manually downloaded.' data-inverted='' data-position='top left'><i class='ui user " \
|
||||
"icon'></i></div>"
|
||||
elif item['action'] == 3:
|
||||
item['action'] = "<div class ='ui inverted basic compact icon' data-tooltip='Subtitle file has been " \
|
||||
"upgraded.' data-inverted='' data-position='top left'><i class='ui recycle " \
|
||||
"icon'></i></div>"
|
||||
elif item['action'] == 4:
|
||||
item['action'] = "<div class ='ui inverted basic compact icon' data-tooltip='Subtitle file has been " \
|
||||
"manually uploaded.' data-inverted='' data-position='top left'><i class='ui cloud " \
|
||||
"upload icon'></i></div>"
|
||||
item['timestamp'] = "<div data-tooltip='" + \
|
||||
time.strftime('%d/%m/%Y %H:%M:%S', time.localtime(item['timestamp'])) + "'>" + \
|
||||
pretty.date(datetime.fromtimestamp(item['timestamp'])) + "</div>"
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<h1><span id="seriesTitle"></span></h1>
|
||||
<i class="far fa-clone" id="seriesAlternateTitles" data-toggle="tooltip" data-placement="right"></i>
|
||||
<i class="far fa-clone" id="seriesAlternateTitles" data-toggle="tooltip" data-placement="right" title="None" data-html="true"></i>
|
||||
</div>
|
||||
<div class="row">
|
||||
<h5><span id="seriesAudioLanguage" class="badge badge-secondary"></span></h5>
|
||||
|
@ -264,7 +264,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div id="episodeHistoryModal " class="modal" tabindex="-1" role="dialog">
|
||||
<div id="episodeHistoryModal" class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
|
@ -275,7 +275,7 @@
|
|||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<table id="episode_result" class="display" style="width:100%">
|
||||
<table id="episode_history_result" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
|
@ -341,7 +341,7 @@
|
|||
{"data": "episode"},
|
||||
{"data": null,
|
||||
"render": function (data) {
|
||||
return '<a href="" data-season='+data.season+' data-episode='+data.episode+' data-episode_title="'+data.title+'" data-sonarrEpisodeId='+data.sonarrEpisodeId+' class="episode_history">'+data.title+'</a>';
|
||||
return '<a href="" data-toggle="tooltip" title="Path is: '+data.mapped_path+'" data-season='+data.season+' data-episode='+data.episode+' data-episodeTitle="'+data.title+'" data-sonarrEpisodeId='+data.sonarrEpisodeId+' class="episode_history">'+data.title+'</a>';
|
||||
}
|
||||
},
|
||||
{"data": null,
|
||||
|
@ -400,7 +400,7 @@
|
|||
});
|
||||
|
||||
$('#episodes').on('click', '.remove_subtitles', function(e){
|
||||
$(this).tooltip('hide');
|
||||
$(this).tooltip('dispose');
|
||||
e.preventDefault();
|
||||
const values = {
|
||||
episodePath: $(this).attr("data-episodePath"),
|
||||
|
@ -423,7 +423,7 @@
|
|||
});
|
||||
|
||||
$('#episodes').on('click', '.get_subtitle', function(e){
|
||||
$(this).tooltip('hide');
|
||||
$(this).tooltip('dispose');
|
||||
e.preventDefault();
|
||||
const values = {
|
||||
episodePath: $(this).attr("data-episodepath"),
|
||||
|
@ -741,14 +741,15 @@
|
|||
}
|
||||
});
|
||||
|
||||
$('.episode_history').on('click', function(e){
|
||||
$('#episodes').on('click', '.episode_history', function(e){
|
||||
$(this).tooltip('dispose');
|
||||
e.preventDefault();
|
||||
|
||||
$("#episode_history_title_span").html(seriesDetails['title'] + ' - ' + $(this).data("season") + 'x' + $(this).data("episode") + ' - ' + $(this).data("episode_title"));
|
||||
$("#episode_history_title_span").html(seriesDetails['title'] + ' - ' + $(this).data("season") + 'x' + $(this).data("episode") + ' - ' + $(this).data("episodetitle"));
|
||||
|
||||
sonarrEpisodeId = $(this).data("sonarrEpisodeId");
|
||||
sonarrEpisodeId = $(this).data("sonarrepisodeid");
|
||||
|
||||
$('#episode_result').DataTable( {
|
||||
$('#episode_history_result').DataTable( {
|
||||
destroy: true,
|
||||
language: {
|
||||
zeroRecords: 'No History Records Found For This Episode'
|
||||
|
@ -761,10 +762,17 @@
|
|||
processing: false,
|
||||
serverSide: false,
|
||||
ajax: {
|
||||
url: '/bazarr-dev/episode_history/' + sonarrEpisodeId
|
||||
url: '{{ url_for( 'api.episodeshistory' )}}?episodeid=' + sonarrEpisodeId
|
||||
},
|
||||
columns: [
|
||||
{ data: 'action'},
|
||||
{ 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>";}
|
||||
}},
|
||||
{ data: 'language' },
|
||||
{ data: 'provider' },
|
||||
{ data: 'score'},
|
||||
|
@ -772,7 +780,7 @@
|
|||
]
|
||||
} );
|
||||
|
||||
$('#episodeHistoryModal ')
|
||||
$('#episodeHistoryModal')
|
||||
.modal({
|
||||
focus: false
|
||||
});
|
||||
|
@ -790,8 +798,7 @@
|
|||
$('#seriesTitle').text(seriesDetails['title']);
|
||||
|
||||
if (seriesDetails['alternateTitles'].length > 0) {
|
||||
$('#seriesAlternateTitles').attr("title", "Alternative Titles:<br>" + seriesDetails['alternateTitles']);
|
||||
$('#seriesAlternateTitles').tooltip({html: true});
|
||||
$('#seriesAlternateTitles').attr("data-original-title", "<b>Alternative Titles:</b><br>" + seriesDetails['alternateTitles']);
|
||||
} else {
|
||||
$('#seriesAlternateTitles').hide();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue