From 0ed83303af40dc3a6dd8e5594901a913c79c91a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Mon, 20 Nov 2017 14:10:26 -0500 Subject: [PATCH 01/14] Test --- bazarr.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bazarr.py b/bazarr.py index 55d549548..81b544324 100644 --- a/bazarr.py +++ b/bazarr.py @@ -67,9 +67,9 @@ def configure_logging(): f = OneLineExceptionFormatter('%(asctime)s|%(levelname)s|%(message)s|', '%d/%m/%Y %H:%M:%S') fh.setFormatter(f) - logging.getLogger("enzyme").setLevel(logging.ERROR) - logging.getLogger("apscheduler").setLevel(logging.WARNING) - logging.getLogger("subliminal").setLevel(logging.ERROR) + #logging.getLogger("enzyme").setLevel(logging.ERROR) + #logging.getLogger("apscheduler").setLevel(logging.WARNING) + #logging.getLogger("subliminal").setLevel(logging.ERROR) root = logging.getLogger() root.setLevel(log_level) root.addHandler(fh) From 3c3e2830cb41daada2ae42af9818db0427009b58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Mon, 20 Nov 2017 16:25:34 -0500 Subject: [PATCH 02/14] Test --- bazarr.py | 4 ++-- create_db.sql | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/bazarr.py b/bazarr.py index 81b544324..ff0dd8407 100644 --- a/bazarr.py +++ b/bazarr.py @@ -2,8 +2,8 @@ bazarr_version = '0.1.1' from bottle import route, run, template, static_file, request, redirect import bottle -#bottle.debug(True) -#bottle.TEMPLATES.clear() +bottle.debug(True) +bottle.TEMPLATES.clear() import os bottle.TEMPLATE_PATH.insert(0,os.path.join(os.path.dirname(__file__), 'views/')) diff --git a/create_db.sql b/create_db.sql index a29b2fdf1..f60878a46 100644 --- a/create_db.sql +++ b/create_db.sql @@ -41,11 +41,6 @@ CREATE TABLE "table_settings_general" ( `auto_update` INTEGER ); INSERT INTO `table_settings_general` (ip,port,base_url,path_mapping,log_level, branch, auto_update) VALUES ('0.0.0.0',6767,'/',Null,'INFO','master','True'); -CREATE TABLE `table_scheduler` ( - `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, - `name` TEXT NOT NULL, - `frequency` TEXT NOT NULL -); CREATE TABLE "table_history" ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `action` INTEGER NOT NULL, From a197f7087450a508461e9518c58039a193747f95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Mon, 20 Nov 2017 22:06:30 -0500 Subject: [PATCH 03/14] Code cleanup and minimal file size for importation from Sonarr --- bazarr.py | 10 ++-------- get_episodes.py | 22 ++-------------------- get_subtitle.py | 26 +------------------------- 3 files changed, 5 insertions(+), 53 deletions(-) diff --git a/bazarr.py b/bazarr.py index ff0dd8407..c83f801e0 100644 --- a/bazarr.py +++ b/bazarr.py @@ -1,4 +1,4 @@ -bazarr_version = '0.1.1' +bazarr_version = '0.1.2' from bottle import route, run, template, static_file, request, redirect import bottle @@ -292,12 +292,6 @@ def check_update(): @route(base_url + 'system') def system(): - db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db')) - c = db.cursor() - c.execute("SELECT * FROM table_scheduler") - tasks = c.fetchall() - c.close() - logs = [] for line in reversed(open(os.path.join(os.path.dirname(__file__), 'data/log/bazarr.log')).readlines()): logs.append(line.rstrip()) @@ -388,7 +382,7 @@ def system(): elif job.trigger.__str__().startswith('cron'): task_list.append([job.name, get_time_from_cron(job.trigger.fields), pretty.date(job.next_run_time.replace(tzinfo=None)), job.id]) - return template('system', tasks=tasks, logs=logs, base_url=base_url, task_list=task_list, bazarr_version=bazarr_version) + return template('system', logs=logs, base_url=base_url, task_list=task_list, bazarr_version=bazarr_version) @route(base_url + 'execute/') def execute_task(taskid): diff --git a/get_episodes.py b/get_episodes.py index f586d2e18..f8ad5ab34 100644 --- a/get_episodes.py +++ b/get_episodes.py @@ -36,7 +36,7 @@ def update_all_episodes(): url_sonarr_api_episode = protocol_sonarr + "://" + config_sonarr[0] + ":" + str(config_sonarr[1]) + base_url_sonarr + "/api/episode?seriesId=" + str(seriesId[0]) + "&apikey=" + apikey_sonarr r = requests.get(url_sonarr_api_episode) for episode in r.json(): - if episode['hasFile']: + if episode['hasFile'] and episode['episodeFile']['size'] > 20480: # Add shows in Sonarr to current shows list current_episodes_sonarr.append(episode['id']) @@ -60,15 +60,6 @@ def update_all_episodes(): # Close database connection c.close() - - #Cleanup variables to free memory - del current_episodes_db - del current_episodes_db_list - del seriesIdList - del r - del current_episodes_sonarr - del deleted_items - del c # Store substitles for all episodes full_scan_subtitles() @@ -110,7 +101,7 @@ def add_new_episodes(): url_sonarr_api_episode = protocol_sonarr + "://" + config_sonarr[0] + ":" + str(config_sonarr[1]) + base_url_sonarr + "/api/episode?seriesId=" + str(seriesId[0]) + "&apikey=" + apikey_sonarr r = requests.get(url_sonarr_api_episode) for episode in r.json(): - if episode['hasFile']: + if episode['hasFile'] and episode['episodeFile']['size'] > 20480: # Add shows in Sonarr to current shows list current_episodes_sonarr.append(episode['id']) @@ -132,15 +123,6 @@ def add_new_episodes(): # Close database connection c.close() - - #Cleanup variables to free memory - del current_episodes_db - del current_episodes_db_list - del seriesIdList - del r - del current_episodes_sonarr - del deleted_items - del c # Store substitles from episodes we've just added new_scan_subtitles() diff --git a/get_subtitle.py b/get_subtitle.py index 605a7c60a..f5f9015c5 100644 --- a/get_subtitle.py +++ b/get_subtitle.py @@ -26,16 +26,6 @@ def download_subtitle(path, language, hi, providers): except: return None - del video - del best_subtitles - try: - del result - del downloaded_provider - del downloaded_language - del message - except: - pass - def series_download_subtitles(no): conn_db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db')) c_db = conn_db.cursor() @@ -75,16 +65,6 @@ def wanted_download_subtitles(path): list_missing_subtitles(episode[3]) history_log(1, episode[3], episode[2], message) - del conn_db - del c_db - del episodes_details - del enabled_providers - del providers_list - try: - del message - except: - pass - def wanted_search_missing_subtitles(): db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db')) db.create_function("path_substitution", 1, path_replace) @@ -95,8 +75,4 @@ def wanted_search_missing_subtitles(): c.close() for episode in data: - wanted_download_subtitles(episode[0]) - - del db - del c - del data + wanted_download_subtitles(episode[0]) \ No newline at end of file From 637a9ba7284e6ad662c15240e59de91c96322e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 15:42:18 -0500 Subject: [PATCH 04/14] Using UTF8 everywhere --- bazarr.py | 7 +++++-- check_update.py | 3 +++ get_episodes.py | 3 +++ get_general_settings.py | 3 +++ get_languages.py | 3 +++ get_providers.py | 3 +++ get_series.py | 3 +++ get_sonarr_settings.py | 3 +++ get_subtitle.py | 7 +++++-- init_db.py | 3 +++ list_subtitles.py | 5 ++++- scheduler.py | 3 +++ update.py | 3 +++ utils.py | 3 +++ 14 files changed, 47 insertions(+), 5 deletions(-) diff --git a/bazarr.py b/bazarr.py index c83f801e0..d8415ee12 100644 --- a/bazarr.py +++ b/bazarr.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + bazarr_version = '0.1.2' from bottle import route, run, template, static_file, request, redirect @@ -408,7 +411,7 @@ def remove_subtitles(): except OSError: pass store_subtitles(episodePath) - list_missing_subtitles(tvdbid) + list_missing_subtitles(sonarrSeriesId) @route(base_url + 'get_subtitle', method='POST') def get_subtitle(): @@ -436,7 +439,7 @@ def get_subtitle(): if result is not None: history_log(1, sonarrSeriesId, sonarrEpisodeId, result) store_subtitles(episodePath) - list_missing_subtitles(tvdbid) + list_missing_subtitles(sonarrSeriesId) redirect(ref) except OSError: pass diff --git a/check_update.py b/check_update.py index f4ecc2e33..def41fe11 100644 --- a/check_update.py +++ b/check_update.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + from get_general_settings import * import os diff --git a/get_episodes.py b/get_episodes.py index f8ad5ab34..ee9f5750e 100644 --- a/get_episodes.py +++ b/get_episodes.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import os import sqlite3 import requests diff --git a/get_general_settings.py b/get_general_settings.py index b86698fe8..cbe6d6aef 100644 --- a/get_general_settings.py +++ b/get_general_settings.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import sqlite3 import os import ast diff --git a/get_languages.py b/get_languages.py index efb7cc4b0..8a81cb1cf 100644 --- a/get_languages.py +++ b/get_languages.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import sqlite3 import pycountry import os diff --git a/get_providers.py b/get_providers.py index c02e5c126..cfdf109ed 100644 --- a/get_providers.py +++ b/get_providers.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import sqlite3 import os from subliminal import * diff --git a/get_series.py b/get_series.py index 07c52f924..61f89d080 100644 --- a/get_series.py +++ b/get_series.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import os import sqlite3 import requests diff --git a/get_sonarr_settings.py b/get_sonarr_settings.py index bf64883b4..93a02f1cc 100644 --- a/get_sonarr_settings.py +++ b/get_sonarr_settings.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import sqlite3 import os import ast diff --git a/get_subtitle.py b/get_subtitle.py index f5f9015c5..f1e72c88e 100644 --- a/get_subtitle.py +++ b/get_subtitle.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import os import sqlite3 import ast @@ -29,7 +32,7 @@ def download_subtitle(path, language, hi, providers): def series_download_subtitles(no): conn_db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db')) c_db = conn_db.cursor() - episodes_details = c_db.execute("SELECT path, missing_subtitles, sonarrEpisodeId FROM table_episodes WHERE path = ?", (no,)).fetchall() + episodes_details = c_db.execute("SELECT path, missing_subtitles, sonarrEpisodeId FROM table_episodes WHERE sonarrSeriesId = ?", (no,)).fetchall() series_details = c_db.execute("SELECT hearing_impaired FROM table_shows WHERE sonarrSeriesId = ?", (no,)).fetchone() enabled_providers = c_db.execute("SELECT name FROM table_settings_providers WHERE enabled = 1").fetchall() c_db.close() @@ -75,4 +78,4 @@ def wanted_search_missing_subtitles(): c.close() for episode in data: - wanted_download_subtitles(episode[0]) \ No newline at end of file + wanted_download_subtitles(episode[0]) diff --git a/init_db.py b/init_db.py index 1b6393284..9db99101b 100644 --- a/init_db.py +++ b/init_db.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import os import sqlite3 diff --git a/list_subtitles.py b/list_subtitles.py index a5cd58ada..5d52861bb 100644 --- a/list_subtitles.py +++ b/list_subtitles.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import os import enzyme import babelfish @@ -68,7 +71,7 @@ def store_subtitles(file): def list_missing_subtitles(*no): query_string = '' try: - query_string = " WHERE table_shows.tvdbId = " + str(no[0]) + query_string = " WHERE table_shows.sonarrSeriesId = " + str(no[0]) except: pass conn_db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db')) diff --git a/scheduler.py b/scheduler.py index a77e9efac..724b9a12b 100644 --- a/scheduler.py +++ b/scheduler.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + from get_general_settings import * from get_series import * from get_episodes import * diff --git a/update.py b/update.py index 69f249bf9..02b31f232 100644 --- a/update.py +++ b/update.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + from get_general_settings import * import git diff --git a/utils.py b/utils.py index 68adf89ad..8cc932785 100644 --- a/utils.py +++ b/utils.py @@ -1,3 +1,6 @@ +# coding: utf-8 +from __future__ import unicode_literals + import os import sqlite3 import time From 3aca4a7ce9a567996a4d7857ec6c47d20a0ca457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 15:43:42 -0500 Subject: [PATCH 05/14] Version bump --- bazarr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazarr.py b/bazarr.py index d8415ee12..dc1820f80 100644 --- a/bazarr.py +++ b/bazarr.py @@ -1,7 +1,7 @@ # coding: utf-8 from __future__ import unicode_literals -bazarr_version = '0.1.2' +bazarr_version = '0.1.3' from bottle import route, run, template, static_file, request, redirect import bottle From 1980e2e198738b9a3af4a673dbfe38c989977302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 16:03:29 -0500 Subject: [PATCH 06/14] Limit log level of some modules --- bazarr.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bazarr.py b/bazarr.py index dc1820f80..0f5152b4b 100644 --- a/bazarr.py +++ b/bazarr.py @@ -70,9 +70,9 @@ def configure_logging(): f = OneLineExceptionFormatter('%(asctime)s|%(levelname)s|%(message)s|', '%d/%m/%Y %H:%M:%S') fh.setFormatter(f) - #logging.getLogger("enzyme").setLevel(logging.ERROR) - #logging.getLogger("apscheduler").setLevel(logging.WARNING) - #logging.getLogger("subliminal").setLevel(logging.ERROR) + logging.getLogger("enzyme").setLevel(logging.ERROR) + logging.getLogger("apscheduler").setLevel(logging.WARNING) + logging.getLogger("subliminal").setLevel(logging.ERROR) root = logging.getLogger() root.setLevel(log_level) root.addHandler(fh) From 6c5419716d87af1a23d4ac121a8dd177cee793bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 16:09:33 -0500 Subject: [PATCH 07/14] Better error management --- check_update.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/check_update.py b/check_update.py index def41fe11..5629623bf 100644 --- a/check_update.py +++ b/check_update.py @@ -28,7 +28,20 @@ def check_and_apply_update(repo=local_repo, remote_name='origin'): repo.head.set_target(remote_id) result = 'Bazarr updated to latest version and restarting.' os.execlp('python', 'python', os.path.join(os.path.dirname(__file__), 'bazarr.py')) + elif merge_result & pygit2.GIT_MERGE_ANALYSIS_NORMAL: + repo.merge(remote_id) + print repo.index.conflicts + + assert repo.index.conflicts is None, 'Conflicts, ahhhh!' + user = repo.default_signature + tree = repo.index.write_tree() + commit = repo.create_commit('HEAD', + user, + user, + 'Merge!', + tree, + [repo.head.target, remote_master_id]) + repo.state_cleanup() else: raise AssertionError('Unknown merge analysis result') - return result From 9cd5a5d3049480a82cd7fb9ff2aadac340189235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 16:10:20 -0500 Subject: [PATCH 08/14] Better error management --- check_update.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/check_update.py b/check_update.py index 5629623bf..1360fe4d3 100644 --- a/check_update.py +++ b/check_update.py @@ -40,8 +40,9 @@ def check_and_apply_update(repo=local_repo, remote_name='origin'): user, 'Merge!', tree, - [repo.head.target, remote_master_id]) + [repo.head.target, remote_id]) repo.state_cleanup() else: raise AssertionError('Unknown merge analysis result') + return result From eb500e0f17f940b9ff88745053d8753e96f3d9e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 19:50:06 -0500 Subject: [PATCH 09/14] Test --- list_subtitles.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/list_subtitles.py b/list_subtitles.py index 5d52861bb..35c4e8f7b 100644 --- a/list_subtitles.py +++ b/list_subtitles.py @@ -52,18 +52,17 @@ def store_subtitles(file): except: pass - conn_db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db')) - c_db = conn_db.cursor() - subtitles = core.search_external_subtitles(file) for subtitle, language in subtitles.iteritems(): actual_subtitles.append([str(language), path_replace_reverse(os.path.join(os.path.dirname(file), subtitle))]) - try: - c_db.execute("UPDATE table_episodes SET subtitles = ? WHERE path = ?", (str(actual_subtitles), path_replace_reverse(file))) - conn_db.commit() - except: - pass + + conn_db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db')) + c_db = conn_db.cursor() + + c_db.execute("UPDATE table_episodes SET subtitles = ? WHERE path = ?", (str(actual_subtitles), path_replace_reverse(file))) + conn_db.commit() + c_db.close() return actual_subtitles From e71aba11431f2297751396362b259e697f3e282e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 19:58:52 -0500 Subject: [PATCH 10/14] Test --- check_update.py | 1 + 1 file changed, 1 insertion(+) diff --git a/check_update.py b/check_update.py index 1360fe4d3..441a1e7cb 100644 --- a/check_update.py +++ b/check_update.py @@ -42,6 +42,7 @@ def check_and_apply_update(repo=local_repo, remote_name='origin'): tree, [repo.head.target, remote_id]) repo.state_cleanup() + result = 'Conflict detected when trying to update.' else: raise AssertionError('Unknown merge analysis result') From 47d152b45738614e4af6b1a81945551dccb29af8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Tue, 21 Nov 2017 23:01:26 -0500 Subject: [PATCH 11/14] Bug correction for pagging --- bazarr.py | 24 +++++++-- views/history.tpl | 2 + views/logs.tpl | 84 ++++++++++++++++++++++++++++++++ views/system.tpl | 121 ++++++++++++++++++++++------------------------ views/wanted.tpl | 2 + 5 files changed, 165 insertions(+), 68 deletions(-) create mode 100644 views/logs.tpl diff --git a/bazarr.py b/bazarr.py index 0f5152b4b..0ff570c50 100644 --- a/bazarr.py +++ b/bazarr.py @@ -295,10 +295,6 @@ def check_update(): @route(base_url + 'system') def system(): - logs = [] - for line in reversed(open(os.path.join(os.path.dirname(__file__), 'data/log/bazarr.log')).readlines()): - logs.append(line.rstrip()) - def get_time_from_interval(interval): interval_clean = interval.split('[') interval_clean = interval_clean[1][:-1] @@ -384,8 +380,26 @@ def system(): task_list.append([job.name, get_time_from_interval(str(job.trigger)), pretty.date(job.next_run_time.replace(tzinfo=None)), job.id]) elif job.trigger.__str__().startswith('cron'): task_list.append([job.name, get_time_from_cron(job.trigger.fields), pretty.date(job.next_run_time.replace(tzinfo=None)), job.id]) + + with open(os.path.join(os.path.dirname(__file__), 'data/log/bazarr.log')) as f: + for i, l in enumerate(f, 1): + pass + row_count = i + max_page = (row_count / 50) + 1 - return template('system', logs=logs, base_url=base_url, task_list=task_list, bazarr_version=bazarr_version) + return template('system', base_url=base_url, task_list=task_list, row_count=row_count, max_page=max_page, bazarr_version=bazarr_version) + +@route(base_url + 'logs/') +def get_logs(page): + page_size = 50 + begin = (page * page_size) - page_size + end = (page * page_size) - 1 + logs_complete = [] + for line in reversed(open(os.path.join(os.path.dirname(__file__), 'data/log/bazarr.log')).readlines()): + logs_complete.append(line.rstrip()) + logs = logs_complete[begin:end] + + return template('logs', logs=logs, base_url=base_url) @route(base_url + 'execute/') def execute_task(taskid): diff --git a/views/history.tpl b/views/history.tpl index db555a142..a2386ffb2 100644 --- a/views/history.tpl +++ b/views/history.tpl @@ -40,6 +40,8 @@ .fast.backward, .backward, .forward, .fast.forward { cursor: pointer; } + .fast.backward, .backward, .forward, .fast.forward { pointer-events: auto; } + .fast.backward.disabled, .backward.disabled, .forward.disabled, .fast.forward.disabled { pointer-events: none; } diff --git a/views/logs.tpl b/views/logs.tpl new file mode 100644 index 000000000..5851530e3 --- /dev/null +++ b/views/logs.tpl @@ -0,0 +1,84 @@ + + + + + + + + + + + +
+ + + + + + + + + + %import time + %import datetime + %import pretty + %for log in logs: + %line = [] + %line = log.split('|') + + + + + + %end + +
MessageTime
{{line[2]}}{{pretty.date(int(time.mktime(datetime.datetime.strptime(line[0], "%d/%m/%Y %H:%M:%S").timetuple())))}}
+
+ + + + + + \ No newline at end of file diff --git a/views/system.tpl b/views/system.tpl index 7f35d7d3e..0c46e10ab 100644 --- a/views/system.tpl +++ b/views/system.tpl @@ -37,6 +37,11 @@ margin-bottom: 3em; padding: 1em; } + .fast.backward, .backward, .forward, .fast.forward { + cursor: pointer; + } + .fast.backward, .backward, .forward, .fast.forward { pointer-events: auto; } + .fast.backward.disabled, .backward.disabled, .forward.disabled, .fast.forward.disabled { pointer-events: none; } @@ -107,86 +112,76 @@
- - - - - - - - - - %import time - %import datetime - %import pretty - %for log in logs: - %line = [] - %line = log.split('|') - - - - - - %end - -
MessageTime
{{line[2]}}{{pretty.date(int(time.mktime(datetime.datetime.strptime(line[0], "%d/%m/%Y %H:%M:%S").timetuple())))}}
+
+ +
+
+
+
+ + + / {{max_page}} + + +
+
Total records: {{row_count}}
+
+
Bazarr version: {{bazarr_version}}
- -