最近家里搞了台群晖,准备部署个Calibreweb看看电子书,看了好多部署的教程老是不太成功,要么报错要么有问题的,很难搞。下面将部署流程分享一下,给大家参考,少走点弯路
镜像的选择
我们使用johngong/calibre-web,我们用这个镜像来构建应用,这个镜像已经添加了一些原始镜像没有的功能,可以更快的上手。我们直接拉取johngong/calibre-web镜像即可
配置
映射卷
我们需要映射镜像的卷


| 参数 | 说明 |
|---|---|
| 本地文件夹1:/library | calibre-web与calibre-server书库默认位置 |
| 本地文件夹2:/config | calibre-web与calibre-server配置位置文件 |
| 本地文件夹3:/autoaddbooks | calibre自动添加图书文件夹位置 |
| 本地文件夹4:/usr/local/calibre-web/app/metadata_provider | 元数据抓取脚本位置 |
本地文件夹4:/usr/local/calibre-web/app/metadata_provider
这条配置下的本地文件夹4,需要放一个获取元数据的脚本,脚本内容如下,命名为NewDouban.py
import random
import re
import time
import dataclasses
import urllib
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
from urllib.parse import urlparse, unquote
from lxml import etree
from functools import lru_cache
from cps.services.Metadata import Metadata, MetaSourceInfo, MetaRecord
from cps.search_metadata import meta
from flask import request, Response
from cps import helper
# 是否自动代理封面地址
DOUBAN_PROXY_COVER = True
# 如果自动计算的服务器地址不正确,可以填写自己的calibre-web地址,参考:http://nas_ip:8083/
DOUBAN_PROXY_COVER_HOST_URL = ''
DOUBAN_PROXY_COVER_PATH = 'metadata/douban_cover?cover='
DOUBAN_SEARCH_URL = "https://www.douban.com/search"
DOUBAN_BASE = "https://book.douban.com/"
DOUBAN_COVER_DOMAIN = 'doubanio.com'
DOUBAN_BOOK_CAT = "1001"
DOUBAN_BOOK_CACHE_SIZE = 500 # 最大缓存数量
DOUBAN_CONCURRENCY_SIZE = 5 # 并发查询数
DOUBAN_BOOK_URL_PATTERN = re.compile(".*/subject/(\\d+)/?")
DEFAULT_HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3573.0 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'Referer': DOUBAN_BASE
}
PROVIDER_NAME = "New Douban Books"
PROVIDER_ID = "new_douban"
class NewDouban(Metadata):
__name__ = PROVIDER_NAME
__id__ = PROVIDER_ID
def __init__(self):
self.searcher = DoubanBookSearcher()
self.hack_helper_cover()
super().__init__()
def search(self, query: str, generic_cover: str = "", locale: str = "en"):
if self.active:
return self.searcher.search_books(query)
@staticmethod
def hack_helper_cover():
"""
覆盖helper.save_cover_from_url方法实现豆瓣的封面下载
:return:
"""
save_cover = helper.save_cover_from_url
def new_save_cover(url, book_path):
if DOUBAN_COVER_DOMAIN in url:
cover_url = url
if DOUBAN_PROXY_COVER:
component = urllib.parse.urlparse(url)
query = urllib.parse.parse_qs(component.query)
cover_url = urllib.parse.unquote(query.get('cover')[0])
res = requests.get(cover_url, headers=DEFAULT_HEADERS)
return helper.save_cover(res, book_path)
else:
return save_cover(url, book_path)
helper.save_cover_from_url = new_save_cover
@dataclasses.dataclass
class

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



