Merge branch 'master' into Develop

This commit is contained in:
Ozzie Isaacs 2023-10-28 09:06:51 +02:00
commit b2e4907165
60 changed files with 204 additions and 166 deletions

View File

@ -38,6 +38,13 @@ To receive fixes for security vulnerabilities it is required to always upgrade t
| V 0.6.18 | Possible SQL Injection is prevented in user table Thanks to Iman Sharafaldin (Forward Security) |CVE-2022-30765| | V 0.6.18 | Possible SQL Injection is prevented in user table Thanks to Iman Sharafaldin (Forward Security) |CVE-2022-30765|
| V 0.6.18 | The SSRF protection no longer can be bypassed by IPV6/IPV4 embedding. Thanks to @416e6e61 |CVE-2022-0939| | V 0.6.18 | The SSRF protection no longer can be bypassed by IPV6/IPV4 embedding. Thanks to @416e6e61 |CVE-2022-0939|
| V 0.6.18 | The SSRF protection no longer can be bypassed to connect to other servers in the local network. Thanks to @michaellrowley |CVE-2022-0990| | V 0.6.18 | The SSRF protection no longer can be bypassed to connect to other servers in the local network. Thanks to @michaellrowley |CVE-2022-0990|
| V 0.6.20 | Credentials for emails are now stored encrypted ||
| V 0.6.20 | Login is rate limited ||
| V 0.6.20 | Passwordstrength can be forced ||
| V 0.6.21 | SMTP server credentials are no longer returned to client ||
| V 0.6.21 | Cross-site scripting (XSS) stored in href bypasses filter using data wrapper no longer possible ||
| V 0.6.21 | Cross-site scripting (XSS) is no longer possible via pathchooser ||
| V 0.6.21 | Error Handling at non existent rating, language, and user downloaded books was fixed ||
## Statement regarding Log4j (CVE-2021-44228 and related) ## Statement regarding Log4j (CVE-2021-44228 and related)

View File

@ -34,6 +34,8 @@ UPDATER_AVAILABLE = True
# Base dir is parent of current file, necessary if called from different folder # Base dir is parent of current file, necessary if called from different folder
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir)) BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir))
# if executable file the files should be placed in the parent dir (parallel to the exe file)
STATIC_DIR = os.path.join(BASE_DIR, 'cps', 'static') STATIC_DIR = os.path.join(BASE_DIR, 'cps', 'static')
TEMPLATES_DIR = os.path.join(BASE_DIR, 'cps', 'templates') TEMPLATES_DIR = os.path.join(BASE_DIR, 'cps', 'templates')
TRANSLATIONS_DIR = os.path.join(BASE_DIR, 'cps', 'translations') TRANSLATIONS_DIR = os.path.join(BASE_DIR, 'cps', 'translations')
@ -49,6 +51,9 @@ if HOME_CONFIG:
CONFIG_DIR = os.environ.get('CALIBRE_DBPATH', home_dir) CONFIG_DIR = os.environ.get('CALIBRE_DBPATH', home_dir)
else: else:
CONFIG_DIR = os.environ.get('CALIBRE_DBPATH', BASE_DIR) CONFIG_DIR = os.environ.get('CALIBRE_DBPATH', BASE_DIR)
if getattr(sys, 'frozen', False):
CONFIG_DIR = os.path.abspath(os.path.join(CONFIG_DIR, os.pardir))
DEFAULT_SETTINGS_FILE = "app.db" DEFAULT_SETTINGS_FILE = "app.db"
DEFAULT_GDRIVE_FILE = "gdrive.db" DEFAULT_GDRIVE_FILE = "gdrive.db"
@ -163,7 +168,7 @@ def selected_roles(dictionary):
BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, ' BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, '
'series_id, languages, publisher, pubdate, identifiers') 'series_id, languages, publisher, pubdate, identifiers')
STABLE_VERSION = {'version': '0.6.21 Beta'} STABLE_VERSION = {'version': '0.6.22 Beta'}
NIGHTLY_VERSION = dict() NIGHTLY_VERSION = dict()
NIGHTLY_VERSION[0] = '$Format:%H$' NIGHTLY_VERSION[0] = '$Format:%H$'

View File

@ -315,7 +315,7 @@ def generate_sync_response(sync_token, sync_results, set_cont=False):
extra_headers["x-kobo-recent-reads"] = store_response.headers.get("x-kobo-recent-reads") extra_headers["x-kobo-recent-reads"] = store_response.headers.get("x-kobo-recent-reads")
except Exception as ex: except Exception as ex:
log.error("Failed to receive or parse response from Kobo's sync endpoint: {}".format(ex)) log.error_or_exception("Failed to receive or parse response from Kobo's sync endpoint: {}".format(ex))
if set_cont: if set_cont:
extra_headers["x-kobo-sync"] = "continue" extra_headers["x-kobo-sync"] = "continue"
sync_token.to_headers(extra_headers) sync_token.to_headers(extra_headers)

View File

