Update
This commit is contained in:
48
export.py
Normal file
48
export.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from novelCiwei import NovelCiwei
|
||||
from db import CwmDb
|
||||
from config import Config
|
||||
from key import import_keys
|
||||
from booksnew import BooksNew
|
||||
from crypto import decrypt
|
||||
from os.path import dirname
|
||||
from os import makedirs
|
||||
|
||||
|
||||
key_imported = False
|
||||
|
||||
|
||||
def get_key(db: CwmDb, cfg: Config, chapter_id: int):
|
||||
keys = db.get_key(chapter_id)
|
||||
if len(keys) == 0:
|
||||
if key_imported:
|
||||
raise ValueError('The key is not found.')
|
||||
else:
|
||||
import_keys(cfg.key, db)
|
||||
keys = db.get_key(chapter_id)
|
||||
if len(keys) == 0:
|
||||
raise ValueError('The key is not found.')
|
||||
return keys
|
||||
|
||||
|
||||
def try_decrypt(db: CwmDb, cfg: Config, content, chapter_id: int):
|
||||
keys = get_key(db, cfg, chapter_id)
|
||||
for key in keys:
|
||||
try:
|
||||
return decrypt(content, key).decode()
|
||||
except Exception:
|
||||
pass
|
||||
raise ValueError('Failed to decrypt the content.')
|
||||
|
||||
|
||||
def export_chapter(ncw: NovelCiwei, db: CwmDb, cfg: Config, bn: BooksNew,
|
||||
chapter_id: int):
|
||||
chapter = ncw.get_chapter(chapter_id)
|
||||
book_id = int(chapter['book_id'])
|
||||
raw_content = bn.get_chapter(book_id, chapter_id)
|
||||
content = try_decrypt(db, cfg, raw_content, chapter_id)
|
||||
filename = cfg.get_export_chapter(chapter)
|
||||
d = dirname(filename)
|
||||
makedirs(d, exist_ok=True)
|
||||
with open(filename, 'w', encoding='UTF-8') as f:
|
||||
f.write(chapter['chapter_title'] + '\n')
|
||||
f.write(content)
|
||||
Reference in New Issue
Block a user