Skip to content

Commit 6753699

Browse files
Update template(#504)
Co-authored-by: GitHub Action <action@github.com>
1 parent 38689f5 commit 6753699

20 files changed

+873
-785
lines changed

bundles.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@
211211
"hidream_i1_full",
212212
"fuse_options",
213213
"index",
214+
"index_logo",
214215
"index.ar",
215216
"index.es",
216217
"index.fr",

packages/core/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "comfyui-workflow-templates-core"
7-
version = "0.3.104"
7+
version = "0.3.105"
88
description = "Core helpers for ComfyUI workflow templates"
99
readme = {text = "Core helpers for ComfyUI workflow templates.", content-type = "text/plain"}
1010
requires-python = ">=3.9"

packages/core/src/comfyui_workflow_templates_core/manifest.json

Lines changed: 69 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3713,6 +3713,50 @@
37133713
"path": "media-other/3d_hunyuan3d_multiview_to_model_turbo/"
37143714
}
37153715
},
3716+
{
3717+
"id": "api_wavespeed_flshvsr_video_upscale",
3718+
"bundle": "media-other",
3719+
"version": "0.0.0",
3720+
"assets": [
3721+
{
3722+
"filename": "api_wavespeed_flshvsr_video_upscale.json",
3723+
"sha256": "2e919b1ca34d595e1c2a841766d3ace7746fffc185ba227b32c2e8f42751cdf2"
3724+
},
3725+
{
3726+
"filename": "api_wavespeed_flshvsr_video_upscale-1.webp",
3727+
"sha256": "aa10f8ebcafe0c7fd3fdae3be4b403ab45d25e5e6c8ec35b99edc9f487354b58"
3728+
},
3729+
{
3730+
"filename": "api_wavespeed_flshvsr_video_upscale-2.webp",
3731+
"sha256": "38c857f2dc2c42a7bfeb551e6d6ea5380e39c9a363fa60ad5b64cbef798b5c10"
3732+
}
3733+
],
3734+
"cdn": {
3735+
"path": "media-other/api_wavespeed_flshvsr_video_upscale/"
3736+
}
3737+
},
3738+
{
3739+
"id": "api_wavespped_image_upscale",
3740+
"bundle": "media-other",
3741+
"version": "0.0.0",
3742+
"assets": [
3743+
{
3744+
"filename": "api_wavespped_image_upscale.json",
3745+
"sha256": "7cf6a75c0b92bf1aec9cc5a41a575b597f2c1430bf17dd6262713d79834b2584"
3746+
},
3747+
{
3748+
"filename": "api_wavespped_image_upscale-1.webp",
3749+
"sha256": "e129c502d2df2571626f14e583516f0df4b15941fff9245b9709fa296f522c4b"
3750+
},
3751+
{
3752+
"filename": "api_wavespped_image_upscale-2.webp",
3753+
"sha256": "e05cca6a0c9cf5fde1c3a8631ab5a1d04d901d76efa8e5d79ea7fe3aeecdbeb1"
3754+
}
3755+
],
3756+
"cdn": {
3757+
"path": "media-other/api_wavespped_image_upscale/"
3758+
}
3759+
},
37163760
{
37173761
"id": "audio-chatterbox_tts",
37183762
"bundle": "media-other",
@@ -4064,7 +4108,7 @@
40644108
"assets": [
40654109
{
40664110
"filename": "index.json",
4067-
"sha256": "da77cb655e72bcc1c45371d53f3556ee4f3f32f645a6fc1b4d9dee966f104ca7"
4111+
"sha256": "54af1cf7f6daa1d5bb7b90ac30f526a013d59b9ffadc3670d4ff8c69d84a5716"
40684112
}
40694113
],
40704114
"cdn": {
@@ -4078,7 +4122,7 @@
40784122
"assets": [
40794123
{
40804124
"filename": "index.ar.json",
4081-
"sha256": "043c67ec08da546434baea0110c917ebed21f77764614724d35cbe4e25fefac5"
4125+
"sha256": "b990334ae7eb7fd5c41466d2c1885a7e16649872c18bc2ca6dfcb98f89f4eaaa"
40824126
}
40834127
],
40844128
"cdn": {
@@ -4092,7 +4136,7 @@
40924136
"assets": [
40934137
{
40944138
"filename": "index.es.json",
4095-
"sha256": "0328474044bf515ca10dad8bb5059bacaf72798586f9ebd197d2c57711d679aa"
4139+
"sha256": "51e6883eba8aa4134240c9f7974884c8dca81d72e3acf30818483ed3138e7092"
40964140
}
40974141
],
40984142
"cdn": {
@@ -4106,7 +4150,7 @@
41064150
"assets": [
41074151
{
41084152
"filename": "index.fr.json",
4109-
"sha256": "25f103f29c130058ba57348b29f21d3ac790325c1fe94d2b5d2fc87f80d35c23"
4153+
"sha256": "18b491815f5e0aab0126f56212bfd1a5590446b98df402c93b6845780dce0e40"
41104154
}
41114155
],
41124156
"cdn": {
@@ -4120,7 +4164,7 @@
41204164
"assets": [
41214165
{
41224166
"filename": "index.ja.json",
4123-
"sha256": "1e9e472a2f49c9173660a259793c22ce216958c9d688fc3d8db29d2827e24813"
4167+
"sha256": "19d19f4221e7b4117f3e5adc5e8431d1f29fe4bd3005d4db916e8a900c149493"
41244168
}
41254169
],
41264170
"cdn": {
@@ -4134,7 +4178,7 @@
41344178
"assets": [
41354179
{
41364180
"filename": "index.ko.json",
4137-
"sha256": "2d0edf56814c19bb0a5f87d693b0ded6ea87e04696d152a31c6a1bea50db51c0"
4181+
"sha256": "8be075352ba3dc97b919ea45878e2dd5c670bc87128804dd417a2ffd13ddb410"
41384182
}
41394183
],
41404184
"cdn": {
@@ -4148,7 +4192,7 @@
41484192
"assets": [
41494193
{
41504194
"filename": "index.pt-BR.json",
4151-
"sha256": "f3689137638610dae4577fb6bab9410377c40cb8d218b61b0bb20562827696ac"
4195+
"sha256": "3a644272f98ab916dcf5322fec5ad959ae37de222536bf6dddc8935a03bfdcc2"
41524196
}
41534197
],
41544198
"cdn": {
@@ -4162,7 +4206,7 @@
41624206
"assets": [
41634207
{
41644208
"filename": "index.ru.json",
4165-
"sha256": "77d6354d04c4a92e306e6dcdda74466841284097ae5f9db00b116635c282b199"
4209+
"sha256": "d3658fb12e0b346be966a4fb1e5b321cc753ba24aaa1e8aff6a6f65ba050870b"
41664210
}
41674211
],
41684212
"cdn": {
@@ -4190,7 +4234,7 @@
41904234
"assets": [
41914235
{
41924236
"filename": "index.tr.json",
4193-
"sha256": "62fdc167a76b6bb107e50ced343da220568078d006f9728d193510657b8978c0"
4237+
"sha256": "c88aff51b04608ef0ffa584d15fcbb03672935c17f4fd34650604251e0d6cb9d"
41944238
}
41954239
],
41964240
"cdn": {
@@ -4204,7 +4248,7 @@
42044248
"assets": [
42054249
{
42064250
"filename": "index.zh.json",
4207-
"sha256": "5694a08e1839a4839d1167c92f1289654975d518c227e5fc5b93fbebea03808d"
4251+
"sha256": "cb744f3eb26d18c3fdfcb2bfbfd6dc374837ffa3451506681f28a67ee58383d4"
42084252
}
42094253
],
42104254
"cdn": {
@@ -4218,13 +4262,27 @@
42184262
"assets": [
42194263
{
42204264
"filename": "index.zh-TW.json",
4221-
"sha256": "e9f2c9a241c932a0be0f98b4a8d6f7ca3a0848e7a7795d56022b8f5886d60408"
4265+
"sha256": "c42eca2d0bcec8b22e06a7186437c68d587495cf72e67d7c5abe960b0f40f8c8"
42224266
}
42234267
],
42244268
"cdn": {
42254269
"path": "media-other/index.zh-TW/"
42264270
}
42274271
},
4272+
{
4273+
"id": "index_logo",
4274+
"bundle": "media-other",
4275+
"version": "0.0.0",
4276+
"assets": [
4277+
{
4278+
"filename": "index_logo.json",
4279+
"sha256": "4f971176790a743be464fe5a871ec1739779e99a272a9f66390cadf9f0fc6090"
4280+
}
4281+
],
4282+
"cdn": {
4283+
"path": "media-other/index_logo/"
4284+
}
4285+
},
42284286
{
42294287
"id": "sd3.5_large_blur",
42304288
"bundle": "media-other",

packages/media_other/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "comfyui-workflow-templates-media-other"
7-
version = "0.3.91"
7+
version = "0.3.92"
88
description = "Media bundle containing audio/3D/misc workflow assets"
99
readme = {text = "Media bundle containing audio, 3D, and other workflow assets for ComfyUI.", content-type = "text/plain"}
1010
requires-python = ">=3.9"

pyproject.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,23 @@ classifiers = [
1818
]
1919

2020
dependencies = [
21-
"comfyui-workflow-templates-core==0.3.104",
21+
"comfyui-workflow-templates-core==0.3.105",
2222
"comfyui-workflow-templates-media-api==0.3.46",
2323
"comfyui-workflow-templates-media-video==0.3.40",
2424
"comfyui-workflow-templates-media-image==0.3.68",
25-
"comfyui-workflow-templates-media-other==0.3.91",
25+
"comfyui-workflow-templates-media-other==0.3.92",
2626
]
2727

2828
[project.optional-dependencies]
2929
api = ["comfyui-workflow-templates-media-api==0.3.46"]
3030
video = ["comfyui-workflow-templates-media-video==0.3.40"]
3131
image = ["comfyui-workflow-templates-media-image==0.3.68"]
32-
other = ["comfyui-workflow-templates-media-other==0.3.91"]
32+
other = ["comfyui-workflow-templates-media-other==0.3.92"]
3333
all = [
3434
"comfyui-workflow-templates-media-api==0.3.46",
3535
"comfyui-workflow-templates-media-video==0.3.40",
3636
"comfyui-workflow-templates-media-image==0.3.68",
37-
"comfyui-workflow-templates-media-other==0.3.91",
37+
"comfyui-workflow-templates-media-other==0.3.92",
3838
]
3939

4040
[tool.setuptools.packages.find]

scripts/i18n.json

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2654,8 +2654,8 @@
26542654
"en": "Enhance videos with Topaz AI. Supports resolution upscaling using Starlight (Astra) Fast model and frame interpolation with apo-8 model.",
26552655
"zh": "使用 Topaz AI 增强视频。支持通过 Starlight(Astra)Fast 模型进行分辨率放大,并支持通过 apo-8 模型进行画面插帧。",
26562656
"zh-TW": "使用 Topaz AI 加強影片。支援以 Starlight(Astra)Fast 模型提升解析度,並以 apo-8 模型進行畫面插補。",
2657-
"ja": "Topaz AI で動画を高画質化。Starlight(Astra)Fastモデルによる解像度アップスケーリングと、apo-8モデルによるフレーム補間をサポートします。",
2658-
"ko": "Topaz AI로 비디오를 향상하세요. Starlight(Astra) Fast 모델을 통한 해상도 업스케일링과 apo-8 모델을 활용한 프레임 보간을 지원합니다.",
2657+
"ja": "Topaz AI で動画を高画質化。Starlight(Astra)Fastモデルによる解像度アップスケーリングと、apo-8モデルによるフレーム補間をサポートします。",
2658+
"ko": "Topaz AI로 비디오를 향상하세요. Starlight(Astra) Fast 모델을 통한 해상도 업스케일링과 apo-8 모델을 활용한 프레임 보간을 지원합니다.",
26592659
"es": "Mejora vídeos con Topaz AI. Permite aumentar la resolución usando el modelo Starlight (Astra) Fast e interpolar fotogramas con el modelo apo-8.",
26602660
"fr": "Améliorez les vidéos avec Topaz AI. Prend en charge l’upscaling de résolution avec le modèle Starlight (Astra) Fast et l’interpolation d’images avec le modèle apo-8.",
26612661
"ru": "Улучшайте видео с помощью Topaz AI. Поддерживает увеличение разрешения через модель Starlight (Astra) Fast и интерполяцию кадров с моделью apo-8.",
@@ -2664,17 +2664,17 @@
26642664
"pt-BR": "Aprimore vídeos com Topaz AI. Suporta upscale de resolução usando o modelo Starlight (Astra) Fast e interpolação de quadros com o modelo apo-8."
26652665
},
26662666
"title": {
2667-
"en": "Topaz Video Enhance",
2668-
"zh": "Topaz 视频增强",
2669-
"zh-TW": "Topaz 影片增強",
2670-
"ja": "Topaz ビデオ強化",
2671-
"ko": "Topaz 비디오 향상",
2667+
"en": "Topaz: Video Enhance",
2668+
"zh": "Topaz 视频增强",
2669+
"zh-TW": "Topaz 影片增強",
2670+
"ja": "Topaz ビデオ強化",
2671+
"ko": "Topaz 비디오 향상",
26722672
"es": "Mejora de video Topaz",
2673-
"fr": "Topaz Amélioration vidéo",
2674-
"ru": "Topaz Улучшение видео",
2675-
"tr": "Topaz Video İyileştirme",
2673+
"fr": "Topaz Amélioration vidéo",
2674+
"ru": "Topaz Улучшение видео",
2675+
"tr": "Topaz Video İyileştirme",
26762676
"ar": "تحسين فيديو Topaz",
2677-
"pt-BR": "Topaz Video Enhance"
2677+
"pt-BR": "Topaz Video Enhance"
26782678
}
26792679
},
26802680
"txt_to_image_to_video": {
@@ -6546,7 +6546,7 @@
65466546
"en": "Professional image enhancement using Topaz's Reimagine model with face enhancement and detail restoration.",
65476547
"zh": "使用 Topaz 的 Reimagine 模型进行专业图像增强,同时增强人脸并恢复图像细节。",
65486548
"zh-TW": "使用 Topaz 的 Reimagine 模型進行專業影像增強,並提供人臉增強與細節修復功能。",
6549-
"ja": "Topaz の Reimagine モデルでプロフェッショナルな画像強化を行い、顔の強調とディテール復元も実現します。",
6549+
"ja": "Topaz の Reimagine モデルでプロフェッショナルな画像強化を行い、顔の強調とディテール復元も実現します。",
65506550
"ko": "Topaz의 Reimagine 모델을 사용하여 전문적인 이미지 향상을 제공하며 얼굴 향상과 세부 복원 기능을 지원합니다.",
65516551
"es": "Mejora profesional de imágenes usando el modelo Reimagine de Topaz con mejora facial y restauración de detalles.",
65526552
"fr": "Amélioration d’image professionnelle avec le modèle Reimagine de Topaz, comprenant l’amélioration du visage et la restauration des détails.",
@@ -6556,17 +6556,17 @@
65566556
"pt-BR": "Aprimoramento profissional de imagem usando o modelo Reimagine da Topaz com aprimoramento facial e restauração de detalhes."
65576557
},
65586558
"title": {
6559-
"en": "Topaz Image Enhance",
6560-
"zh": "Topaz 图像增强",
6561-
"zh-TW": "Topaz 影像增強",
6559+
"en": "Topaz: Image Enhance",
6560+
"zh": "Topaz 图像增强",
6561+
"zh-TW": "Topaz 影像增強",
65626562
"ja": "Topaz画像強化",
6563-
"ko": "Topaz 이미지 향상",
6563+
"ko": "Topaz 이미지 향상",
65646564
"es": "Mejora de imagen Topaz",
65656565
"fr": "Amélioration d'image Topaz",
65666566
"ru": "Улучшение изображения Topaz",
6567-
"tr": "Topaz Görüntü İyileştirme",
6567+
"tr": "Topaz Görüntü İyileştirme",
65686568
"ar": "تحسين صورة Topaz",
6569-
"pt-BR": "Topaz Image Enhance"
6569+
"pt-BR": "Topaz Image Enhance"
65706570
}
65716571
},
65726572
"api_runway_text_to_image": {

scripts/sync_data.py

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ def compact_array(match):
474474
try:
475475
array_content = json.loads(f"[{content}]")
476476
if all(isinstance(item, str) for item in array_content) and len(content) < 200:
477-
return f"[{', '.join(json.dumps(item, ensure_ascii=False) for item in array_content)}]"
477+
return f"[{','.join(json.dumps(item, ensure_ascii=False) for item in array_content)}]"
478478
except:
479479
pass
480480
return match.group(0)
@@ -558,22 +558,12 @@ def record_error(self, message: str):
558558
def sync_template_data(self, master_template: Dict[str, Any], target_template: Dict[str, Any],
559559
template_name: str, lang: str) -> Dict[str, Any]:
560560
"""Sync data from master template to target template"""
561-
updated_template = target_template.copy()
561+
# Start with master_template to preserve field order from master
562+
updated_template = master_template.copy()
562563
changes_made = False
563564

564-
# Auto-sync fields
565-
for field in self.syncer.auto_sync_fields:
566-
if field in master_template:
567-
# Add or update field from master
568-
if field not in target_template or target_template[field] != master_template[field]:
569-
updated_template[field] = master_template[field]
570-
changes_made = True
571-
self.syncer.logger.info(f" ✓ Auto-synced {field}: {master_template[field]}")
572-
elif field in target_template:
573-
# Remove field that no longer exists in master
574-
del updated_template[field]
575-
changes_made = True
576-
self.syncer.logger.info(f" 🗑️ Removed {field} (no longer in master)")
565+
# Since we start from master_template, all fields are already in correct order
566+
# We only need to update translated fields and handle special cases
577567

578568
# Handle vram data filling - use size data when vram is missing or 0
579569
if "size" in updated_template:
@@ -596,20 +586,17 @@ def sync_template_data(self, master_template: Dict[str, Any], target_template: D
596586
updated_template["vram"] = 0
597587
changes_made = True
598588
self.syncer.logger.info(f" 💾 Set vram to 0 because size is 0")
599-
589+
600590
# Handle tags - always translate using i18n data
601591
if "tags" in master_template:
602592
# Translate tags from English to target language
603593
translated_tags = self.syncer.translate_tags(master_template["tags"], lang)
604594

605-
# Update if different or missing
606-
if "tags" not in target_template or target_template["tags"] != translated_tags:
607-
updated_template["tags"] = translated_tags
595+
# Update tags (they're already in updated_template from master, just need translation)
596+
updated_template["tags"] = translated_tags
597+
if translated_tags != master_template["tags"]:
608598
changes_made = True
609-
if translated_tags != master_template["tags"]:
610-
self.syncer.logger.info(f" 🏷️ Translated tags: {master_template['tags']}{translated_tags}")
611-
else:
612-
self.syncer.logger.info(f" ➕ Added tags: {translated_tags}")
599+
self.syncer.logger.info(f" 🏷️ Translated tags: {master_template['tags']}{translated_tags}")
613600

614601
# Handle language-specific fields - sync from i18n.json if available
615602
for field in self.syncer.language_specific_fields:
@@ -623,19 +610,12 @@ def sync_template_data(self, master_template: Dict[str, Any], target_template: D
623610
# Only apply translation if it's actually translated (different from English)
624611
if translation and translation != en_value:
625612
# Apply real translation from i18n
613+
updated_template[field] = translation
626614
if current_value != translation:
627-
updated_template[field] = translation
628615
changes_made = True
629616
self.syncer.translation_stats['translations_applied'] += 1
630617
self.syncer.logger.info(f" 🌐 Applied translation from i18n for {field}: '{translation}'")
631-
elif current_value is None:
632-
# Field doesn't exist in target, use English as fallback for new templates
633-
updated_template[field] = en_value
634-
changes_made = True
635-
self.syncer.logger.info(f" ➕ Added missing {field} (no translation): '{en_value}'")
636-
else:
637-
# No real translation in i18n (or it's a placeholder), preserve existing value
638-
self.syncer.logger.debug(f" ⏭ Preserved existing {field}: '{current_value}'")
618+
# If no translation, keep English value from master (already in updated_template)
639619

640620
# Track that we scanned this template
641621
self.syncer.translation_stats['templates_scanned'] += 1
-5.23 KB
Loading

0 commit comments

Comments
 (0)