fix(media-assets): download stable release bundle
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -18,9 +18,10 @@ from datetime import datetime
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
MEDIA_ASSETS_ZIP_URL = (
|
||||
"https://git.jc2009.com/client-commons/media-assets/archive/main.zip"
|
||||
MEDIA_ASSETS_BUNDLE_URL = (
|
||||
"https://git.jc2009.com/client-commons/media-assets/releases/download/vlatest/media-assets.zip"
|
||||
)
|
||||
MEDIA_ASSETS_ZIP_URL = MEDIA_ASSETS_BUNDLE_URL
|
||||
MEDIA_ASSETS_GIT_URL = "https://git.jc2009.com/client-commons/media-assets"
|
||||
|
||||
_WIN_DEFAULT_DATA_ROOT = Path(r"D:\jiangchang-data")
|
||||
@@ -109,6 +110,12 @@ def _env_dict(env: dict[str, str] | None) -> dict[str, str]:
|
||||
return env if env is not None else dict(os.environ)
|
||||
|
||||
|
||||
def _media_assets_bundle_url(env: dict[str, str] | None = None) -> str:
|
||||
env_map = _env_dict(env)
|
||||
override = (env_map.get("MEDIA_ASSETS_BUNDLE_URL") or "").strip()
|
||||
return override or MEDIA_ASSETS_BUNDLE_URL
|
||||
|
||||
|
||||
def _resolve_jiangchang_data_root(
|
||||
data_root: str | Path | None = None,
|
||||
env: dict[str, str] | None = None,
|
||||
@@ -474,12 +481,16 @@ def _try_download_via_zip(
|
||||
shared: Path,
|
||||
target: Path,
|
||||
warnings: list[str],
|
||||
*,
|
||||
env: dict[str, str] | None = None,
|
||||
url: str | None = None,
|
||||
) -> bool:
|
||||
download_root = _download_dir(shared)
|
||||
download_root.mkdir(parents=True, exist_ok=True)
|
||||
zip_path = download_root / "media-assets.zip"
|
||||
extracted = download_root / "extracted"
|
||||
staging = download_root / "staging"
|
||||
bundle_url = url or _media_assets_bundle_url(env)
|
||||
|
||||
try:
|
||||
if staging.exists():
|
||||
@@ -487,7 +498,7 @@ def _try_download_via_zip(
|
||||
if extracted.exists():
|
||||
shutil.rmtree(extracted, ignore_errors=True)
|
||||
|
||||
_download_zip(MEDIA_ASSETS_ZIP_URL, zip_path)
|
||||
_download_zip(bundle_url, zip_path)
|
||||
_extract_zip(zip_path, extracted)
|
||||
|
||||
found = _find_media_assets_root_in_tree(extracted)
|
||||
@@ -565,10 +576,15 @@ def _needs_media_repo_content(status: MediaAssetsStatus) -> bool:
|
||||
)
|
||||
|
||||
|
||||
def _maybe_repair_music_content(root: Path, status: MediaAssetsStatus) -> MediaAssetsStatus:
|
||||
def _maybe_repair_music_content(
|
||||
root: Path,
|
||||
status: MediaAssetsStatus,
|
||||
*,
|
||||
env: dict[str, str] | None = None,
|
||||
) -> MediaAssetsStatus:
|
||||
if not _needs_music_content_repair(status):
|
||||
return status
|
||||
if _media_assets_root_overridden(None):
|
||||
if _media_assets_root_overridden(env):
|
||||
return status
|
||||
|
||||
warnings: list[str] = []
|
||||
@@ -581,7 +597,7 @@ def _maybe_repair_music_content(root: Path, status: MediaAssetsStatus) -> MediaA
|
||||
return _maybe_ensure_ffmpeg_tools(root, refreshed)
|
||||
|
||||
shared = _shared_parent(root)
|
||||
if _try_download_via_zip(shared, root, warnings):
|
||||
if _try_download_via_zip(shared, root, warnings, env=env):
|
||||
refreshed = _inspect_media_assets(root, source="zip")
|
||||
for warning in warnings:
|
||||
if warning not in refreshed.warnings:
|
||||
@@ -631,12 +647,13 @@ def ensure_media_assets(
|
||||
shared.mkdir(parents=True, exist_ok=True)
|
||||
warnings: list[str] = []
|
||||
|
||||
if _try_download_via_zip(shared, root, warnings):
|
||||
if _try_download_via_zip(shared, root, warnings, env=env_map):
|
||||
return _maybe_ensure_ffmpeg_tools(
|
||||
root,
|
||||
_maybe_repair_music_content(
|
||||
root,
|
||||
_inspect_media_assets(root, source="zip"),
|
||||
env=env_map,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -650,6 +667,7 @@ def ensure_media_assets(
|
||||
root,
|
||||
source="git" if _is_git_repo(root) else "local",
|
||||
),
|
||||
env=env_map,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -657,7 +675,7 @@ def ensure_media_assets(
|
||||
for warning in warnings:
|
||||
if warning not in final.warnings:
|
||||
final.warnings.append(warning)
|
||||
repaired = _maybe_repair_music_content(root, final)
|
||||
repaired = _maybe_repair_music_content(root, final, env=env_map)
|
||||
for warning in warnings:
|
||||
if warning not in repaired.warnings:
|
||||
repaired.warnings.append(warning)
|
||||
|
||||
Reference in New Issue
Block a user