@ -179,26 +179,23 @@ kthoom.ImageFile = function(file) {
}; };
function updateDirectionButtons(){ function updateDirectionButtons(){
$("#right").show(); var left, right = 1;
$("#left").show();
if (currentImage == 0 ) { if (currentImage == 0 ) {
if (settings.direction === 0) { if (settings.direction === 0) {
$("#right").show(); left = 0;
$("#left").hide();
} else { } else {
$("#left").show(); right = 0;
$("#right").hide();
} }
} }
if ((currentImage + 1) >= Math.max(totalImages, imageFiles.length)) { if ((currentImage + 1) >= Math.max(totalImages, imageFiles.length)) {
if (settings.direction === 0) { if (settings.direction === 0) {
$("#left").show(); right = 0;
$("#right").hide();
} else { } else {
$("#right").show(); left = 0;
$("#left").hide();
} }
} }
left === 1 ? $("#left").show() : $("#left").hide();
right === 1 ? $("#right").show() : $("#right").hide();
} }
function initProgressClick() { function initProgressClick() {
$("#progress").click(function(e) { $("#progress").click(function(e) {

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/terms/" xmlns:dcterms="http://purl.org/dc/terms/"> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/terms/" xmlns:dcterms="http://purl.org/dc/terms/">
<icon>{{ url_for('static', filename='favicon.ico') }}</icon>
<id>urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2</id> <id>urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<link rel="self" <link rel="self"

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<icon>{{ url_for('static', filename='favicon.ico') }}</icon>
<id>urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2</id> <id>urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<link rel="self" href="{{url_for('opds.feed_index')}}" type="application/atom+xml;profile=opds-catalog;kind=navigation"/> <link rel="self" href="{{url_for('opds.feed_index')}}" type="application/atom+xml;profile=opds-catalog;kind=navigation"/>

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-06-09 21:11+0100\n" "PO-Revision-Date: 2020-06-09 21:11+0100\n"
"Last-Translator: Lukas Heroudek <lukas.heroudek@gmail.com>\n" "Last-Translator: Lukas Heroudek <lukas.heroudek@gmail.com>\n"
"Language: cs_CZ\n" "Language: cs_CZ\n"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2023-06-25 11:29+0200\n" "PO-Revision-Date: 2023-10-21 15:45+0200\n"
"Last-Translator: Ozzie Isaacs\n" "Last-Translator: Ozzie Isaacs\n"
"Language: de\n" "Language: de\n"
"Language-Team: \n" "Language-Team: \n"
@ -3096,11 +3096,11 @@ msgstr "Rechts nach links"
#: cps/templates/readcbr.html:162 #: cps/templates/readcbr.html:162
msgid "Reset to Top" msgid "Reset to Top"
msgstr "" msgstr "Auf Anfang zurücksetzen"
#: cps/templates/readcbr.html:163 #: cps/templates/readcbr.html:163
msgid "Remember Position" msgid "Remember Position"
msgstr "" msgstr "Position speichern"
#: cps/templates/readcbr.html:168 #: cps/templates/readcbr.html:168
msgid "Scrollbar" msgid "Scrollbar"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Depountis Georgios\n" "Last-Translator: Depountis Georgios\n"
"Language: el\n" "Language: el\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-05-25 17:22+0200\n" "PO-Revision-Date: 2020-05-25 17:22+0200\n"
"Last-Translator: minakmostoles <xxx@xxx.com>\n" "Last-Translator: minakmostoles <xxx@xxx.com>\n"
"Language: es\n" "Language: es\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-01-12 13:56+0100\n" "PO-Revision-Date: 2020-01-12 13:56+0100\n"
"Last-Translator: Samuli Valavuo <svalavuo@gmail.com>\n" "Last-Translator: Samuli Valavuo <svalavuo@gmail.com>\n"
"Language: fi\n" "Language: fi\n"

View File

@ -22,7 +22,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-06-07 06:47+0200\n" "PO-Revision-Date: 2020-06-07 06:47+0200\n"
"Last-Translator: <thovi98@gmail.com>\n" "Last-Translator: <thovi98@gmail.com>\n"
"Language: fr\n" "Language: fr\n"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2022-08-11 16:46+0200\n" "PO-Revision-Date: 2022-08-11 16:46+0200\n"
"Last-Translator: pollitor <pollitor@gmx.com>\n" "Last-Translator: pollitor <pollitor@gmx.com>\n"
"Language: gl\n" "Language: gl\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2019-04-06 23:36+0200\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: hu\n" "Language: hu\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2023-01-21 10:00+0700\n" "PO-Revision-Date: 2023-01-21 10:00+0700\n"
"Last-Translator: Arief Hidayat<arihid95@gmail.com>\n" "Last-Translator: Arief Hidayat<arihid95@gmail.com>\n"
"Language: id\n" "Language: id\n"

View File

@ -2,13 +2,13 @@
# Copyright (C) 2016 Smart Cities Community # Copyright (C) 2016 Smart Cities Community
# This file is distributed under the same license as the Calibre-Web # This file is distributed under the same license as the Calibre-Web
# Juan F. Villa <juan.villa@paisdelconocimiento.org>, 2016. # Juan F. Villa <juan.villa@paisdelconocimiento.org>, 2016.
# Massimo Pissarello <mapi68@gmail.com>, 2023. # SPDX-FileCopyrightText: 2023 Massimo Pissarello <mapi68@gmail.com>
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2023-04-18 09:04+0200\n" "PO-Revision-Date: 2023-10-21 15:27+0200\n"
"Last-Translator: Massimo Pissarello <mapi68@gmail.com>\n" "Last-Translator: Massimo Pissarello <mapi68@gmail.com>\n"
"Language: it\n" "Language: it\n"
"Language-Team: Italian <>\n" "Language-Team: Italian <>\n"
@ -3096,11 +3096,11 @@ msgstr "Da destra a sinistra"
#: cps/templates/readcbr.html:162 #: cps/templates/readcbr.html:162
msgid "Reset to Top" msgid "Reset to Top"
msgstr "" msgstr "Reimposta in alto"
#: cps/templates/readcbr.html:163 #: cps/templates/readcbr.html:163
msgid "Remember Position" msgid "Remember Position"
msgstr "" msgstr "Ricorda la posizione"
#: cps/templates/readcbr.html:168 #: cps/templates/readcbr.html:168
msgid "Scrollbar" msgid "Scrollbar"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2018-02-07 02:20-0500\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n"
"Last-Translator: subdiox <subdiox@gmail.com>\n" "Last-Translator: subdiox <subdiox@gmail.com>\n"
"Language: ja\n" "Language: ja\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2018-08-27 17:06+0700\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: km_KH\n" "Language: km_KH\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-web\n" "Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2022-01-10 11:30+0900\n" "PO-Revision-Date: 2022-01-10 11:30+0900\n"
"Last-Translator: 내맘대로의 EPUBGUIDE.NET <byword77@gmail.com>\n" "Last-Translator: 내맘대로의 EPUBGUIDE.NET <byword77@gmail.com>\n"
"Language: ko\n" "Language: ko\n"
@ -33,7 +33,7 @@ msgstr "서버를 종료하는 중, 창을 닫아야 함"
#: cps/admin.py:156 #: cps/admin.py:156
msgid "Success! Database Reconnected" msgid "Success! Database Reconnected"
msgstr "" msgstr "성공적으로 DB를 다시 연결하였습니다."
#: cps/admin.py:159 #: cps/admin.py:159
msgid "Unknown command" msgid "Unknown command"
@ -190,7 +190,7 @@ msgstr "캘리버 서재의 언어를 변경하시겠습니까?"
#: cps/admin.py:629 #: cps/admin.py:629
msgid "Calibre-Web will search for updated Covers and update Cover Thumbnails, this may take a while?" msgid "Calibre-Web will search for updated Covers and update Cover Thumbnails, this may take a while?"
msgstr "" msgstr "Calibre-Web은 업데이트된 표지를 검색하고 표지 섬네일 업데이트합니다. 시간이 오래 걸릴 수 있습니다."
#: cps/admin.py:632 #: cps/admin.py:632
msgid "Are you sure you want delete Calibre-Web's sync database to force a full sync with your Kobo Reader?" msgid "Are you sure you want delete Calibre-Web's sync database to force a full sync with your Kobo Reader?"
@ -285,7 +285,7 @@ msgstr "이메일 서버 설정 편집"
#: cps/admin.py:1290 #: cps/admin.py:1290
msgid "Success! Gmail Account Verified." msgid "Success! Gmail Account Verified."
msgstr "" msgstr "Gmail 계정 인증에 성공하였습니다."
#: cps/admin.py:1310 cps/admin.py:1313 cps/admin.py:1695 cps/admin.py:1829 #: cps/admin.py:1310 cps/admin.py:1313 cps/admin.py:1695 cps/admin.py:1829
#: cps/admin.py:1927 cps/admin.py:2048 cps/editbooks.py:230 #: cps/admin.py:1927 cps/admin.py:2048 cps/editbooks.py:230
@ -316,19 +316,19 @@ msgstr "이메일 서버 설정 업데이트됨"
#: cps/admin.py:1350 cps/templates/admin.html:195 #: cps/admin.py:1350 cps/templates/admin.html:195
msgid "Edit Scheduled Tasks Settings" msgid "Edit Scheduled Tasks Settings"
msgstr "" msgstr "예약 작업 설정 편집"
#: cps/admin.py:1362 #: cps/admin.py:1362
msgid "Invalid start time for task specified" msgid "Invalid start time for task specified"
msgstr "" msgstr "지정된 작업의 시작 시간이 잘못 설정되었습니다."
#: cps/admin.py:1367 #: cps/admin.py:1367
msgid "Invalid duration for task specified" msgid "Invalid duration for task specified"
msgstr "" msgstr "지정된 작업의 기간이 잘못 설정되었습니다."
#: cps/admin.py:1377 #: cps/admin.py:1377
msgid "Scheduled tasks settings updated" msgid "Scheduled tasks settings updated"
msgstr "" msgstr "예약된 작업 설정을 업데이트 하였습니다."
#: cps/admin.py:1387 cps/admin.py:1436 cps/admin.py:2044 cps/web.py:1289 #: cps/admin.py:1387 cps/admin.py:1436 cps/admin.py:2044 cps/web.py:1289
msgid "Oops! An unknown error occurred. Please try again later." msgid "Oops! An unknown error occurred. Please try again later."
@ -336,7 +336,7 @@ msgstr "알 수없는 오류가 발생했습니다. 나중에 다시 시도 해
#: cps/admin.py:1391 #: cps/admin.py:1391
msgid "Settings DB is not Writeable" msgid "Settings DB is not Writeable"
msgstr "" msgstr "저장할 수 없는 설정 DB입니다."
#: cps/admin.py:1421 cps/admin.py:2036 #: cps/admin.py:1421 cps/admin.py:2036
#, python-format #, python-format
@ -457,7 +457,7 @@ msgstr "올바르지 않은 인증서 파일 위치. 올바른 경로 입력 필
#: cps/admin.py:1816 #: cps/admin.py:1816
msgid "Password length has to be between 1 and 40" msgid "Password length has to be between 1 and 40"
msgstr "" msgstr "비밀번호 길이는 1에서 40 사이여야 합니다."
#: cps/admin.py:1868 #: cps/admin.py:1868
msgid "Database Settings updated" msgid "Database Settings updated"
@ -503,7 +503,7 @@ msgstr "관리자 계정이 하나 뿐일 때는 관리자 권한을 삭제할
#: cps/admin.py:2014 cps/web.py:1438 #: cps/admin.py:2014 cps/web.py:1438
msgid "Email can't be empty and has to be a valid Email" msgid "Email can't be empty and has to be a valid Email"
msgstr "" msgstr "이메일은 반드시 입력해야 하며 유효한 이메일이어야 합니다."
#: cps/admin.py:2040 #: cps/admin.py:2040
#, python-format #, python-format
@ -537,7 +537,7 @@ msgstr "선택한 책 제목을 사용할 수 없습니다. 파일이 존재하
#: cps/editbooks.py:155 cps/editbooks.py:1227 #: cps/editbooks.py:155 cps/editbooks.py:1227
msgid "User has no rights to upload cover" msgid "User has no rights to upload cover"
msgstr "" msgstr "표지를 업로드 할 수 있는 권한이 없는 사용자입니다."
#: cps/editbooks.py:175 cps/editbooks.py:720 #: cps/editbooks.py:175 cps/editbooks.py:720
msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier"
@ -549,7 +549,7 @@ msgstr "메타데이터가 성공적으로 업데이트되었습니다"
#: cps/editbooks.py:235 #: cps/editbooks.py:235
msgid "Error editing book: {}" msgid "Error editing book: {}"
msgstr "" msgstr "책 편집 중 오류 발생: {}"
#: cps/editbooks.py:292 #: cps/editbooks.py:292
#, python-format #, python-format
@ -608,7 +608,7 @@ msgstr "책이 성공적으로 삭제되었습니다"
#: cps/editbooks.py:884 #: cps/editbooks.py:884
msgid "You are missing permissions to delete books" msgid "You are missing permissions to delete books"
msgstr "" msgstr "책을 삭제할 수 있는 권한이 없습니다."
#: cps/editbooks.py:934 #: cps/editbooks.py:934
msgid "edit metadata" msgid "edit metadata"
@ -621,7 +621,7 @@ msgstr "%(seriesindex)s은(는) 유효한 숫자가 아닙니다. 건너뜁니
#: cps/editbooks.py:1162 #: cps/editbooks.py:1162
msgid "User has no rights to upload additional file formats" msgid "User has no rights to upload additional file formats"
msgstr "" msgstr "추가 파일 유형을 업로드 할 권한이 없는 사용자입니다."
#: cps/editbooks.py:1183 #: cps/editbooks.py:1183
#, python-format #, python-format
@ -711,7 +711,7 @@ msgstr "요청한 파일을 읽을 수 없습니다. 올바른 권한인가요?"
#: cps/helper.py:342 #: cps/helper.py:342
msgid "Read status could not set: {}" msgid "Read status could not set: {}"
msgstr "" msgstr "읽기 상태를 설정할 수 없음: {}"
#: cps/helper.py:365 #: cps/helper.py:365
#, python-format #, python-format
@ -745,7 +745,7 @@ msgstr "제목 이름을 '%(src)s'에서 '%(dest)s'(으)로 변경하지 못했
#: cps/helper.py:582 #: cps/helper.py:582
msgid "Error in rename file in path: {}" msgid "Error in rename file in path: {}"
msgstr "" msgstr "경로에서 파일 이름을 바꾸는 중 오류가 발생: {}"
#: cps/helper.py:600 #: cps/helper.py:600
#, python-format #, python-format
@ -754,7 +754,7 @@ msgstr "Google 드라이브에서 책 경로 %(path)s을(를) 찾을 수 없습
#: cps/helper.py:665 #: cps/helper.py:665
msgid "Found an existing account for this Email address" msgid "Found an existing account for this Email address"
msgstr "" msgstr "다른 계정에서 사용하고 있는 이메일 주소입니다."
#: cps/helper.py:673 #: cps/helper.py:673
msgid "This username is already taken" msgid "This username is already taken"
@ -767,11 +767,11 @@ msgstr "이메일 주소 형식이 잘못되었습니다"
#: cps/helper.py:703 #: cps/helper.py:703
msgid "Password doesn't comply with password validation rules" msgid "Password doesn't comply with password validation rules"
msgstr "" msgstr "규칙에 어긋나는 비밀번호입니다."
#: cps/helper.py:852 #: cps/helper.py:852
msgid "Python module 'advocate' is not installed but is needed for cover uploads" msgid "Python module 'advocate' is not installed but is needed for cover uploads"
msgstr "" msgstr "표지 업로드에 필요한 Python 모듈 'advocate'이 설치되지 않았습니다."
#: cps/helper.py:862 #: cps/helper.py:862
msgid "Error Downloading Cover" msgid "Error Downloading Cover"
@ -783,7 +783,7 @@ msgstr "표지 형식 오류"
#: cps/helper.py:868 #: cps/helper.py:868
msgid "You are not allowed to access localhost or the local network for cover uploads" msgid "You are not allowed to access localhost or the local network for cover uploads"
msgstr "" msgstr "표지 업로드를 위해 localhost 또는 로컬 네트워크에 액세스할 수 없습니다."
#: cps/helper.py:878 #: cps/helper.py:878
msgid "Failed to create path for cover" msgid "Failed to create path for cover"
@ -821,7 +821,7 @@ msgstr "발견"
#: cps/helper.py:1079 cps/templates/admin.html:216 #: cps/helper.py:1079 cps/templates/admin.html:216
msgid "Queue all books for metadata backup" msgid "Queue all books for metadata backup"
msgstr "" msgstr "메타데이터 백업을 위해 모든 도서를 대기열에 추가"
#: cps/kobo_auth.py:90 #: cps/kobo_auth.py:90
#, fuzzy #, fuzzy
@ -1166,7 +1166,7 @@ msgstr "책장 편집"
#: cps/shelf.py:229 #: cps/shelf.py:229
msgid "Error deleting Shelf" msgid "Error deleting Shelf"
msgstr "" msgstr "서제를 삭제하는 동안 오류 발생"
#: cps/shelf.py:231 #: cps/shelf.py:231
#, fuzzy #, fuzzy
@ -1238,11 +1238,11 @@ msgstr "종료"
#: cps/tasks_status.py:70 #: cps/tasks_status.py:70
msgid "Ended" msgid "Ended"
msgstr "" msgstr "종료됨"
#: cps/tasks_status.py:72 #: cps/tasks_status.py:72
msgid "Cancelled" msgid "Cancelled"
msgstr "" msgstr "취소됨"
#: cps/tasks_status.py:74 #: cps/tasks_status.py:74
msgid "Unknown Status" msgid "Unknown Status"
@ -1307,7 +1307,7 @@ msgstr "시리즈: %(serie)s"
#: cps/web.py:620 #: cps/web.py:620
msgid "Rating: None" msgid "Rating: None"
msgstr "" msgstr "평가: 없음음"
#: cps/web.py:629 #: cps/web.py:629
#, python-format #, python-format
@ -1363,7 +1363,7 @@ msgstr "Kindle로 보내는 유효한 이메일 주소로 프로필을 업데이
#: cps/web.py:1254 #: cps/web.py:1254
msgid "Please wait one minute to register next user" msgid "Please wait one minute to register next user"
msgstr "" msgstr "1분 이상 지난 후 다음 사용자를 등록하세요."
#: cps/templates/layout.html:68 cps/templates/layout.html:102 #: cps/templates/layout.html:68 cps/templates/layout.html:102
#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1255 #: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1255
@ -1391,7 +1391,7 @@ msgstr "LDAP 인증을 활성화할 수 없습니다"
#: cps/web.py:1353 #: cps/web.py:1353
msgid "Please wait one minute before next login" msgid "Please wait one minute before next login"
msgstr "" msgstr "1분 이상 지난 후 로그인을 하세요."
#: cps/web.py:1369 #: cps/web.py:1369
#, fuzzy, python-format #, fuzzy, python-format
@ -1492,15 +1492,15 @@ msgstr "오류로 인한 Calibre 실패: %(error)s"
#: cps/tasks/convert.py:275 #: cps/tasks/convert.py:275
msgid "Convert" msgid "Convert"
msgstr "" msgstr "변환"
#: cps/tasks/database.py:28 #: cps/tasks/database.py:28
msgid "Reconnecting Calibre database" msgid "Reconnecting Calibre database"
msgstr "" msgstr "Calibre DB를 다시 연결합니다."
#: cps/tasks/mail.py:269 #: cps/tasks/mail.py:269
msgid "E-mail" msgid "E-mail"
msgstr "" msgstr "이메일일"
#: cps/tasks/metadata_backup.py:46 #: cps/tasks/metadata_backup.py:46
#, fuzzy #, fuzzy
@ -1510,20 +1510,20 @@ msgstr "메타데이터 편집"
#: cps/tasks/thumbnail.py:96 #: cps/tasks/thumbnail.py:96
#, python-format #, python-format
msgid "Generated %(count)s cover thumbnails" msgid "Generated %(count)s cover thumbnails"
msgstr "" msgstr "%(count)개의 표지 섬네일을 생성하였습니다."
#: cps/tasks/thumbnail.py:230 cps/tasks/thumbnail.py:443 #: cps/tasks/thumbnail.py:230 cps/tasks/thumbnail.py:443
#: cps/tasks/thumbnail.py:511 #: cps/tasks/thumbnail.py:511
msgid "Cover Thumbnails" msgid "Cover Thumbnails"
msgstr "" msgstr "표지 섬네일"
#: cps/tasks/thumbnail.py:289 #: cps/tasks/thumbnail.py:289
msgid "Generated {0} series thumbnails" msgid "Generated {0} series thumbnails"
msgstr "" msgstr "{0} 시리즈 섬네일을 생성하였습니다."
#: cps/tasks/thumbnail.py:454 #: cps/tasks/thumbnail.py:454
msgid "Clearing cover thumbnail cache" msgid "Clearing cover thumbnail cache"
msgstr "" msgstr "표지 섬네일 캐시를 삭제합니다."
#: cps/tasks/upload.py:38 cps/templates/admin.html:20 #: cps/tasks/upload.py:38 cps/templates/admin.html:20
#: cps/templates/layout.html:81 cps/templates/user_table.html:145 #: cps/templates/layout.html:81 cps/templates/user_table.html:145
@ -1686,37 +1686,37 @@ msgstr "UI 환경 설정 편집"
#: cps/templates/admin.html:167 #: cps/templates/admin.html:167
msgid "Scheduled Tasks" msgid "Scheduled Tasks"
msgstr "" msgstr "예약된 작업"
#: cps/templates/admin.html:170 cps/templates/schedule_edit.html:12 #: cps/templates/admin.html:170 cps/templates/schedule_edit.html:12
#: cps/templates/tasks.html:18 #: cps/templates/tasks.html:18
msgid "Start Time" msgid "Start Time"
msgstr "" msgstr "시작 시간"
#: cps/templates/admin.html:174 cps/templates/schedule_edit.html:20 #: cps/templates/admin.html:174 cps/templates/schedule_edit.html:20
msgid "Maximum Duration" msgid "Maximum Duration"
msgstr "" msgstr "최대 기간"
#: cps/templates/admin.html:178 cps/templates/schedule_edit.html:29 #: cps/templates/admin.html:178 cps/templates/schedule_edit.html:29
msgid "Generate Thumbnails" msgid "Generate Thumbnails"
msgstr "" msgstr "섬네일 생성성"
#: cps/templates/admin.html:182 #: cps/templates/admin.html:182
msgid "Generate series cover thumbnails" msgid "Generate series cover thumbnails"
msgstr "" msgstr "시리즈 표지 섬네일 생성"
#: cps/templates/admin.html:186 cps/templates/admin.html:208 #: cps/templates/admin.html:186 cps/templates/admin.html:208
#: cps/templates/schedule_edit.html:37 #: cps/templates/schedule_edit.html:37
msgid "Reconnect Calibre Database" msgid "Reconnect Calibre Database"
msgstr "" msgstr "Calibre DB 다시 연결"
#: cps/templates/admin.html:190 cps/templates/schedule_edit.html:41 #: cps/templates/admin.html:190 cps/templates/schedule_edit.html:41
msgid "Generate Metadata Backup Files" msgid "Generate Metadata Backup Files"
msgstr "" msgstr "메타 정보 백업 파일 생성"
#: cps/templates/admin.html:197 #: cps/templates/admin.html:197
msgid "Refresh Thumbnail Cache" msgid "Refresh Thumbnail Cache"
msgstr "" msgstr "섬네일 캐시 새로 고침침"
#: cps/templates/admin.html:203 #: cps/templates/admin.html:203
msgid "Administration" msgid "Administration"
@ -1740,7 +1740,7 @@ msgstr "종료"
#: cps/templates/admin.html:221 #: cps/templates/admin.html:221
msgid "Version Information" msgid "Version Information"
msgstr "" msgstr "버전 정보"
#: cps/templates/admin.html:225 #: cps/templates/admin.html:225
msgid "Version" msgid "Version"
@ -1788,7 +1788,7 @@ msgstr "종료를 하시겠습니까?"
#: cps/templates/admin.html:283 #: cps/templates/admin.html:283
msgid "Updating, please do not reload this page" msgid "Updating, please do not reload this page"
msgstr "Встановлення оновлень, будь-ласка, не оновлюйте сторінку" msgstr "업데이트 중입니다. 이 페이지를 새로고침 하지 마세요."
#: cps/templates/author.html:15 #: cps/templates/author.html:15
msgid "via" msgid "via"
@ -2089,7 +2089,7 @@ msgstr "코멘트"
#: cps/templates/book_table.html:75 #: cps/templates/book_table.html:75
msgid "Archive Status" msgid "Archive Status"
msgstr "" msgstr "아카이브 상태태"
#: cps/templates/book_table.html:77 cps/templates/search_form.html:42 #: cps/templates/book_table.html:77 cps/templates/search_form.html:42
msgid "Read Status" msgid "Read Status"
@ -2133,7 +2133,7 @@ msgstr "구글 드라이브 인증"
#: cps/templates/config_db.html:32 #: cps/templates/config_db.html:32
msgid "Google Drive Calibre folder" msgid "Google Drive Calibre folder"
msgstr "Google Drive Calibre 폴더" msgstr "구글 드라이브 Calibre 폴더"
#: cps/templates/config_db.html:40 #: cps/templates/config_db.html:40
msgid "Metadata Watch Channel ID" msgid "Metadata Watch Channel ID"
@ -2421,44 +2421,44 @@ msgstr "OAuth 설정"
#: cps/templates/config_edit.html:369 #: cps/templates/config_edit.html:369
msgid "Limit failed login attempts" msgid "Limit failed login attempts"
msgstr "" msgstr "로그인 시도 제한"
#: cps/templates/config_edit.html:372 #: cps/templates/config_edit.html:372
msgid "Session protection" msgid "Session protection"
msgstr "" msgstr "세션 보호"
#: cps/templates/config_edit.html:374 #: cps/templates/config_edit.html:374
msgid "Basic" msgid "Basic"
msgstr "" msgstr "기본"
#: cps/templates/config_edit.html:375 #: cps/templates/config_edit.html:375
msgid "Strong" msgid "Strong"
msgstr "" msgstr "강함함"
#: cps/templates/config_edit.html:380 #: cps/templates/config_edit.html:380
#, fuzzy #, fuzzy
msgid "User Password policy" msgid "User Password policy"
msgstr "사용자 비밀번호 초기화" msgstr "사용자 비밀번호 정책"
#: cps/templates/config_edit.html:384 #: cps/templates/config_edit.html:384
msgid "Minimum password length" msgid "Minimum password length"
msgstr "" msgstr "최소 비밀번호 길이"
#: cps/templates/config_edit.html:389 #: cps/templates/config_edit.html:389
msgid "Enforce number" msgid "Enforce number"
msgstr "" msgstr "반드시 숫자 입력"
#: cps/templates/config_edit.html:393 #: cps/templates/config_edit.html:393
msgid "Enforce lowercase characters" msgid "Enforce lowercase characters"
msgstr "" msgstr "반드시 소문자 입력"
#: cps/templates/config_edit.html:397 #: cps/templates/config_edit.html:397
msgid "Enforce uppercase characters" msgid "Enforce uppercase characters"
msgstr "" msgstr "반드시 대문자 입력"
#: cps/templates/config_edit.html:401 #: cps/templates/config_edit.html:401
msgid "Enforce special characters" msgid "Enforce special characters"
msgstr "" msgstr "반드시 특수문자 입력력"
#: cps/templates/config_view_edit.html:17 #: cps/templates/config_view_edit.html:17
msgid "View Configuration" msgid "View Configuration"
@ -2620,7 +2620,7 @@ msgstr "(공개)"
#: cps/templates/detail.html:339 #: cps/templates/detail.html:339
msgid "Edit Metadata" msgid "Edit Metadata"
msgstr "메타저오 편집" msgstr "메타정보보 편집"
#: cps/templates/email_edit.html:13 #: cps/templates/email_edit.html:13
msgid "Email Account Type" msgid "Email Account Type"
@ -2634,11 +2634,11 @@ msgstr "표준 이메일 계정 사용"
#: cps/templates/email_edit.html:16 #: cps/templates/email_edit.html:16
#, fuzzy #, fuzzy
msgid "Gmail Account" msgid "Gmail Account"
msgstr "서버 유형 선택" msgstr "Gmail 계정"
#: cps/templates/email_edit.html:22 #: cps/templates/email_edit.html:22
msgid "Setup Gmail Account" msgid "Setup Gmail Account"
msgstr "" msgstr "Gmail 계정 설정정"
#: cps/templates/email_edit.html:24 #: cps/templates/email_edit.html:24
msgid "Revoke Gmail Access" msgid "Revoke Gmail Access"
@ -2706,7 +2706,7 @@ msgstr "코보 연동 토큰"
#: cps/templates/grid.html:21 #: cps/templates/grid.html:21
msgid "List" msgid "List"
msgstr "" msgstr "목록"
#: cps/templates/http_error.html:34 #: cps/templates/http_error.html:34
msgid "Calibre-Web Instance is unconfigured, please contact your administrator" msgid "Calibre-Web Instance is unconfigured, please contact your administrator"
@ -2878,7 +2878,7 @@ msgstr "책 상세정보"
#: cps/templates/list.html:22 #: cps/templates/list.html:22
msgid "Grid" msgid "Grid"
msgstr "" msgstr "그리드드"
#: cps/templates/login.html:18 #: cps/templates/login.html:18
msgid "Remember Me" msgid "Remember Me"
@ -3006,7 +3006,7 @@ msgstr "어둡게"
#: cps/templates/read.html:83 #: cps/templates/read.html:83
msgid "Sepia" msgid "Sepia"
msgstr "" msgstr "세피아"
#: cps/templates/read.html:84 #: cps/templates/read.html:84
#, fuzzy #, fuzzy
@ -3019,7 +3019,7 @@ msgstr "사이드바가 열려 있을 때 텍스트 다시 배열."
#: cps/templates/read.html:93 #: cps/templates/read.html:93
msgid "Font Sizes" msgid "Font Sizes"
msgstr "" msgstr "글자 크기기"
#: cps/templates/readcbr.html:8 #: cps/templates/readcbr.html:8
msgid "Comic Reader" msgid "Comic Reader"
@ -3039,11 +3039,11 @@ msgstr "다음 페이지"
#: cps/templates/readcbr.html:80 #: cps/templates/readcbr.html:80
msgid "Single Page Display" msgid "Single Page Display"
msgstr "" msgstr "한 페이지 보기기"
#: cps/templates/readcbr.html:81 #: cps/templates/readcbr.html:81
msgid "Long Strip Display" msgid "Long Strip Display"
msgstr "" msgstr "Long Strip Display"
#: cps/templates/readcbr.html:82 #: cps/templates/readcbr.html:82
msgid "Scale to Best" msgid "Scale to Best"
@ -3075,7 +3075,7 @@ msgstr "이미지 뒤집기"
#: cps/templates/readcbr.html:110 #: cps/templates/readcbr.html:110
msgid "Display" msgid "Display"
msgstr "" msgstr "화면"
#: cps/templates/readcbr.html:113 #: cps/templates/readcbr.html:113
#, fuzzy #, fuzzy
@ -3084,7 +3084,7 @@ msgstr "관리자 페이지"
#: cps/templates/readcbr.html:114 #: cps/templates/readcbr.html:114
msgid "Long Strip" msgid "Long Strip"
msgstr "" msgstr "Long Strip"
#: cps/templates/readcbr.html:119 #: cps/templates/readcbr.html:119
msgid "Scale" msgid "Scale"
@ -3196,7 +3196,7 @@ msgstr "이 확인 링크는 10분 후에 만료됩니다."
#: cps/templates/schedule_edit.html:33 #: cps/templates/schedule_edit.html:33
msgid "Generate Series Cover Thumbnails" msgid "Generate Series Cover Thumbnails"
msgstr "" msgstr "시리즈 섬네일 표지 생성"
#: cps/templates/search.html:6 #: cps/templates/search.html:6
msgid "No Results Found" msgid "No Results Found"
@ -3320,7 +3320,7 @@ msgstr "시스템 통계"
#: cps/templates/stats.html:33 #: cps/templates/stats.html:33
msgid "Program" msgid "Program"
msgstr "" msgstr "프로그램램"
#: cps/templates/stats.html:34 #: cps/templates/stats.html:34
msgid "Installed Version" msgid "Installed Version"
@ -3348,15 +3348,15 @@ msgstr "실행 시간"
#: cps/templates/tasks.html:20 #: cps/templates/tasks.html:20
msgid "Actions" msgid "Actions"
msgstr "" msgstr "Actions"
#: cps/templates/tasks.html:40 #: cps/templates/tasks.html:40
msgid "This task will be cancelled. Any progress made by this task will be saved." msgid "This task will be cancelled. Any progress made by this task will be saved."
msgstr "" msgstr "이 작업을 취소합니다. 이 작업의 모든 진행사항은 반영됩니다."
#: cps/templates/tasks.html:41 #: cps/templates/tasks.html:41
msgid "If this is a scheduled task, it will be re-ran during the next scheduled time." msgid "If this is a scheduled task, it will be re-ran during the next scheduled time."
msgstr "" msgstr "이 작업이 예약된 작업이라면, 다음 예약 시간에 다시 실행됩니다."
#: cps/templates/user_edit.html:20 #: cps/templates/user_edit.html:20
msgid "Reset user Password" msgid "Reset user Password"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web (GPLV3)\n" "Project-Id-Version: Calibre-Web (GPLV3)\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-12-12 08:20+0100\n" "PO-Revision-Date: 2020-12-12 08:20+0100\n"
"Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n" "Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n"
"Language: nl\n" "Language: nl\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2023-01-06 11:00+0000\n" "PO-Revision-Date: 2023-01-06 11:00+0000\n"
"Last-Translator: Vegard Fladby <vegard.fladby@gmail.com>\n" "Last-Translator: Vegard Fladby <vegard.fladby@gmail.com>\n"
"Language: no\n" "Language: no\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre Web - polski (POT: 2021-06-12 08:52)\n" "Project-Id-Version: Calibre Web - polski (POT: 2021-06-12 08:52)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2021-06-12 15:35+0200\n" "PO-Revision-Date: 2021-06-12 15:35+0200\n"
"Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n" "Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n"
"Language: pl\n" "Language: pl\n"

View File

@ -4,7 +4,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2023-07-25 11:30+0100\n" "PO-Revision-Date: 2023-07-25 11:30+0100\n"
"Last-Translator: horus68 <https://github.com/horus68>\n" "Last-Translator: horus68 <https://github.com/horus68>\n"
"Language: pt\n" "Language: pt\n"

View File

@ -4,7 +4,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: br\n" "Language: br\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-04-29 01:20+0400\n" "PO-Revision-Date: 2020-04-29 01:20+0400\n"
"Last-Translator: ZIZA\n" "Last-Translator: ZIZA\n"
"Language: ru\n" "Language: ru\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2021-05-13 11:00+0000\n" "PO-Revision-Date: 2021-05-13 11:00+0000\n"
"Last-Translator: Jonatan Nyberg <jonatan.nyberg.karl@gmail.com>\n" "Last-Translator: Jonatan Nyberg <jonatan.nyberg.karl@gmail.com>\n"
"Language: sv\n" "Language: sv\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-04-23 22:47+0300\n" "PO-Revision-Date: 2020-04-23 22:47+0300\n"
"Last-Translator: iz <iz7iz7iz@protonmail.ch>\n" "Last-Translator: iz <iz7iz7iz@protonmail.ch>\n"
"Language: tr\n" "Language: tr\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-web\n" "Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: ABIS Team <biblio.if.abis@gmail.com>\n" "Last-Translator: ABIS Team <biblio.if.abis@gmail.com>\n"
"Language: uk\n" "Language: uk\n"

View File

@ -4,7 +4,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-web\n" "Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2022-09-20 21:36+0700\n" "PO-Revision-Date: 2022-09-20 21:36+0700\n"
"Last-Translator: Ha Link <halink0803@gmail.com>\n" "Last-Translator: Ha Link <halink0803@gmail.com>\n"
"Language: vi\n" "Language: vi\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-09-27 22:18+0800\n" "PO-Revision-Date: 2020-09-27 22:18+0800\n"
"Last-Translator: xlivevil <xlivevil@aliyun.com>\n" "Last-Translator: xlivevil <xlivevil@aliyun.com>\n"
"Language: zh_CN\n" "Language: zh_CN\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: 2020-09-27 22:18+0800\n" "PO-Revision-Date: 2020-09-27 22:18+0800\n"
"Last-Translator: xlivevil <xlivevil@aliyun.com>\n" "Last-Translator: xlivevil <xlivevil@aliyun.com>\n"
"Language: zh_TW\n" "Language: zh_TW\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-14 15:45+0200\n" "POT-Creation-Date: 2023-10-21 15:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -13,7 +13,7 @@ author = @OzzieIsaacs
author_email = Ozzie.Fernandez.Isaacs@googlemail.com author_email = Ozzie.Fernandez.Isaacs@googlemail.com
maintainer = @OzzieIsaacs maintainer = @OzzieIsaacs
license = GPLv3+ license = GPLv3+
license_file = LICENSE license_files = LICENSE
classifiers = classifiers =
Development Status :: 5 - Production/Stable Development Status :: 5 - Production/Stable
License :: OSI Approved :: GNU Affero General Public License v3 License :: OSI Approved :: GNU Affero General Public License v3
@ -60,6 +60,10 @@ install_requires =
Flask-Limiter>=2.3.0,<3.5.0 Flask-Limiter>=2.3.0,<3.5.0
[options.packages.find]
where = src
include = cps/services*
[options.extras_require] [options.extras_require]
gdrive = gdrive =
google-api-python-client>=1.7.11,<2.98.0 google-api-python-client>=1.7.11,<2.98.0

View File

@ -20,7 +20,6 @@
# """Calibre-web distribution package setuptools installer.""" # """Calibre-web distribution package setuptools installer."""
from setuptools import setup from setuptools import setup
from setuptools import find_packages
import os import os
import re import re
import codecs import codecs
@ -40,7 +39,5 @@ def find_version(*file_paths):
raise RuntimeError("Unable to find version string.") raise RuntimeError("Unable to find version string.")
setup( setup(
packages=find_packages("src"),
package_dir = {'': 'src'},
version=find_version("src", "calibreweb", "cps", "constants.py") version=find_version("src", "calibreweb", "cps", "constants.py")
) )

View File

@ -37,20 +37,20 @@
<div class="row"> <div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3" style="margin-top:50px;"> <div class="col-xs-6 col-md-6 col-sm-offset-3" style="margin-top:50px;">
<p class='text-justify attribute'><strong>Start Time: </strong>2023-10-11 19:32:23</p> <p class='text-justify attribute'><strong>Start Time: </strong>2023-10-16 19:38:22</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3"> <div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Stop Time: </strong>2023-10-12 01:29:49</p> <p class='text-justify attribute'><strong>Stop Time: </strong>2023-10-17 02:18:49</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3"> <div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Duration: </strong>4h 56 min</p> <p class='text-justify attribute'><strong>Duration: </strong>5h 37 min</p>
</div> </div>
</div> </div>
</div> </div>
@ -234,11 +234,11 @@
<tr id="su" class="failClass"> <tr id="su" class="passClass">
<td>TestBackupMetadata</td> <td>TestBackupMetadata</td>
<td class="text-center">22</td> <td class="text-center">22</td>
<td class="text-center">21</td> <td class="text-center">22</td>
<td class="text-center">1</td> <td class="text-center">0</td>
<td class="text-center">0</td> <td class="text-center">0</td>
<td class="text-center">0</td> <td class="text-center">0</td>
<td class="text-center"> <td class="text-center">
@ -248,31 +248,11 @@
<tr id="ft2.1" class="none bg-danger"> <tr id='pt2.1' class='hiddenRow bg-success'>
<td> <td>
<div class='testcase'>TestBackupMetadata - test_backup_all</div> <div class='testcase'>TestBackupMetadata - test_backup_all</div>
</td> </td>
<td colspan='6'> <td colspan='6' align='center'>PASS</td>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft2.1')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft2.1" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft2.1').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_backup_metadata.py&#34;, line 49, in test_backup_all
self.assertEqual(1, len(res))
AssertionError: 1 != 0</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr> </tr>
@ -1996,12 +1976,12 @@ IndexError: list index out of range</pre>
<tr id="su" class="passClass"> <tr id="su" class="errorClass">
<td>TestEditBooksOnGdrive</td> <td>TestEditBooksOnGdrive</td>
<td class="text-center">18</td> <td class="text-center">18</td>
<td class="text-center">18</td> <td class="text-center">17</td>
<td class="text-center">0</td>
<td class="text-center">0</td> <td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">0</td> <td class="text-center">0</td>
<td class="text-center"> <td class="text-center">
<a onclick="showClassDetail('c18', 18)">Detail</a> <a onclick="showClassDetail('c18', 18)">Detail</a>
@ -2145,11 +2125,31 @@ IndexError: list index out of range</pre>
<tr id='pt18.16' class='hiddenRow bg-success'> <tr id="et18.16" class="none bg-info">
<td> <td>
<div class='testcase'>TestEditBooksOnGdrive - test_edit_title</div> <div class='testcase'>TestEditBooksOnGdrive - test_edit_title</div>
</td> </td>
<td colspan='6' align='center'>PASS</td> <td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et18.16')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et18.16" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et18.16').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 173, in test_edit_title
self.assertEqual(&#39;Unknown&#39;, values[&#39;title&#39;])
KeyError: &#39;title&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr> </tr>
@ -3623,11 +3623,11 @@ IndexError: list index out of range</pre>
<tr id="su" class="passClass"> <tr id="su" class="failClass">
<td>TestReader</td> <td>TestReader</td>
<td class="text-center">6</td> <td class="text-center">6</td>
<td class="text-center">6</td> <td class="text-center">5</td>
<td class="text-center">0</td> <td class="text-center">1</td>
<td class="text-center">0</td> <td class="text-center">0</td>
<td class="text-center">0</td> <td class="text-center">0</td>
<td class="text-center"> <td class="text-center">
@ -3673,11 +3673,37 @@ IndexError: list index out of range</pre>
<tr id='pt39.5' class='hiddenRow bg-success'> <tr id="ft39.5" class="none bg-danger">
<td> <td>
<div class='testcase'>TestReader - test_sound_listener</div> <div class='testcase'>TestReader - test_sound_listener</div>
</td> </td>
<td colspan='6' align='center'>PASS</td> <td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft39.5')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft39.5" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft39.5').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_reader.py&#34;, line 331, in test_sound_listener
self.sound_test(&#39;music.flac&#39;, &#39;Unknown - music&#39;, &#39;0:02&#39;)
File &#34;/home/ozzie/Development/calibre-web-test/test/test_reader.py&#34;, line 320, in sound_test
self.assertEqual(duration, duration_item.text)
AssertionError: &#39;0:02&#39; != &#39;0:01&#39;
- 0:02
? ^
+ 0:01
? ^</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr> </tr>
@ -4139,9 +4165,9 @@ IndexError: list index out of range</pre>
</div> </div>
<div class="text-left pull-left"> <div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last): <pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py&#34;, line 311, in test_sideloaded_book File &#34;/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py&#34;, line 321, in test_sideloaded_book
self.assertAlmostEqual(diff(BytesIO(list_cover), BytesIO(old_list_cover), delete_diff_file=True), 0.0, self.assertGreaterEqual(diff(BytesIO(list_cover), BytesIO(new_list_cover), delete_diff_file=True), 0.04)
AssertionError: 0.004399004046062869 != 0.0 within 0.0001 delta (0.004399004046062869 difference)</pre> AssertionError: 0.029247650171179584 not greater than or equal to 0.04</pre>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
@ -5221,9 +5247,9 @@ AssertionError: 0.004399004046062869 != 0.0 within 0.0001 delta (0.0043990040460
<tr id='total_row' class="text-center bg-grey"> <tr id='total_row' class="text-center bg-grey">
<td>Total</td> <td>Total</td>
<td>462</td> <td>462</td>
<td>450</td> <td>449</td>
<td>2</td>
<td>2</td> <td>2</td>
<td>1</td>
<td>9</td> <td>9</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
@ -5714,7 +5740,7 @@ AssertionError: 0.004399004046062869 != 0.0 within 0.0001 delta (0.0043990040460
</div> </div>
<script> <script>
drawCircle(450, 2, 1, 9); drawCircle(449, 2, 2, 9);
showCase(5); showCase(5);
</script> </script>