Updated spdx headers to more accurately reflect the current status of the project & it's contributors
This commit is contained in:
+322
@@ -0,0 +1,322 @@
|
||||
CONTRIBUTORS
|
||||
|
||||
This file is automatically generated. DO NOT EDIT MANUALLY.
|
||||
Generated on: 2025-08-09T14:14:17.221105Z
|
||||
|
||||
Upstream project: https://github.com/janeczku/calibre-web
|
||||
Fork project (Calibre-Web Automated, since 2024): https://github.com/crocodilestick/calibre-web-automated
|
||||
|
||||
License notice: This fork retains attribution to original Calibre-Web contributors in accordance with GPL-3.0-or-later.
|
||||
|
||||
Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# Upstream Contributors (janeczku/calibre-web)
|
||||
|
||||
- OzzieIsaacs (anon) (2717 commits)
|
||||
- Ozzie Isaacs (anon) (257 commits)
|
||||
- cbartondock (96 commits)
|
||||
- idalin (69 commits)
|
||||
- cervinko (68 commits)
|
||||
- irfan-ansari-au28 (64 commits)
|
||||
- jkrehm (62 commits)
|
||||
- Jack Darlington (anon) (51 commits)
|
||||
- hexeth (anon) (44 commits)
|
||||
- shavitmichael (44 commits)
|
||||
- Jan Broer (anon) (41 commits)
|
||||
- blitzmann (38 commits)
|
||||
- mmonkey (33 commits)
|
||||
- jvoisin (30 commits)
|
||||
- bodybybuddha (26 commits)
|
||||
- ElQuimm (26 commits)
|
||||
- janeczku (anon) (26 commits)
|
||||
- xlivevil (24 commits)
|
||||
- ghighi3f (23 commits)
|
||||
- Virgil Grigoras (anon) (23 commits)
|
||||
- Krakinou (21 commits)
|
||||
- pthiben (anon) (19 commits)
|
||||
- radoslawkierznowski (19 commits)
|
||||
- kyos (anon) (18 commits)
|
||||
- Thore Schillmann (anon) (18 commits)
|
||||
- quarz12 (16 commits)
|
||||
- ok11 (13 commits)
|
||||
- pwr (13 commits)
|
||||
- mapi68 (12 commits)
|
||||
- Kyosfonica (11 commits)
|
||||
- otapi (11 commits)
|
||||
- andy29485 (10 commits)
|
||||
- Jony (anon) (10 commits)
|
||||
- leram84 (10 commits)
|
||||
- nykul (10 commits)
|
||||
- oskardotglobal (10 commits)
|
||||
- subdiox (10 commits)
|
||||
- XZVB12 (10 commits)
|
||||
- celogeek (9 commits)
|
||||
- GarckaMan (9 commits)
|
||||
- Knepherbird (9 commits)
|
||||
- Yamakuni (anon) (9 commits)
|
||||
- 89jd (8 commits)
|
||||
- aroberts (8 commits)
|
||||
- collerek (7 commits)
|
||||
- Jan B (anon) (7 commits)
|
||||
- lemmsh (7 commits)
|
||||
- wuqi (7 commits)
|
||||
- alfred82santa (6 commits)
|
||||
- Kyos (anon) (6 commits)
|
||||
- limeade23 (6 commits)
|
||||
- Radosław Kierznowski (anon) (6 commits)
|
||||
- akhy (5 commits)
|
||||
- AsherMaximum (5 commits)
|
||||
- Daniel (anon) (5 commits)
|
||||
- gjutras (5 commits)
|
||||
- horus68 (5 commits)
|
||||
- JanB (anon) (5 commits)
|
||||
- Ainsley Pereira (anon) (4 commits)
|
||||
- csitko (4 commits)
|
||||
- Faisal Alghamdi (anon) (4 commits)
|
||||
- flying-sausages (4 commits)
|
||||
- garf1242 (4 commits)
|
||||
- Illia-M (4 commits)
|
||||
- Jan Guzej (anon) (4 commits)
|
||||
- joshobrienau (4 commits)
|
||||
- Oreolek (4 commits)
|
||||
- Petipopotam (4 commits)
|
||||
- stfrbrntyu (4 commits)
|
||||
- trasba (4 commits)
|
||||
- webysther (4 commits)
|
||||
- wildthyme (4 commits)
|
||||
- acciobugs (3 commits)
|
||||
- aliceout (3 commits)
|
||||
- byword77 (3 commits)
|
||||
- chintogtokh (3 commits)
|
||||
- dickreckard (anon) (3 commits)
|
||||
- eddriesen (3 commits)
|
||||
- ground7 (3 commits)
|
||||
- iz7iz7iz (3 commits)
|
||||
- jango (3 commits)
|
||||
- JFernando122 (3 commits)
|
||||
- Kennyl (3 commits)
|
||||
- lorek123 (anon) (3 commits)
|
||||
- OlivierMaire (3 commits)
|
||||
- SiphonSquirrel (3 commits)
|
||||
- Thovi98 (3 commits)
|
||||
- verglor (3 commits)
|
||||
- yunimoo (anon) (3 commits)
|
||||
- afrimberger (2 commits)
|
||||
- Andrej Kralj (anon) (2 commits)
|
||||
- andrerfcsantos (2 commits)
|
||||
- Angel Docampo (anon) (2 commits)
|
||||
- AnonTester (2 commits)
|
||||
- beedaddy (2 commits)
|
||||
- bharatknv (2 commits)
|
||||
- CHBMB (2 commits)
|
||||
- Clément Poissonnier (anon) (2 commits)
|
||||
- Cyberax (2 commits)
|
||||
- daniel-edwards-iress (2 commits)
|
||||
- drizuid (2 commits)
|
||||
- fernando-mesquita (2 commits)
|
||||
- flashlab (2 commits)
|
||||
- grunjol (2 commits)
|
||||
- h1f0x (2 commits)
|
||||
- halkeye (2 commits)
|
||||
- hitsounds (2 commits)
|
||||
- issmirnov (2 commits)
|
||||
- jef (2 commits)
|
||||
- jfenske89 (2 commits)
|
||||
- jim3ma (2 commits)
|
||||
- juanfernandovillahernandez (2 commits)
|
||||
- KN4CK3R (2 commits)
|
||||
- marblepebble (2 commits)
|
||||
- nanu-c (2 commits)
|
||||
- norangebit (2 commits)
|
||||
- Northguy (2 commits)
|
||||
- peperunas (2 commits)
|
||||
- petersonev (2 commits)
|
||||
- rafarq (2 commits)
|
||||
- rscmbbng (2 commits)
|
||||
- rtrox (2 commits)
|
||||
- shivishbrahma (2 commits)
|
||||
- tader (2 commits)
|
||||
- teflontoni (2 commits)
|
||||
- tintinmar1995 (2 commits)
|
||||
- tobiasbayer (2 commits)
|
||||
- UFervor (2 commits)
|
||||
- UsamaFoad (2 commits)
|
||||
- victorhck (2 commits)
|
||||
- vigri (2 commits)
|
||||
- Wladefant (2 commits)
|
||||
- Zaroz (2 commits)
|
||||
- acsulli (1 commits)
|
||||
- Admiral Laser Beard (anon) (1 commits)
|
||||
- adocampo (1 commits)
|
||||
- aexvir (1 commits)
|
||||
- akushsky (1 commits)
|
||||
- Allram (1 commits)
|
||||
- altair (1 commits)
|
||||
- anatoliifetisov (1 commits)
|
||||
- andylizi (1 commits)
|
||||
- antar37 (1 commits)
|
||||
- Anton Konyshev (anon) (1 commits)
|
||||
- apetresc (1 commits)
|
||||
- aptalca (1 commits)
|
||||
- archont94 (1 commits)
|
||||
- aribes (1 commits)
|
||||
- ariesdevil (1 commits)
|
||||
- arihid (1 commits)
|
||||
- auveele (1 commits)
|
||||
- BeckyDTP (1 commits)
|
||||
- bernizt (1 commits)
|
||||
- boosh (1 commits)
|
||||
- Braincoke (anon) (1 commits)
|
||||
- brandoningli (1 commits)
|
||||
- captainwong (1 commits)
|
||||
- chadberg (1 commits)
|
||||
- coelebs (1 commits)
|
||||
- ConstrictM (1 commits)
|
||||
- contributor (1 commits)
|
||||
- cryptkiddy (1 commits)
|
||||
- danielamazza (1 commits)
|
||||
- databoy2k (1 commits)
|
||||
- Dave Mogle (anon) (1 commits)
|
||||
- decentral1se (1 commits)
|
||||
- dependabot[bot] (1 commits)
|
||||
- dfn-certling (1 commits)
|
||||
- dgliwka (1 commits)
|
||||
- dmd (1 commits)
|
||||
- dmistomin (1 commits)
|
||||
- dnahurnyi (1 commits)
|
||||
- dotlambda (1 commits)
|
||||
- ducbachvan (1 commits)
|
||||
- Dunrar (1 commits)
|
||||
- Efreak (1 commits)
|
||||
- elelay (1 commits)
|
||||
- elfcan (1 commits)
|
||||
- epsilon-0 (1 commits)
|
||||
- evijayan2 (1 commits)
|
||||
- fabwu (1 commits)
|
||||
- Feige-cn (1 commits)
|
||||
- Fmstrat (1 commits)
|
||||
- geekifier (1 commits)
|
||||
- gonzalo (1 commits)
|
||||
- gorgobacka (1 commits)
|
||||
- GrmpPnda (1 commits)
|
||||
- growfrow (1 commits)
|
||||
- GruberMarkus (1 commits)
|
||||
- gwenhael-le-moine (1 commits)
|
||||
- h3xten (1 commits)
|
||||
- halink0803 (1 commits)
|
||||
- ImanSharaf (1 commits)
|
||||
- Irishsmurf (1 commits)
|
||||
- JamesMcNee (1 commits)
|
||||
- jathak (1 commits)
|
||||
- jayrhynas (1 commits)
|
||||
- Jeroen Kroese (anon) (1 commits)
|
||||
- jgillman (1 commits)
|
||||
- jhellingman (1 commits)
|
||||
- jianyun.zhao (anon) (1 commits)
|
||||
- JOHAE96 (1 commits)
|
||||
- johnnyasantoss (1 commits)
|
||||
- JonathanHerrewijnen (1 commits)
|
||||
- jorti (1 commits)
|
||||
- joshumax (1 commits)
|
||||
- Julian Naydichev (anon) (1 commits)
|
||||
- jureqq (1 commits)
|
||||
- jvonau (1 commits)
|
||||
- JVT038 (1 commits)
|
||||
- kianmeng (1 commits)
|
||||
- knobunc (1 commits)
|
||||
- Kreeblah (1 commits)
|
||||
- L0garithmic (1 commits)
|
||||
- LawssssCat (1 commits)
|
||||
- leexia (1 commits)
|
||||
- leyan (1 commits)
|
||||
- Lorek (anon) (1 commits)
|
||||
- Louis Jencka (anon) (1 commits)
|
||||
- lucaparsani (anon) (1 commits)
|
||||
- lucindaq (1 commits)
|
||||
- lunananananananana (1 commits)
|
||||
- malletfils (1 commits)
|
||||
- manad777 (1 commits)
|
||||
- Martreides (1 commits)
|
||||
- matthazinski (1 commits)
|
||||
- MeanderingCode (1 commits)
|
||||
- minakmostoles (1 commits)
|
||||
- mingyue-aai (1 commits)
|
||||
- mingyue-gao (1 commits)
|
||||
- MisLink (1 commits)
|
||||
- moben (1 commits)
|
||||
- nelsg2 (1 commits)
|
||||
- nferrari (1 commits)
|
||||
- NickWick13 (1 commits)
|
||||
- oguzkilcan (1 commits)
|
||||
- overhacked (1 commits)
|
||||
- PhracturedBlue (1 commits)
|
||||
- pjeby (1 commits)
|
||||
- pkorovin (1 commits)
|
||||
- Polarolouis (1 commits)
|
||||
- pollitor (1 commits)
|
||||
- potatoeggy (1 commits)
|
||||
- qx100 (1 commits)
|
||||
- Rewerson (1 commits)
|
||||
- Robbinsch (1 commits)
|
||||
- robochud (1 commits)
|
||||
- root (anon) (1 commits)
|
||||
- ruben-herold (1 commits)
|
||||
- ryanlong1004 (1 commits)
|
||||
- sartoshi-foot-dao (1 commits)
|
||||
- skiman6010 (1 commits)
|
||||
- SpaceWhite (1 commits)
|
||||
- theopsall (1 commits)
|
||||
- Thijxx (1 commits)
|
||||
- tomjmul (1 commits)
|
||||
- vagra (1 commits)
|
||||
- viljasenville (1 commits)
|
||||
- Vistaus (1 commits)
|
||||
- vrabe (1 commits)
|
||||
- W1ndst0rm (1 commits)
|
||||
- wadefelix (1 commits)
|
||||
- wanoo (1 commits)
|
||||
- whacloud (1 commits)
|
||||
- whilenot-dev (1 commits)
|
||||
- Wolfenk (1 commits)
|
||||
- wolviex (1 commits)
|
||||
- Wouter Dijk (anon) (1 commits)
|
||||
- WouterKoch (1 commits)
|
||||
- wuwei-12138 (1 commits)
|
||||
- xybydy (1 commits)
|
||||
- yjouanique (anon) (1 commits)
|
||||
- ytilis (1 commits)
|
||||
- zelazna (1 commits)
|
||||
- zhiyue (1 commits)
|
||||
# Fork Contributors (crocodilestick/calibre-web-automated)
|
||||
|
||||
- crocodilestick (436 commits)
|
||||
- jmarmstrong1207 (73 commits)
|
||||
- demitrix (30 commits)
|
||||
- sirwolfgang (22 commits)
|
||||
- alva-seal (6 commits)
|
||||
- angelicadvocate (6 commits)
|
||||
- smevawala (5 commits)
|
||||
- Aymendje (3 commits)
|
||||
- Calychas (3 commits)
|
||||
- zikasak (3 commits)
|
||||
- chad3814 (2 commits)
|
||||
- coissac (2 commits)
|
||||
- FennyFatal (2 commits)
|
||||
- bcrdncola (1 commits)
|
||||
- Buco7854 (1 commits)
|
||||
- cascandaliato (1 commits)
|
||||
- Daniel Egberts (anon) (1 commits)
|
||||
- Dee76 (1 commits)
|
||||
- google-labs-jules[bot] (1 commits)
|
||||
- gx1400 (1 commits)
|
||||
- have-a-boy (1 commits)
|
||||
- Hobogrammer (anon) (1 commits)
|
||||
- jack1lee1995 (anon) (1 commits)
|
||||
- jspiers (1 commits)
|
||||
- morpheus65535 (1 commits)
|
||||
- n00b42 (1 commits)
|
||||
- NotaInutilis (1 commits)
|
||||
- r0b2g1t (1 commits)
|
||||
- robinwo (1 commits)
|
||||
- Rustymage (1 commits)
|
||||
- Turmaxx (1 commits)
|
||||
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env python3
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
"""
|
||||
check_spdx_headers.py
|
||||
|
||||
Lightweight checker to ensure each staged source file (or specified paths) contains
|
||||
an SPDX identifier (GPL-3.0-or-later) and the Calibre-Web Automated attribution header.
|
||||
Intended for use in a pre-commit hook.
|
||||
|
||||
Usage:
|
||||
python check_spdx_headers.py [files...]
|
||||
If no files provided, it inspects staged git changes (added/copied/modified).
|
||||
|
||||
Exit codes:
|
||||
0 = all good
|
||||
1 = problems found / errors
|
||||
|
||||
Customize REQUIRED_SUBSTRINGS if needed.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import pathlib
|
||||
from typing import List
|
||||
|
||||
REQUIRED_SUBSTRINGS = [
|
||||
"Calibre-Web Automated", # attribution line
|
||||
"SPDX-License-Identifier: GPL-3.0-or-later",
|
||||
]
|
||||
|
||||
VALID_EXT = {".py", ".sh", ".js", ".ts", ".css", ".html"}
|
||||
|
||||
EXCLUDE_DIR = {"__pycache__", ".git", "dist", "build", "node_modules", "venv", ".venv"}
|
||||
|
||||
|
||||
def staged_files() -> List[pathlib.Path]:
|
||||
try:
|
||||
out = subprocess.check_output([
|
||||
"git", "diff", "--cached", "--name-only", "--diff-filter=ACM"
|
||||
], text=True)
|
||||
except Exception:
|
||||
return []
|
||||
files = []
|
||||
for line in out.splitlines():
|
||||
p = pathlib.Path(line.strip())
|
||||
if not p.exists():
|
||||
continue
|
||||
if any(part in EXCLUDE_DIR for part in p.parts):
|
||||
continue
|
||||
if p.suffix.lower() in VALID_EXT:
|
||||
files.append(p)
|
||||
return files
|
||||
|
||||
|
||||
def check_file(path: pathlib.Path) -> List[str]:
|
||||
try:
|
||||
text = path.read_text(encoding="utf-8", errors="ignore")
|
||||
except Exception as e:
|
||||
return [f"{path}: unable to read ({e})"]
|
||||
missing = [s for s in REQUIRED_SUBSTRINGS if s not in text]
|
||||
if missing:
|
||||
return [f"{path}: missing -> {', '.join(missing)}"]
|
||||
return []
|
||||
|
||||
|
||||
def main(argv: List[str]) -> int:
|
||||
if len(argv) > 1:
|
||||
targets = [pathlib.Path(a) for a in argv[1:]]
|
||||
else:
|
||||
targets = staged_files()
|
||||
|
||||
if not targets:
|
||||
print("No files to check.")
|
||||
return 0
|
||||
|
||||
problems: List[str] = []
|
||||
for f in targets:
|
||||
problems.extend(check_file(f))
|
||||
|
||||
if problems:
|
||||
print("SPDX / attribution header check failed:")
|
||||
for p in problems:
|
||||
print(" ", p)
|
||||
print("Hint: run: python update_spdx_headers.py --apply")
|
||||
return 1
|
||||
print("All headers OK.")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
raise SystemExit(main(sys.argv))
|
||||
@@ -1,21 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler, GammaC0de, vuolter
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from .cw_login import LoginManager
|
||||
from flask import session
|
||||
|
||||
+5
-19
@@ -1,24 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
__package__ = "cps"
|
||||
|
||||
import sys
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
import platform
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler, GammaC0de, vuolter
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2024 Ozzieisaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2016-2019 jkrehm andy29485 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# Inspired by https://github.com/ChrisTM/Flask-CacheBust
|
||||
# Uses query strings so CSS font files are found without having to resort to absolute URLs
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from . import logger
|
||||
from lxml.etree import ParserError
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2019 OzzieIsaacs, pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2019 OzzieIsaacs, pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2016-2019 Ben Bennett, OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
#
|
||||
# Copyright 2015 Jordan Milne
|
||||
#
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from babel import negotiate_locale
|
||||
from flask_babel import Babel, Locale
|
||||
from babel.core import UnknownLocaleError
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# from .__about__ import __version__
|
||||
from .config import AUTH_HEADER_NAME
|
||||
from .config import COOKIE_DURATION
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
#: The default name of the "remember me" cookie (``remember_token``)
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import timezone
|
||||
from datetime import timedelta
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
class UserMixin:
|
||||
"""
|
||||
This provides default implementations for the methods that Flask-Login
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from flask.signals import Namespace
|
||||
|
||||
_signals = Namespace()
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import hmac
|
||||
import os
|
||||
from functools import wraps
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from flask import Blueprint, redirect, flash, url_for, request, send_from_directory, abort, jsonify, current_app
|
||||
from flask_babel import gettext as _
|
||||
|
||||
|
||||
@@ -1,21 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2012-2019 mutschler, cervinko, ok11, jkrehm, nanu-c, Wineliva,
|
||||
# pjeby, elelay, idalin, Ozzieisaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
+5
-17
@@ -1,21 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2012-2019 cervinko, idalin, SiphonSquirrel, ouzklcn, akushsky,
|
||||
# OzzieIsaacs, bodybybuddha, jkrehm, matthazinski, janeczku
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import shutil
|
||||
import glob
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
from datetime import datetime, timezone
|
||||
|
||||
+5
-15
@@ -1,20 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2024 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from uuid import uuid4
|
||||
import os
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018 lemmsh, Kennyl, Kyosfonica, matthazinski
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import zipfile
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018 lemmsh, Kennyl, Kyosfonica, matthazinski
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import zipfile
|
||||
from lxml import etree
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2020 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import traceback
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018 lemmsh, cervinko, OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from lxml import etree
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2023 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from tempfile import gettempdir
|
||||
import os
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 mmonkey
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from . import logger
|
||||
from .constants import CACHE_DIR
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import hashlib
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018 idalin, OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from datetime import datetime
|
||||
from gevent.pywsgi import WSGIHandler
|
||||
|
||||
+5
-17
@@ -1,21 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2012-2019 cervinko, idalin, SiphonSquirrel, ouzklcn, akushsky,
|
||||
# OzzieIsaacs, bodybybuddha, jkrehm, matthazinski, janeczku
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import random
|
||||
|
||||
+5
-15
@@ -1,20 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2019 pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import sys
|
||||
|
||||
from .iso_language_names import LANGUAGE_NAMES as _LANGUAGE_NAMES
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2019 OzzieIsaacs, pwr
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# custom jinja filters
|
||||
|
||||
|
||||
+5
-16
@@ -1,21 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import base64
|
||||
from datetime import datetime, timezone
|
||||
|
||||
+5
-17
@@ -1,22 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
"""This module is used to control authentication/authorization of Kobo sync requests.
|
||||
This module also includes research notes into the auth protocol used by Kobo devices.
|
||||
|
||||
+5
-17
@@ -1,21 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from .cw_login import current_user
|
||||
from . import ub
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
"""
|
||||
KOReader Sync Server Implementation for Calibre-Web-Automated
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2019 pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2012-2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 quarz12
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import concurrent.futures
|
||||
import requests
|
||||
|
||||
@@ -1,20 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2025 quarz12, Hobogrammer
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import cps.logger as logger
|
||||
import concurrent.futures
|
||||
import re
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# ComicVine api document: https://comicvine.gamespot.com/api/documentation
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
@@ -1,20 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 xlivevil
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import re
|
||||
from concurrent import futures
|
||||
from typing import List, Optional
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# Google Books api document: https://developers.google.com/books/docs/v1/using
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# Hardcover api document: https://Hardcover.gamespot.com/api/documentation
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# Google Books api document: https://developers.google.com/books/docs/v1/using
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
@@ -1,19 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import datetime
|
||||
import json
|
||||
import re
|
||||
|
||||
@@ -1,20 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import itertools
|
||||
from typing import Dict, List, Optional
|
||||
from urllib.parse import quote, unquote
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 jim3ma
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from flask import session
|
||||
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import json
|
||||
from functools import wraps
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import datetime
|
||||
import json
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from math import ceil
|
||||
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# Flask License
|
||||
#
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2020 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from flask import render_template, g, abort, request, flash
|
||||
from flask_babel import gettext as _
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# Flask License
|
||||
#
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 mmonkey
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import datetime
|
||||
|
||||
|
||||
+5
-15
@@ -1,18 +1,8 @@
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import concurrent.futures
|
||||
import importlib
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2012-2019 janeczku, OzzieIsaacs, andrerfcsantos, idalin
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
@@ -1,20 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import abc
|
||||
import dataclasses
|
||||
import os
|
||||
|
||||
@@ -1,21 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
from base64 import b64decode, b64encode
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2019 pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from .. import logger
|
||||
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 mmonkey
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import atexit
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2021 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os.path
|
||||
from google_auth_oauthlib.flow import InstalledAppFlow
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import time
|
||||
from functools import reduce
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from datetime import datetime
|
||||
import requests
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import base64
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import threading
|
||||
import abc
|
||||
|
||||
+5
-20
@@ -1,24 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs, cervinko, jkrehm, bodybybuddha, ok11,
|
||||
# andy29485, idalin, Kyosfonica, wuqi, Kennyl, lemmsh,
|
||||
# falgh1, grunjol, csitko, ytils, xybydy, trasba, vrabe,
|
||||
# ruben-herold, marblepebble, JackED42, SiphonSquirrel,
|
||||
# apetresc, nanu-c, mutschler
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
from datetime import datetime, timezone
|
||||
|
||||
+5
-15
@@ -1,20 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2024 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import re
|
||||
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2018-2019 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2023 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import datetime
|
||||
|
||||
|
||||
+340
-351
@@ -1,351 +1,340 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import os
|
||||
import re
|
||||
import glob
|
||||
from shutil import copyfile, copyfileobj
|
||||
from markupsafe import escape
|
||||
from time import time
|
||||
from uuid import uuid4
|
||||
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from flask_babel import lazy_gettext as N_
|
||||
|
||||
from cps.services.worker import CalibreTask
|
||||
from cps import db
|
||||
from cps import logger, config
|
||||
from cps.subproc_wrapper import process_open
|
||||
from flask_babel import gettext as _
|
||||
from cps.kobo_sync_status import remove_synced_book
|
||||
from cps.ub import init_db_thread
|
||||
from cps.file_helper import get_temp_dir
|
||||
|
||||
from cps.tasks.mail import TaskEmail
|
||||
from cps import gdriveutils, helper
|
||||
from cps.constants import SUPPORTED_CALIBRE_BINARIES
|
||||
from cps.string_helper import strip_whitespaces
|
||||
|
||||
log = logger.create()
|
||||
|
||||
current_milli_time = lambda: int(round(time() * 1000))
|
||||
|
||||
|
||||
class TaskConvert(CalibreTask):
|
||||
def __init__(self, file_path, book_id, task_message, settings, ereader_mail, user=None):
|
||||
super(TaskConvert, self).__init__(task_message)
|
||||
self.worker_thread = None
|
||||
self.file_path = file_path
|
||||
self.book_id = book_id
|
||||
self.title = ""
|
||||
self.settings = settings
|
||||
self.ereader_mail = ereader_mail
|
||||
self.user = user
|
||||
|
||||
self.results = dict()
|
||||
|
||||
def run(self, worker_thread):
|
||||
self.worker_thread = worker_thread
|
||||
if config.config_use_google_drive:
|
||||
worker_db = db.CalibreDB(expire_on_commit=False, init=True)
|
||||
cur_book = worker_db.get_book(self.book_id)
|
||||
self.title = cur_book.title
|
||||
data = worker_db.get_book_format(self.book_id, self.settings['old_book_format'])
|
||||
df = gdriveutils.getFileFromEbooksFolder(cur_book.path,
|
||||
data.name + "." + self.settings['old_book_format'].lower())
|
||||
df_cover = gdriveutils.getFileFromEbooksFolder(cur_book.path, "cover.jpg")
|
||||
if df:
|
||||
datafile_cover = None
|
||||
datafile = os.path.join(config.get_book_path(),
|
||||
cur_book.path,
|
||||
data.name + "." + self.settings['old_book_format'].lower())
|
||||
if df_cover:
|
||||
datafile_cover = os.path.join(config.get_book_path(),
|
||||
cur_book.path, "cover.jpg")
|
||||
if not os.path.exists(os.path.join(config.get_book_path(), cur_book.path)):
|
||||
os.makedirs(os.path.join(config.get_book_path(), cur_book.path))
|
||||
df.GetContentFile(datafile)
|
||||
if df_cover:
|
||||
df_cover.GetContentFile(datafile_cover)
|
||||
worker_db.session.close()
|
||||
else:
|
||||
# ToDo Include cover in error handling
|
||||
error_message = _("%(format)s not found on Google Drive: %(fn)s",
|
||||
format=self.settings['old_book_format'],
|
||||
fn=data.name + "." + self.settings['old_book_format'].lower())
|
||||
worker_db.session.close()
|
||||
return self._handleError(error_message)
|
||||
|
||||
filename = self._convert_ebook_format()
|
||||
if config.config_use_google_drive:
|
||||
os.remove(self.file_path + '.' + self.settings['old_book_format'].lower())
|
||||
if df_cover:
|
||||
os.remove(os.path.join(config.config_calibre_dir, cur_book.path, "cover.jpg"))
|
||||
|
||||
if filename:
|
||||
if config.config_use_google_drive:
|
||||
# Upload files to gdrive
|
||||
gdriveutils.updateGdriveCalibreFromLocal()
|
||||
self._handleSuccess()
|
||||
if self.ereader_mail:
|
||||
# if we're sending to E-Reader after converting, create a one-off task and run it immediately
|
||||
# todo: figure out how to incorporate this into the progress
|
||||
try:
|
||||
EmailText = N_(u"%(book)s send to E-Reader", book=escape(self.title))
|
||||
for email in self.ereader_mail.split(','):
|
||||
email = strip_whitespaces(email)
|
||||
worker_thread.add(self.user, TaskEmail(self.settings['subject'],
|
||||
self.results["path"],
|
||||
filename,
|
||||
self.settings,
|
||||
email,
|
||||
EmailText,
|
||||
self.settings['body'],
|
||||
id=self.book_id,
|
||||
internal=True)
|
||||
)
|
||||
except Exception as ex:
|
||||
return self._handleError(str(ex))
|
||||
|
||||
def _convert_ebook_format(self):
|
||||
error_message = None
|
||||
local_db = db.CalibreDB(expire_on_commit=False, init=True)
|
||||
file_path = self.file_path
|
||||
book_id = self.book_id
|
||||
format_old_ext = '.' + self.settings['old_book_format'].lower()
|
||||
format_new_ext = '.' + self.settings['new_book_format'].lower()
|
||||
|
||||
# check to see if destination format already exists - or if book is in database
|
||||
# if it does - mark the conversion task as complete and return a success
|
||||
# this will allow to send to E-Reader workflow to continue to work
|
||||
if os.path.isfile(file_path + format_new_ext) or\
|
||||
local_db.get_book_format(self.book_id, self.settings['new_book_format']):
|
||||
log.info("Book id %d already converted to %s", book_id, format_new_ext)
|
||||
cur_book = local_db.get_book(book_id)
|
||||
self.title = cur_book.title
|
||||
self.results['path'] = cur_book.path
|
||||
self.results['title'] = self.title
|
||||
new_format = local_db.session.query(db.Data).filter(db.Data.book == book_id)\
|
||||
.filter(db.Data.format == self.settings['new_book_format'].upper()).one_or_none()
|
||||
if not new_format:
|
||||
new_format = db.Data(name=os.path.basename(file_path),
|
||||
book_format=self.settings['new_book_format'].upper(),
|
||||
book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext))
|
||||
try:
|
||||
local_db.session.merge(new_format)
|
||||
local_db.session.commit()
|
||||
except SQLAlchemyError as e:
|
||||
local_db.session.rollback()
|
||||
log.error("Database error: %s", e)
|
||||
local_db.session.close()
|
||||
self._handleError(N_("Oops! Database Error: %(error)s.", error=e))
|
||||
return
|
||||
self._handleSuccess()
|
||||
local_db.session.close()
|
||||
return os.path.basename(file_path + format_new_ext)
|
||||
else:
|
||||
log.info("Book id %d - target format of %s does not exist. Moving forward with convert.",
|
||||
book_id,
|
||||
format_new_ext)
|
||||
|
||||
if config.config_kepubifypath and format_old_ext == '.epub' and format_new_ext == '.kepub':
|
||||
check, error_message = self._convert_kepubify(file_path,
|
||||
format_old_ext,
|
||||
format_new_ext)
|
||||
else:
|
||||
# check if calibre converter-executable is existing
|
||||
if not os.path.exists(config.config_converterpath):
|
||||
self._handleError(N_("Calibre ebook-convert %(tool)s not found", tool=config.config_converterpath))
|
||||
return
|
||||
has_cover = local_db.get_book(book_id).has_cover
|
||||
check, error_message = self._convert_calibre(file_path, format_old_ext, format_new_ext, has_cover)
|
||||
|
||||
if check == 0:
|
||||
cur_book = local_db.get_book(book_id)
|
||||
if os.path.isfile(file_path + format_new_ext):
|
||||
new_format = local_db.session.query(db.Data).filter(db.Data.book == book_id) \
|
||||
.filter(db.Data.format == self.settings['new_book_format'].upper()).one_or_none()
|
||||
if not new_format:
|
||||
new_format = db.Data(name=cur_book.data[0].name,
|
||||
book_format=self.settings['new_book_format'].upper(),
|
||||
book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext))
|
||||
try:
|
||||
local_db.session.merge(new_format)
|
||||
local_db.session.commit()
|
||||
if self.settings['new_book_format'].upper() in ['KEPUB', 'EPUB', 'EPUB3']:
|
||||
ub_session = init_db_thread()
|
||||
remove_synced_book(book_id, True, ub_session)
|
||||
ub_session.close()
|
||||
except SQLAlchemyError as e:
|
||||
local_db.session.rollback()
|
||||
log.error("Database error: %s", e)
|
||||
local_db.session.close()
|
||||
self._handleError(error_message)
|
||||
return
|
||||
self.results['path'] = cur_book.path
|
||||
self.title = cur_book.title
|
||||
self.results['title'] = self.title
|
||||
if not config.config_use_google_drive:
|
||||
self._handleSuccess()
|
||||
return os.path.basename(file_path + format_new_ext)
|
||||
else:
|
||||
error_message = N_('%(format)s format not found on disk', format=format_new_ext.upper())
|
||||
local_db.session.close()
|
||||
log.info("ebook converter failed with error while converting book")
|
||||
if not error_message:
|
||||
error_message = N_('Ebook converter failed with unknown error')
|
||||
else:
|
||||
log.error(error_message)
|
||||
self._handleError(error_message)
|
||||
return
|
||||
|
||||
def _convert_kepubify(self, file_path, format_old_ext, format_new_ext):
|
||||
if config.config_embed_metadata and config.config_binariesdir:
|
||||
tmp_dir, temp_file_name = helper.do_calibre_export(self.book_id, format_old_ext[1:])
|
||||
filename = os.path.join(tmp_dir, temp_file_name + format_old_ext)
|
||||
temp_file_path = tmp_dir
|
||||
else:
|
||||
filename = file_path + format_old_ext
|
||||
temp_file_path = os.path.dirname(file_path)
|
||||
quotes = [1, 3]
|
||||
command = [config.config_kepubifypath, filename, '-o', temp_file_path, '-i']
|
||||
try:
|
||||
p = process_open(command, quotes)
|
||||
except OSError as e:
|
||||
return 1, N_("Kepubify-converter failed: %(error)s", error=e)
|
||||
self.progress = 0.01
|
||||
while True:
|
||||
nextline = p.stdout.readlines()
|
||||
nextline = [x.strip('\n') for x in nextline if x != '\n']
|
||||
for line in nextline:
|
||||
log.debug(line)
|
||||
if p.poll() is not None:
|
||||
break
|
||||
|
||||
# process returncode
|
||||
check = p.returncode
|
||||
|
||||
# move file
|
||||
if check == 0:
|
||||
converted_file = glob.glob(glob.escape(os.path.splitext(filename)[0]) + "*.kepub.epub")
|
||||
if len(converted_file) == 1:
|
||||
copyfile(converted_file[0], (file_path + format_new_ext))
|
||||
os.unlink(converted_file[0])
|
||||
else:
|
||||
return 1, N_("Converted file not found or more than one file in folder %(folder)s",
|
||||
folder=os.path.dirname(file_path))
|
||||
return check, None
|
||||
|
||||
def _convert_calibre(self, file_path, format_old_ext, format_new_ext, has_cover):
|
||||
path_tmp_opf = None
|
||||
try:
|
||||
# path_tmp_opf = self._embed_metadata()
|
||||
if config.config_embed_metadata:
|
||||
quotes = [5]
|
||||
tmp_dir = get_temp_dir()
|
||||
calibredb_binarypath = os.path.join(config.config_binariesdir, SUPPORTED_CALIBRE_BINARIES["calibredb"])
|
||||
my_env = os.environ.copy()
|
||||
if config.config_calibre_split:
|
||||
my_env['CALIBRE_OVERRIDE_DATABASE_PATH'] = os.path.join(config.config_calibre_dir, "metadata.db")
|
||||
library_path = config.config_calibre_split_dir
|
||||
else:
|
||||
library_path = config.config_calibre_dir
|
||||
|
||||
opf_command = [calibredb_binarypath, 'show_metadata', '--as-opf', str(self.book_id),
|
||||
'--with-library', library_path]
|
||||
p = process_open(opf_command, quotes, my_env, newlines=False)
|
||||
lines = list()
|
||||
while p.poll() is None:
|
||||
lines.append(p.stdout.readline())
|
||||
check = p.returncode
|
||||
calibre_traceback = p.stderr.readlines()
|
||||
if check == 0:
|
||||
path_tmp_opf = os.path.join(tmp_dir, "metadata_" + str(uuid4()) + ".opf")
|
||||
with open(path_tmp_opf, 'wb') as fd:
|
||||
fd.write(b''.join(lines))
|
||||
else:
|
||||
error_message = ""
|
||||
for ele in calibre_traceback:
|
||||
if not ele.startswith('Traceback') and not ele.startswith(' File'):
|
||||
error_message = N_("Calibre failed with error: %(error)s", error=ele)
|
||||
return check, error_message
|
||||
quotes = [1, 2]
|
||||
quotes_index = 3
|
||||
command = [config.config_converterpath, (file_path + format_old_ext),
|
||||
(file_path + format_new_ext)]
|
||||
if config.config_embed_metadata:
|
||||
quotes.append(4)
|
||||
quotes_index = 5
|
||||
command.extend(['--from-opf', path_tmp_opf])
|
||||
if has_cover:
|
||||
quotes.append(6)
|
||||
command.extend(['--cover', os.path.join(os.path.dirname(file_path), 'cover.jpg')])
|
||||
quotes_index = 7
|
||||
if config.config_calibre:
|
||||
parameters = re.findall(r"(--[\w-]+)(?:(\s(?:(\".+\")|(?:.+?)))(?:\s|$))?",
|
||||
config.config_calibre, re.IGNORECASE | re.UNICODE)
|
||||
if parameters:
|
||||
for param in parameters:
|
||||
command.append(strip_whitespaces(param[0]))
|
||||
quotes_index += 1
|
||||
if param[1] != "":
|
||||
parsed = strip_whitespaces(param[1]).strip("\"")
|
||||
command.append(parsed)
|
||||
quotes.append(quotes_index)
|
||||
quotes_index += 1
|
||||
p = process_open(command, quotes, newlines=False)
|
||||
except OSError as e:
|
||||
return 1, N_("Ebook-converter failed: %(error)s", error=e)
|
||||
|
||||
while p.poll() is None:
|
||||
nextline = p.stdout.readline()
|
||||
if isinstance(nextline, bytes):
|
||||
nextline = nextline.decode('utf-8', errors="ignore").strip('\r\n')
|
||||
if nextline:
|
||||
log.debug(nextline)
|
||||
# parse progress string from calibre-converter
|
||||
progress = re.search(r"(\d+)%\s.*", nextline)
|
||||
if progress:
|
||||
self.progress = int(progress.group(1)) / 100
|
||||
if config.config_use_google_drive:
|
||||
self.progress *= 0.9
|
||||
|
||||
# process returncode
|
||||
check = p.returncode
|
||||
calibre_traceback = p.stderr.readlines()
|
||||
error_message = ""
|
||||
for ele in calibre_traceback:
|
||||
ele = ele.decode('utf-8', errors="ignore").strip('\n')
|
||||
log.debug(ele)
|
||||
if not ele.startswith('Traceback') and not ele.startswith(' File'):
|
||||
error_message = N_("Calibre failed with error: %(error)s", error=ele)
|
||||
return check, error_message
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return N_("Convert")
|
||||
|
||||
def __str__(self):
|
||||
if self.ereader_mail:
|
||||
return "Convert Book {} and mail it to {}".format(self.book_id, self.ereader_mail)
|
||||
else:
|
||||
return "Convert Book {}".format(self.book_id)
|
||||
|
||||
@property
|
||||
def is_cancellable(self):
|
||||
return False
|
||||
# -*- coding: utf-8 -*-
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import re
|
||||
import glob
|
||||
from shutil import copyfile, copyfileobj
|
||||
from markupsafe import escape
|
||||
from time import time
|
||||
from uuid import uuid4
|
||||
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from flask_babel import lazy_gettext as N_
|
||||
|
||||
from cps.services.worker import CalibreTask
|
||||
from cps import db
|
||||
from cps import logger, config
|
||||
from cps.subproc_wrapper import process_open
|
||||
from flask_babel import gettext as _
|
||||
from cps.kobo_sync_status import remove_synced_book
|
||||
from cps.ub import init_db_thread
|
||||
from cps.file_helper import get_temp_dir
|
||||
|
||||
from cps.tasks.mail import TaskEmail
|
||||
from cps import gdriveutils, helper
|
||||
from cps.constants import SUPPORTED_CALIBRE_BINARIES
|
||||
from cps.string_helper import strip_whitespaces
|
||||
|
||||
log = logger.create()
|
||||
|
||||
current_milli_time = lambda: int(round(time() * 1000))
|
||||
|
||||
|
||||
class TaskConvert(CalibreTask):
|
||||
def __init__(self, file_path, book_id, task_message, settings, ereader_mail, user=None):
|
||||
super(TaskConvert, self).__init__(task_message)
|
||||
self.worker_thread = None
|
||||
self.file_path = file_path
|
||||
self.book_id = book_id
|
||||
self.title = ""
|
||||
self.settings = settings
|
||||
self.ereader_mail = ereader_mail
|
||||
self.user = user
|
||||
|
||||
self.results = dict()
|
||||
|
||||
def run(self, worker_thread):
|
||||
self.worker_thread = worker_thread
|
||||
if config.config_use_google_drive:
|
||||
worker_db = db.CalibreDB(expire_on_commit=False, init=True)
|
||||
cur_book = worker_db.get_book(self.book_id)
|
||||
self.title = cur_book.title
|
||||
data = worker_db.get_book_format(self.book_id, self.settings['old_book_format'])
|
||||
df = gdriveutils.getFileFromEbooksFolder(cur_book.path,
|
||||
data.name + "." + self.settings['old_book_format'].lower())
|
||||
df_cover = gdriveutils.getFileFromEbooksFolder(cur_book.path, "cover.jpg")
|
||||
if df:
|
||||
datafile_cover = None
|
||||
datafile = os.path.join(config.get_book_path(),
|
||||
cur_book.path,
|
||||
data.name + "." + self.settings['old_book_format'].lower())
|
||||
if df_cover:
|
||||
datafile_cover = os.path.join(config.get_book_path(),
|
||||
cur_book.path, "cover.jpg")
|
||||
if not os.path.exists(os.path.join(config.get_book_path(), cur_book.path)):
|
||||
os.makedirs(os.path.join(config.get_book_path(), cur_book.path))
|
||||
df.GetContentFile(datafile)
|
||||
if df_cover:
|
||||
df_cover.GetContentFile(datafile_cover)
|
||||
worker_db.session.close()
|
||||
else:
|
||||
# ToDo Include cover in error handling
|
||||
error_message = _("%(format)s not found on Google Drive: %(fn)s",
|
||||
format=self.settings['old_book_format'],
|
||||
fn=data.name + "." + self.settings['old_book_format'].lower())
|
||||
worker_db.session.close()
|
||||
return self._handleError(error_message)
|
||||
|
||||
filename = self._convert_ebook_format()
|
||||
if config.config_use_google_drive:
|
||||
os.remove(self.file_path + '.' + self.settings['old_book_format'].lower())
|
||||
if df_cover:
|
||||
os.remove(os.path.join(config.config_calibre_dir, cur_book.path, "cover.jpg"))
|
||||
|
||||
if filename:
|
||||
if config.config_use_google_drive:
|
||||
# Upload files to gdrive
|
||||
gdriveutils.updateGdriveCalibreFromLocal()
|
||||
self._handleSuccess()
|
||||
if self.ereader_mail:
|
||||
# if we're sending to E-Reader after converting, create a one-off task and run it immediately
|
||||
# todo: figure out how to incorporate this into the progress
|
||||
try:
|
||||
EmailText = N_(u"%(book)s send to E-Reader", book=escape(self.title))
|
||||
for email in self.ereader_mail.split(','):
|
||||
email = strip_whitespaces(email)
|
||||
worker_thread.add(self.user, TaskEmail(self.settings['subject'],
|
||||
self.results["path"],
|
||||
filename,
|
||||
self.settings,
|
||||
email,
|
||||
EmailText,
|
||||
self.settings['body'],
|
||||
id=self.book_id,
|
||||
internal=True)
|
||||
)
|
||||
except Exception as ex:
|
||||
return self._handleError(str(ex))
|
||||
|
||||
def _convert_ebook_format(self):
|
||||
error_message = None
|
||||
local_db = db.CalibreDB(expire_on_commit=False, init=True)
|
||||
file_path = self.file_path
|
||||
book_id = self.book_id
|
||||
format_old_ext = '.' + self.settings['old_book_format'].lower()
|
||||
format_new_ext = '.' + self.settings['new_book_format'].lower()
|
||||
|
||||
# check to see if destination format already exists - or if book is in database
|
||||
# if it does - mark the conversion task as complete and return a success
|
||||
# this will allow to send to E-Reader workflow to continue to work
|
||||
if os.path.isfile(file_path + format_new_ext) or\
|
||||
local_db.get_book_format(self.book_id, self.settings['new_book_format']):
|
||||
log.info("Book id %d already converted to %s", book_id, format_new_ext)
|
||||
cur_book = local_db.get_book(book_id)
|
||||
self.title = cur_book.title
|
||||
self.results['path'] = cur_book.path
|
||||
self.results['title'] = self.title
|
||||
new_format = local_db.session.query(db.Data).filter(db.Data.book == book_id)\
|
||||
.filter(db.Data.format == self.settings['new_book_format'].upper()).one_or_none()
|
||||
if not new_format:
|
||||
new_format = db.Data(name=os.path.basename(file_path),
|
||||
book_format=self.settings['new_book_format'].upper(),
|
||||
book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext))
|
||||
try:
|
||||
local_db.session.merge(new_format)
|
||||
local_db.session.commit()
|
||||
except SQLAlchemyError as e:
|
||||
local_db.session.rollback()
|
||||
log.error("Database error: %s", e)
|
||||
local_db.session.close()
|
||||
self._handleError(N_("Oops! Database Error: %(error)s.", error=e))
|
||||
return
|
||||
self._handleSuccess()
|
||||
local_db.session.close()
|
||||
return os.path.basename(file_path + format_new_ext)
|
||||
else:
|
||||
log.info("Book id %d - target format of %s does not exist. Moving forward with convert.",
|
||||
book_id,
|
||||
format_new_ext)
|
||||
|
||||
if config.config_kepubifypath and format_old_ext == '.epub' and format_new_ext == '.kepub':
|
||||
check, error_message = self._convert_kepubify(file_path,
|
||||
format_old_ext,
|
||||
format_new_ext)
|
||||
else:
|
||||
# check if calibre converter-executable is existing
|
||||
if not os.path.exists(config.config_converterpath):
|
||||
self._handleError(N_("Calibre ebook-convert %(tool)s not found", tool=config.config_converterpath))
|
||||
return
|
||||
has_cover = local_db.get_book(book_id).has_cover
|
||||
check, error_message = self._convert_calibre(file_path, format_old_ext, format_new_ext, has_cover)
|
||||
|
||||
if check == 0:
|
||||
cur_book = local_db.get_book(book_id)
|
||||
if os.path.isfile(file_path + format_new_ext):
|
||||
new_format = local_db.session.query(db.Data).filter(db.Data.book == book_id) \
|
||||
.filter(db.Data.format == self.settings['new_book_format'].upper()).one_or_none()
|
||||
if not new_format:
|
||||
new_format = db.Data(name=cur_book.data[0].name,
|
||||
book_format=self.settings['new_book_format'].upper(),
|
||||
book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext))
|
||||
try:
|
||||
local_db.session.merge(new_format)
|
||||
local_db.session.commit()
|
||||
if self.settings['new_book_format'].upper() in ['KEPUB', 'EPUB', 'EPUB3']:
|
||||
ub_session = init_db_thread()
|
||||
remove_synced_book(book_id, True, ub_session)
|
||||
ub_session.close()
|
||||
except SQLAlchemyError as e:
|
||||
local_db.session.rollback()
|
||||
log.error("Database error: %s", e)
|
||||
local_db.session.close()
|
||||
self._handleError(error_message)
|
||||
return
|
||||
self.results['path'] = cur_book.path
|
||||
self.title = cur_book.title
|
||||
self.results['title'] = self.title
|
||||
if not config.config_use_google_drive:
|
||||
self._handleSuccess()
|
||||
return os.path.basename(file_path + format_new_ext)
|
||||
else:
|
||||
error_message = N_('%(format)s format not found on disk', format=format_new_ext.upper())
|
||||
local_db.session.close()
|
||||
log.info("ebook converter failed with error while converting book")
|
||||
if not error_message:
|
||||
error_message = N_('Ebook converter failed with unknown error')
|
||||
else:
|
||||
log.error(error_message)
|
||||
self._handleError(error_message)
|
||||
return
|
||||
|
||||
def _convert_kepubify(self, file_path, format_old_ext, format_new_ext):
|
||||
if config.config_embed_metadata and config.config_binariesdir:
|
||||
tmp_dir, temp_file_name = helper.do_calibre_export(self.book_id, format_old_ext[1:])
|
||||
filename = os.path.join(tmp_dir, temp_file_name + format_old_ext)
|
||||
temp_file_path = tmp_dir
|
||||
else:
|
||||
filename = file_path + format_old_ext
|
||||
temp_file_path = os.path.dirname(file_path)
|
||||
quotes = [1, 3]
|
||||
command = [config.config_kepubifypath, filename, '-o', temp_file_path, '-i']
|
||||
try:
|
||||
p = process_open(command, quotes)
|
||||
except OSError as e:
|
||||
return 1, N_("Kepubify-converter failed: %(error)s", error=e)
|
||||
self.progress = 0.01
|
||||
while True:
|
||||
nextline = p.stdout.readlines()
|
||||
nextline = [x.strip('\n') for x in nextline if x != '\n']
|
||||
for line in nextline:
|
||||
log.debug(line)
|
||||
if p.poll() is not None:
|
||||
break
|
||||
|
||||
# process returncode
|
||||
check = p.returncode
|
||||
|
||||
# move file
|
||||
if check == 0:
|
||||
converted_file = glob.glob(glob.escape(os.path.splitext(filename)[0]) + "*.kepub.epub")
|
||||
if len(converted_file) == 1:
|
||||
copyfile(converted_file[0], (file_path + format_new_ext))
|
||||
os.unlink(converted_file[0])
|
||||
else:
|
||||
return 1, N_("Converted file not found or more than one file in folder %(folder)s",
|
||||
folder=os.path.dirname(file_path))
|
||||
return check, None
|
||||
|
||||
def _convert_calibre(self, file_path, format_old_ext, format_new_ext, has_cover):
|
||||
path_tmp_opf = None
|
||||
try:
|
||||
# path_tmp_opf = self._embed_metadata()
|
||||
if config.config_embed_metadata:
|
||||
quotes = [5]
|
||||
tmp_dir = get_temp_dir()
|
||||
calibredb_binarypath = os.path.join(config.config_binariesdir, SUPPORTED_CALIBRE_BINARIES["calibredb"])
|
||||
my_env = os.environ.copy()
|
||||
if config.config_calibre_split:
|
||||
my_env['CALIBRE_OVERRIDE_DATABASE_PATH'] = os.path.join(config.config_calibre_dir, "metadata.db")
|
||||
library_path = config.config_calibre_split_dir
|
||||
else:
|
||||
library_path = config.config_calibre_dir
|
||||
|
||||
opf_command = [calibredb_binarypath, 'show_metadata', '--as-opf', str(self.book_id),
|
||||
'--with-library', library_path]
|
||||
p = process_open(opf_command, quotes, my_env, newlines=False)
|
||||
lines = list()
|
||||
while p.poll() is None:
|
||||
lines.append(p.stdout.readline())
|
||||
check = p.returncode
|
||||
calibre_traceback = p.stderr.readlines()
|
||||
if check == 0:
|
||||
path_tmp_opf = os.path.join(tmp_dir, "metadata_" + str(uuid4()) + ".opf")
|
||||
with open(path_tmp_opf, 'wb') as fd:
|
||||
fd.write(b''.join(lines))
|
||||
else:
|
||||
error_message = ""
|
||||
for ele in calibre_traceback:
|
||||
if not ele.startswith('Traceback') and not ele.startswith(' File'):
|
||||
error_message = N_("Calibre failed with error: %(error)s", error=ele)
|
||||
return check, error_message
|
||||
quotes = [1, 2]
|
||||
quotes_index = 3
|
||||
command = [config.config_converterpath, (file_path + format_old_ext),
|
||||
(file_path + format_new_ext)]
|
||||
if config.config_embed_metadata:
|
||||
quotes.append(4)
|
||||
quotes_index = 5
|
||||
command.extend(['--from-opf', path_tmp_opf])
|
||||
if has_cover:
|
||||
quotes.append(6)
|
||||
command.extend(['--cover', os.path.join(os.path.dirname(file_path), 'cover.jpg')])
|
||||
quotes_index = 7
|
||||
if config.config_calibre:
|
||||
parameters = re.findall(r"(--[\w-]+)(?:(\s(?:(\".+\")|(?:.+?)))(?:\s|$))?",
|
||||
config.config_calibre, re.IGNORECASE | re.UNICODE)
|
||||
if parameters:
|
||||
for param in parameters:
|
||||
command.append(strip_whitespaces(param[0]))
|
||||
quotes_index += 1
|
||||
if param[1] != "":
|
||||
parsed = strip_whitespaces(param[1]).strip("\"")
|
||||
command.append(parsed)
|
||||
quotes.append(quotes_index)
|
||||
quotes_index += 1
|
||||
p = process_open(command, quotes, newlines=False)
|
||||
except OSError as e:
|
||||
return 1, N_("Ebook-converter failed: %(error)s", error=e)
|
||||
|
||||
while p.poll() is None:
|
||||
nextline = p.stdout.readline()
|
||||
if isinstance(nextline, bytes):
|
||||
nextline = nextline.decode('utf-8', errors="ignore").strip('\r\n')
|
||||
if nextline:
|
||||
log.debug(nextline)
|
||||
# parse progress string from calibre-converter
|
||||
progress = re.search(r"(\d+)%\s.*", nextline)
|
||||
if progress:
|
||||
self.progress = int(progress.group(1)) / 100
|
||||
if config.config_use_google_drive:
|
||||
self.progress *= 0.9
|
||||
|
||||
# process returncode
|
||||
check = p.returncode
|
||||
calibre_traceback = p.stderr.readlines()
|
||||
error_message = ""
|
||||
for ele in calibre_traceback:
|
||||
ele = ele.decode('utf-8', errors="ignore").strip('\n')
|
||||
log.debug(ele)
|
||||
if not ele.startswith('Traceback') and not ele.startswith(' File'):
|
||||
error_message = N_("Calibre failed with error: %(error)s", error=ele)
|
||||
return check, error_message
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return N_("Convert")
|
||||
|
||||
def __str__(self):
|
||||
if self.ereader_mail:
|
||||
return "Convert Book {} and mail it to {}".format(self.book_id, self.ereader_mail)
|
||||
else:
|
||||
return "Convert Book {}".format(self.book_id)
|
||||
|
||||
@property
|
||||
def is_cancellable(self):
|
||||
return False
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 mmonkey
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from flask_babel import lazy_gettext as N_
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
import smtplib
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 monkey
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
from lxml import etree
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 monkey
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import os
|
||||
from shutil import copyfile, copyfileobj
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2020 pwr
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
+5
-15
@@ -1,18 +1,8 @@
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from markupsafe import escape
|
||||
|
||||
|
||||
+5
-16
@@ -1,20 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2022 OzzieIsaacs
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
from tornado.wsgi import WSGIContainer
|
||||
import tornado
|
||||
|
||||
@@ -1,21 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
# Copyright (C) 2012-2019 mutschler, jkrehm, cervinko, janeczku, OzzieIsaacs, csitko
|
||||
# ok11, issmirnov, idalin
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calibre-Web Automated – fork of Calibre-Web
|
||||
# Copyright (C) 2018-2025 Calibre-Web contributors
|
||||
# Copyright (C) 2024-2025 Calibre-Web Automated contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# See CONTRIBUTORS for full list of authors.
|
||||
|
||||
import atexit
|
||||
import os
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user