mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
fix docker build
This commit is contained in:
+2
-1
@@ -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 \
|
||||||
|
|||||||
@@ -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={
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user