diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index fa54d12..23bc573 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -4,7 +4,7 @@ - Apple FxPlug / PluginManager SDK 和随正式插件分发的运行框架属于 Apple;受 Apple 相应 SDK 与再分发条款约束,源码仓库不包含这些框架。编译需自行安装 Xcode 与 FxPlug SDK。macOS Vision、AppKit、CoreImage 属于系统组件。 - `Templates/大鱼人像美化/Drop Zone.tiff` 是 Motion 工程的标准占位资源,随模板保留;不将其声明为 Dayu 原创作品或另行授予 MIT 权利。 -- `tests/fixtures/astronaut.png` 来源于 NASA 的 Eileen Collins 图像,经 scikit-image 样本分发,详见同目录 ATTRIBUTION.md。相关分析预览由该公开样本生成。 +- `tests/fixtures/astronaut.png` 来源于 NASA 的 Eileen Collins 图像,经 scikit-image 样本分发,详见同目录 ATTRIBUTION.txt。相关分析预览由该公开样本生成。 - `docs/analysis` 中的对照分析、符号和反汇编摘录是互操作研究材料,不包括目标商业 APP、模型或 metallib。MIT 不为其原权利人的内容重新授权。本项目不声称与目标商业插件的模型或画面逐像素一致。 - `Assets/Artwork/portrait-cover.png`、APP 中 `LauncherInfo.png` 及两张模板缩略图由内置图像生成工具创作。人物为虚构成年古风人物,封面是宣传插画,不是真实滤镜前后效果对比;生成说明和提示词见 `docs/design`。未使用目标插件的宣传人像。 - 不包含用户测试素材、用户工程、真实人脸坐标数据、签名私钥、公证密码或账号令牌。签名证书与公证凭据不属于源码恢复范围。 diff --git a/scripts/publish-release.py b/scripts/publish-release.py index d778637..f80d91c 100644 --- a/scripts/publish-release.py +++ b/scripts/publish-release.py @@ -3,7 +3,7 @@ Secrets are read from macOS Keychain into memory; no auth material is persisted. """ from pathlib import Path -import base64,hashlib,html,json,mimetypes,ssl,subprocess,urllib.error,urllib.parse,urllib.request,uuid +import base64,hashlib,html,json,mimetypes,ssl,subprocess,urllib.error,urllib.parse,urllib.request,uuid,zipfile ROOT=Path(__file__).resolve().parent.parent STATE=ROOT/'build/publish-operation.json';STATE.parent.mkdir(exist_ok=True) state=json.loads(STATE.read_text()) if STATE.exists() else {'operation':str(uuid.uuid4())} @@ -32,6 +32,10 @@ def upload(name,path,mime): state[name]={'id':item['id'],'url':item['source_url']};save();return state[name] result=request('/wp/v2/media','POST',path.read_bytes(),{'Content-Type':mime,'Content-Disposition':'attachment; filename="'+filename+'"'}) state[name]={'id':result['id'],'url':result['source_url']};save();return state[name] +source_zip=ROOT/'build/Dayu-Portrait-1.2.0-source.zip' +assert zipfile.is_zipfile(source_zip), 'Build a valid reviewed source ZIP before any upload' +with zipfile.ZipFile(source_zip) as z: + assert z.testzip() is None and any(n.endswith('/Wrapper Application/AppDelegate.m') for n in z.namelist()) status=request('/dayu-publisher/v1/status');assert status['can_publish'] and status['can_upload'] and 'seo' in status['fields'] source=upload('source',ROOT/'build/Dayu-Portrait-1.2.0-source.zip','application/zip') card=upload('card',ROOT/'beatygril/beatygril/Wrapper Application/Resources/LauncherInfo.png','image/png')