This commit is contained in:
Louis Vézina 2020-01-13 23:37:54 -05:00
parent 8543ee1b7a
commit df90c6e722
6 changed files with 69 additions and 60 deletions

View File

@ -16,15 +16,17 @@ class EventStream:
"""
:param type: The type of element.
:type type: str
:param type: The series id.
:type type: str
:param type: The episode id.
:type type: str
:param type: The movie id.
:type type: str
:param action: The action type of element from insert, update, delete.
:type action: str
:param series: The series id.
:type series: str
:param episode: The episode id.
:type episode: str
:param movie: The movie id.
:type movie: str
"""
msg = {"type": type, "action": action, "series": series, "episode": episode, "movie": movie}
self.queue.append("data:" + json.dumps(msg) + "\n\n")
self.queue.append("retry: 1000\ndata:" + json.dumps(msg) + "\n\n")
def read(self):
"""

View File

@ -149,7 +149,7 @@ def update_series():
database.execute('''UPDATE table_shows SET ''' + query.keys_update + ''' WHERE sonarrSeriesId = ?''',
query.values + (updated_series['sonarrSeriesId'],))
event_stream.write(type='series', series=updated_series['sonarrSeriesId'])
event_stream.write(type='series', action='update', series=updated_series['sonarrSeriesId'])
# Insert new series in DB
for added_series in series_to_add:
@ -163,7 +163,7 @@ def update_series():
logging.debug('BAZARR unable to insert this series into the database:',
path_replace(added_series['path']))
event_stream.write(type='series', series=added_series['sonarrSeriesId'])
event_stream.write(type='series', action='insert', series=added_series['sonarrSeriesId'])
logging.debug('BAZARR All series synced from Sonarr into database.')

View File

@ -105,7 +105,7 @@ def store_subtitles(original_path, reversed_path):
logging.debug('BAZARR ended subtitles indexing for this file: ' + reversed_path)
event_stream.write(type='episode', series=episode['sonarrSeriesId'], episode=episode['sonarrEpisodeId'])
event_stream.write(type='episode', action='update', series=episode['sonarrSeriesId'], episode=episode['sonarrEpisodeId'])
return actual_subtitles
@ -178,7 +178,7 @@ def store_subtitles_movie(original_path, reversed_path):
logging.debug('BAZARR ended subtitles indexing for this file: ' + reversed_path)
event_stream.write(type='movie', movie=movie['radarrId'])
event_stream.write(type='movie', action='update', movie=movie['radarrId'])
return actual_subtitles

View File

@ -791,23 +791,15 @@ def movie(no):
@app.route('/scan_disk/<int:no>', methods=['GET'])
@login_required
def scan_disk(no):
ref = request.environ['HTTP_REFERER']
series_scan_subtitles(no)
redirect(ref)
return '', 200
@app.route('/scan_disk_movie/<int:no>', methods=['GET'])
@login_required
def scan_disk_movie(no):
ref = request.environ['HTTP_REFERER']
movies_scan_subtitles(no)
redirect(ref)
return '', 200
@app.route('/search_missing_subtitles/<int:no>', methods=['GET'])
@ -1812,11 +1804,6 @@ def movie_history(no):
return dict(data=movie_history)
@app.route('/event')
def event():
return Response(event_stream.read(), mimetype="text/event-stream")
# Don't put any route under this one
@app.route('/api/help')
def api_help():

View File

@ -264,37 +264,43 @@
var events = new EventSource('{{ url_for('api.events') }}');
events.onmessage = function (event) {
var event_json = JSON.parse(event.data);
if (event_json.type === 'episode') {
var rowId = $('#episodes').DataTable().row('#row_'+event_json.episode);
if (rowId.length) {
$.ajax({
url: "{{ url_for('api.episodes') }}?seriesid="+event_json.series+"&episodeid="+event_json.episode,
async: true,
success: function (data) {
$('#episodes').DataTable().row(rowId).data(data.data[0]);
$('[data-toggle="tooltip"]').tooltip({html: true});
}
})
}
}
if (event_json.type === 'series') {
if (event_json.series === {{id}}) {
if (event_json.series === {{id}}) {
if (event_json.type === 'series' && event_json.action === 'update' && event_json.episode == null) {
seriesDetailsRefresh();
}
/*
var rowId = $('#episodes').DataTable().row('#row_'+event_json.episode);
if (rowId.length) {
$.ajax({
url: "{{ url_for('api.episodes') }}?seriesid="+event_json.series+"&episodeid="+event_json.episode,
async: true,
success: function (data) {
$('#episodes').DataTable().row(rowId).data(data.data[0]);
$('[data-toggle="tooltip"]').tooltip({html: true});
}
})
}
*/
if (event_json.type === 'episode' && event_json.action === 'insert') {
$.ajax({
url: "{{ url_for('api.episodes') }}?seriesid=" + event_json.series + "&episodeid=" + event_json.episode,
async: true,
success: function (data) {
if (data.data.length) {
$('#episodes').DataTable().row.add(data.data[0]).draw();
$('[data-toggle="tooltip"]').tooltip({html: true});
}
}
})
} else if (event_json.type === 'episode' && event_json.action === 'update') {
var rowId = $('#episodes').DataTable().row('#row_' + event_json.episode);
if (rowId.length) {
$.ajax({
url: "{{ url_for('api.episodes') }}?seriesid=" + event_json.series + "&episodeid=" + event_json.episode,
async: true,
success: function (data) {
if (data.data.length) {
$('#episodes').DataTable().row(rowId).data(data.data[0]);
$('[data-toggle="tooltip"]').tooltip({html: true});
}
}
})
}
} else if (event_json.type === 'episode' && event_json.action === 'delete') {
var rowId = $('#episodes').DataTable().row('#row_' + event_json.episode);
if (rowId.length) {
$('#episodes').DataTable().row(rowId).remove().draw();
$('[data-toggle="tooltip"]').tooltip({html: true});
}
}
}
};

View File

@ -38,11 +38,11 @@
{% block bcleft %}
<div class="">
<button class="btn btn-outline">
<div><i class="fas fa-sync align-top text-themecolor text-center font-20" aria-hidden="true"></i></div>
<div><i class="fas fa-sync align-top text-themecolor text-center font-20" id="scan_button" aria-hidden="true"></i></div>
<div class="align-bottom text-themecolor small text-center">Scan Disk</div>
</button>
<button class="btn btn-outline">
<div><i class="fas fa-search align-top text-themecolor text-center font-20" aria-hidden="true"></i></div>
<div><i class="fas fa-search align-top text-themecolor text-center font-20" id="search_button" aria-hidden="true"></i></div>
<div class="align-bottom text-themecolor small text-center">Search</div>
</button>
</div>
@ -51,7 +51,7 @@
{% block bcright %}
<div class="d-flex m-t-5 justify-content-end">
<button class="btn btn-outline">
<div><i class="fas fa-wrench align-top text-themecolor text-center font-20" aria-hidden="true"></i></div>
<div><i class="fas fa-wrench align-top text-themecolor text-center font-20" id="edit_button" aria-hidden="true"></i></div>
<div class="align-bottom text-themecolor small text-center">Edit Series</div>
</button>
</div>
@ -245,7 +245,7 @@
{"data": "title"},
{"data": null,
"render": function (data) {
if (data.subtitles !== 'None') {
if (data.subtitles !== null) {
var languages = '';
data.subtitles.forEach(appendFunc);
return languages;
@ -264,7 +264,7 @@
},
{"data": null,
"render": function (data) {
if (data.missing_subtitles !== 'None') {
if (data.missing_subtitles !== null) {
var languages = '';
data.missing_subtitles.forEach(appendFunc);
return languages;
@ -528,6 +528,20 @@
});
});
$('#scan_button').on('click', function(e){
e.preventDefault();
$.ajax({
url: "{{ url_for('scan_disk', no=id) }}",
type: 'GET',
beforeSend: function() {
$('#scan_button').addClass('fa-spin');
},
complete: function() {
$('#scan_button').removeClass('fa-spin');
}
});
});
$('#uploadModal').on('hidden.bs.modal', function () {
$(this).find('form')[0].reset();
});
@ -555,7 +569,7 @@
$('#seriesFileCount').text(seriesDetails['episodeFileCount'] + ' files');
var languages = '';
if (seriesDetails['languages'] !== 'None') {
if (seriesDetails['languages'] !== null) {
seriesDetails['languages'].forEach(appendFunc);
}