fix docker build

This commit is contained in:
jxxghp
2024-09-25 13:45:13 +08:00
parent d7f9ed5198
commit 91efe2e94c
5 changed files with 107 additions and 52 deletions
+2 -1
View File
@@ -52,7 +52,8 @@ COPY requirements.txt requirements.txt
RUN apt-get update -y \ RUN apt-get update -y \
&& apt-get install -y build-essential \ && apt-get install -y build-essential \
&& pip install --upgrade pip \ && pip install --upgrade pip \
&& pip install Cython \ && pip install Cython pip-tools \
&& pip-compile requirements.in \
&& pip install -r requirements.txt \ && pip install -r requirements.txt \
&& playwright install-deps chromium \ && playwright install-deps chromium \
&& apt-get remove -y build-essential \ && apt-get remove -y build-essential \
+47 -28
View File
@@ -569,7 +569,8 @@ class AliPan(StorageBase):
extension=result.get("file_extension"), extension=result.get("file_extension"),
modify_time=StringUtils.str_to_timestamp(result.get("updated_at")), modify_time=StringUtils.str_to_timestamp(result.get("updated_at")),
thumbnail=result.get("thumbnail"), thumbnail=result.get("thumbnail"),
path=f"{fileitem.path}{result.get('name')}" path=f"{fileitem.path}{result.get('name')}",
url=result.get("download_url") or result.get("url")
) )
else: else:
self.__handle_error(res, "获取文件详情") self.__handle_error(res, "获取文件详情")
@@ -626,34 +627,49 @@ class AliPan(StorageBase):
return list(play_dict.values())[-1] return list(play_dict.values())[-1]
return None return None
res = RequestUtils(headers=headers, timeout=10).post_res(self.download_url, json={ # 先获取文件详情
"drive_id": fileitem.drive_id, fileinfo = self.detail(fileitem)
"file_id": fileitem.fileid if not fileinfo:
}) logger.warn(f"{fileitem.path} 文件不存在")
if res: return None
result = res.json()
download_url = result.get("url") # 文件下载链接
if not download_url: download_url = None
download_url = __get_play_url() if fileinfo.url:
if not download_url: # 使用文件详情中的链接
if result.get("internal_url"): download_url = fileinfo.url
download_url = result.get("internal_url") else:
if not download_url: # 查询文件下载链接
logger.warn(f"{fileitem.path} 未获取到下载链接") res = RequestUtils(headers=headers, timeout=10).post_res(self.download_url, json={
return None "drive_id": fileitem.drive_id,
res = RequestUtils(headers={ "file_id": fileitem.fileid,
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "file_name": fileitem.name,
"Referer": "https://www.alipan.com/", })
"Sec-Fetch-Dest": "iframe",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "cross-site",
"User-Agent": settings.USER_AGENT
}).get_res(download_url)
if res: if res:
path = settings.TEMP_PATH / fileitem.name result = res.json()
with path.open("wb") as f: download_url = result.get("url") or result.get("internal_url")
f.write(res.content)
return path if not download_url:
# 查询播放链接
download_url = __get_play_url()
if not download_url:
logger.warn(f"{fileitem.path} 未获取到下载链接")
return None
# 下载文件到本地
res = RequestUtils(headers={
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Referer": "https://www.alipan.com/",
"Sec-Fetch-Dest": "iframe",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "cross-site",
"User-Agent": settings.USER_AGENT
}).get_res(download_url)
if res:
path = settings.TEMP_PATH / fileitem.name
with path.open("wb") as f:
f.write(res.content)
return path
else: else:
self.__handle_error(res, "获取下载链接") self.__handle_error(res, "获取下载链接")
return None return None
@@ -663,6 +679,8 @@ class AliPan(StorageBase):
上传文件,并标记完成 上传文件,并标记完成
""" """
__UPLOAD_CHUNK_SIZE: int = 10485760 # 10 MB
def __sha1(_path: Path): def __sha1(_path: Path):
""" """
计算文件sha1,用于快传 计算文件sha1,用于快传
@@ -680,6 +698,7 @@ class AliPan(StorageBase):
if not params: if not params:
return None return None
headers = self.__get_headers(params) headers = self.__get_headers(params)
# 计算sha1 # 计算sha1
sha1 = __sha1(path) sha1 = __sha1(path)
res = RequestUtils(headers=headers, timeout=10).post_res(self.create_folder_file_url, json={ res = RequestUtils(headers=headers, timeout=10).post_res(self.create_folder_file_url, json={
+2
View File
@@ -32,6 +32,8 @@ class FileItem(BaseModel):
pickcode: Optional[str] = None pickcode: Optional[str] = None
# drive_id # drive_id
drive_id: Optional[str] = None drive_id: Optional[str] = None
# url
url: Optional[str] = None
class StorageUsage(BaseModel): class StorageUsage(BaseModel):
+1
View File
@@ -61,3 +61,4 @@ Pinyin2Hanzi~=0.1.1
pywebpush~=2.0.0 pywebpush~=2.0.0
py115j~=0.0.6 py115j~=0.0.6
oss2~=2.18.6 oss2~=2.18.6
aligo~=6.2.4
+54 -22
View File
@@ -14,6 +14,8 @@ aiosignal==1.3.1
# via aiohttp # via aiohttp
alembic==1.11.3 alembic==1.11.3
# via -r requirements.in # via -r requirements.in
aligo==6.2.4
# via -r requirements.in
aliyun-python-sdk-core==2.15.1 aliyun-python-sdk-core==2.15.1
# via # via
# aliyun-python-sdk-kms # aliyun-python-sdk-kms
@@ -23,7 +25,9 @@ aliyun-python-sdk-kms==2.16.4
anitopy==2.1.1 anitopy==2.1.1
# via -r requirements.in # via -r requirements.in
anyio==4.4.0 anyio==4.4.0
# via starlette # via
# httpx
# starlette
apscheduler==3.10.4 apscheduler==3.10.4
# via -r requirements.in # via -r requirements.in
attrs==24.2.0 attrs==24.2.0
@@ -41,7 +45,10 @@ cacheout==0.14.1
cachetools==5.3.3 cachetools==5.3.3
# via -r requirements.in # via -r requirements.in
certifi==2024.7.4 certifi==2024.7.4
# via requests # via
# httpcore
# httpx
# requests
cf-clearance==0.31.0 cf-clearance==0.31.0
# via -r requirements.in # via -r requirements.in
cffi==1.17.0 cffi==1.17.0
@@ -56,10 +63,8 @@ click==8.1.7
# uvicorn # uvicorn
cn2an==0.5.22 cn2an==0.5.22
# via -r requirements.in # via -r requirements.in
colorama==0.4.6 coloredlogs==15.0.1
# via # via aligo
# click
# tqdm
crcmod==1.7 crcmod==1.7
# via oss2 # via oss2
cryptography==43.0.0 cryptography==43.0.0
@@ -73,6 +78,8 @@ cssselect==1.2.0
# via pyquery # via pyquery
cython==3.0.11 cython==3.0.11
# via -r requirements.in # via -r requirements.in
datclass==0.2.27
# via aligo
dateparser==1.1.8 dateparser==1.1.8
# via -r requirements.in # via -r requirements.in
docker==6.1.3 docker==6.1.3
@@ -88,16 +95,23 @@ frozenlist==1.4.1
func-timeout==4.3.5 func-timeout==4.3.5
# via -r requirements.in # via -r requirements.in
greenlet==2.0.2 greenlet==2.0.2
# via # via playwright
# playwright
# sqlalchemy
h11==0.14.0 h11==0.14.0
# via uvicorn # via
# httpcore
# uvicorn
http-ece==1.2.1 http-ece==1.2.1
# via pywebpush # via pywebpush
httpcore==1.0.5
# via httpx
httpx==0.27.2
# via py115j
humanfriendly==10.0
# via coloredlogs
idna==3.7 idna==3.7
# via # via
# anyio # anyio
# httpx
# requests # requests
# yarl # yarl
jinja2==3.1.4 jinja2==3.1.4
@@ -109,7 +123,7 @@ lxml==4.9.4
# -r requirements.in # -r requirements.in
# pyquery # pyquery
lz4==4.3.3 lz4==4.3.3
# via py115 # via py115j
mako==1.3.5 mako==1.3.5
# via alembic # via alembic
markupsafe==2.1.5 markupsafe==2.1.5
@@ -134,6 +148,8 @@ pillow==10.4.0
# via # via
# -r requirements.in # -r requirements.in
# pystray # pystray
# qrcode
# qrcode-terminal
pinyin2hanzi==0.1.1 pinyin2hanzi==0.1.1
# via -r requirements.in # via -r requirements.in
playwright==1.37.0 playwright==1.37.0
@@ -156,7 +172,7 @@ pycryptodome==3.20.0
# via # via
# -r requirements.in # -r requirements.in
# oss2 # oss2
# py115 # py115j
pydantic==1.10.17 pydantic==1.10.17
# via # via
# -r requirements.in # -r requirements.in
@@ -165,10 +181,20 @@ pyee==9.0.4
# via playwright # via playwright
pyjwt==2.7.0 pyjwt==2.7.0
# via -r requirements.in # via -r requirements.in
pyobjc-core==10.3.1
# via
# pyobjc-framework-cocoa
# pyobjc-framework-quartz
pyobjc-framework-cocoa==10.3.1
# via pyobjc-framework-quartz
pyobjc-framework-quartz==10.3.1
# via pystray
pyotp==2.9.0 pyotp==2.9.0
# via -r requirements.in # via -r requirements.in
pyparsing==3.0.9 pyparsing==3.0.9
# via -r requirements.in # via -r requirements.in
pypng==0.20220715.0
# via qrcode
pyquery==2.0.0 pyquery==2.0.0
# via -r requirements.in # via -r requirements.in
pysocks==1.7.1 pysocks==1.7.1
@@ -192,17 +218,19 @@ pytz==2023.4
# -r requirements.in # -r requirements.in
# apscheduler # apscheduler
# dateparser # dateparser
# py115 # py115j
pyvirtualdisplay==3.0 pyvirtualdisplay==3.0
# via -r requirements.in # via -r requirements.in
pywebpush==2.0.0 pywebpush==2.0.0
# via -r requirements.in # via -r requirements.in
pywin32==306 ; platform_system == "Windows"
# via
# -r requirements.in
# docker
qbittorrent-api==2023.5.48 qbittorrent-api==2023.5.48
# via -r requirements.in # via -r requirements.in
qrcode[pil]==7.4.2
# via
# aligo
# qrcode-terminal
qrcode-terminal==0.8
# via aligo
regex==2023.6.3 regex==2023.6.3
# via # via
# -r requirements.in # -r requirements.in
@@ -210,11 +238,12 @@ regex==2023.6.3
requests[socks]==2.32.3 requests[socks]==2.32.3
# via # via
# -r requirements.in # -r requirements.in
# aligo
# docker # docker
# openai # openai
# oss2 # oss2
# plexapi # plexapi
# py115 # py115j
# pytelegrambotapi # pytelegrambotapi
# pywebpush # pywebpush
# qbittorrent-api # qbittorrent-api
@@ -241,7 +270,9 @@ slack-sdk==3.21.3
# -r requirements.in # -r requirements.in
# slack-bolt # slack-bolt
sniffio==1.3.1 sniffio==1.3.1
# via anyio # via
# anyio
# httpx
soupsieve==2.6 soupsieve==2.6
# via beautifulsoup4 # via beautifulsoup4
sqlalchemy==2.0.32 sqlalchemy==2.0.32
@@ -257,7 +288,9 @@ tailer==0.4.1
torrentool==1.2.0 torrentool==1.2.0
# via -r requirements.in # via -r requirements.in
tqdm==4.66.5 tqdm==4.66.5
# via openai # via
# aligo
# openai
transmission-rpc==4.3.1 transmission-rpc==4.3.1
# via -r requirements.in # via -r requirements.in
typing-extensions==4.12.2 typing-extensions==4.12.2
@@ -265,10 +298,9 @@ typing-extensions==4.12.2
# alembic # alembic
# pydantic # pydantic
# pyee # pyee
# qrcode
# sqlalchemy # sqlalchemy
# transmission-rpc # transmission-rpc
tzdata==2024.1
# via tzlocal
tzlocal==5.2 tzlocal==5.2
# via # via
# apscheduler # apscheduler