waveshaker commited on
Commit
46db1b2
·
verified ·
1 Parent(s): 319a23d

Rename models_manager_v8.2.py to models_manager_v8.3.py

Browse files
models_manager_v8.2.py → models_manager_v8.3.py RENAMED
@@ -631,18 +631,43 @@ class ModelsManager(tk.Tk):
631
 
632
  ttk.Button(win, text="自动生成 dataset", command=auto_dataset).pack(anchor="w", padx=10, pady=4)
633
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
634
  # ========================================================
635
- # 🌟 新增:渲染动态扩展字段
636
  # ========================================================
637
- # 🌟 新增:动态渲染自定义字段
638
  custom_vars = {}
639
  locked_keys = ["title", "trigger", "dataset", "showcase"]
640
- custom_keys = [k for k in meta.keys() if k not in locked_keys]
641
 
642
- if custom_keys:
 
 
 
 
 
 
 
 
 
 
 
 
643
  ext_frame = ttk.LabelFrame(win, text="自定义扩展字段")
644
  ext_frame.pack(fill="x", padx=10, pady=5)
645
- for k in custom_keys:
646
  row = ttk.Frame(ext_frame)
647
  row.pack(fill="x", pady=2)
648
  ttk.Label(row, text=f"{k}:", width=12).pack(side="left")
@@ -1297,7 +1322,7 @@ class ModelsManager(tk.Tk):
1297
  self._convert_png_to_jpg(local_dir)
1298
 
1299
  # 4. 打包 Parquet 并更新 YAML
1300
- temp_readme_path, valid_folders = self._generate_parquet_and_update_yaml(api, local_dir, region_prefix)
1301
 
1302
  # 5. 上传
1303
  self._upload_files_and_readme(api, local_dir, region_prefix, temp_readme_path, valid_folders)
@@ -1407,40 +1432,12 @@ class ModelsManager(tk.Tk):
1407
  return
1408
  self.log_dataset(f" 🎉 转换完成!共转换 {converted_count} 张图片。")
1409
 
1410
- def _generate_parquet_and_update_yaml(self, api, current_dir, region_prefix):
1411
- import glob, tempfile, pandas as pd
1412
  from datasets import Dataset, Features, Image as HFImage, Value
1413
- from huggingface_hub import DatasetCard
1414
- from PIL import Image as PILImage
1415
-
1416
- self.log_dataset("📦 [任务 4/5] 正在本地打包 Parquet 并更新 YAML 配置...")
1417
- local_folder_name = os.path.basename(current_dir).replace(" ", "_").replace("-", "_")
1418
-
1419
- self.log_dataset(f" ☁️ 正在读取云端 {DATASET_REPO_ID} 的现有配置...")
1420
- try:
1421
- # 注意这里用 DATASET_REPO_ID 替换了原脚本的 REPO_ID
1422
- remote_readme_path = api.hf_hub_download(repo_id=DATASET_REPO_ID, filename="README.md", repo_type="dataset")
1423
- with open(remote_readme_path, "r", encoding="utf-8") as f:
1424
- content = f.read()
1425
- card = DatasetCard(content)
1426
- self.log_dataset(" ✅ 成功读取云端 README。")
1427
- except Exception as e:
1428
- self.log_dataset(f" ⚠️ 找不到云端 README,将新建: {e}")
1429
- card = DatasetCard("")
1430
 
1431
- yaml_data = card.data if card.data else {}
1432
- if "configs" not in yaml_data: yaml_data["configs"] = []
1433
 
1434
- yaml_data["dataset_info"] = {
1435
- "features": [
1436
- {"name": "image", "dtype": "image"},
1437
- {"name": "file_name", "dtype": "string"},
1438
- {"name": "text", "dtype": "string"}
1439
- ]
1440
- }
1441
-
1442
- existing_config_names = [c.get("config_name") for c in yaml_data["configs"]]
1443
- new_configs_added = False
1444
  valid_folders = []
1445
 
1446
  for sub_folder_name in os.listdir(current_dir):
@@ -1489,32 +1486,6 @@ class ModelsManager(tk.Tk):
1489
  valid_folders.append(sub_folder_name)
1490
  self.log_dataset(f" ✅ 生成 train.parquet ({len(data_rows)} 条数据)")
1491
 
1492
- config_name = f"{local_folder_name}_{sub_folder_name}".lower()
1493
- path_str = f"{region_prefix}/{local_folder_name}/{sub_folder_name}/train.parquet"
1494
-
1495
- if config_name not in existing_config_names:
1496
- yaml_data["configs"].append({
1497
- "config_name": config_name,
1498
- "data_files": [{"split": "train", "path": path_str}]
1499
- })
1500
- new_configs_added = True
1501
- self.log_dataset(f" ➕ 已添加配置: {config_name}")
1502
-
1503
- def get_priority(config):
1504
- data_files = config.get("data_files", [])
1505
- path = data_files[0].get("path", "") if data_files else ""
1506
- priority_dict = {"CN": 1, "KR": 2, "JP": 3, "Fictional": 4, "WE": 5, "Heels": 6,}
1507
- path_prefix = path.split('/')[0] if path else ""
1508
- return priority_dict.get(path_prefix, 99)
1509
-
1510
- yaml_data["configs"] = sorted(yaml_data["configs"], key=lambda c: (get_priority(c), c.get("config_name", "")))
1511
- self.log_dataset(" 🔄 已根据 [CN > KR > JP > Fictional > WE > Heels] 的顺序重排 YAML。")
1512
-
1513
- if new_configs_added:
1514
- card.data = yaml_data
1515
- with tempfile.NamedTemporaryFile(mode='w', encoding='utf-8', suffix='.md', delete=False) as temp_readme:
1516
- temp_readme.write(str(card))
1517
- return temp_readme.name, valid_folders
1518
  return None, valid_folders
1519
 
1520
  def _upload_files_and_readme(self, api, current_dir, region_prefix, temp_readme_path, valid_folders):
@@ -1538,22 +1509,6 @@ class ModelsManager(tk.Tk):
1538
  self.log_dataset(f" 🎉 {sub_folder_name} 上传完成!")
1539
  except Exception as e:
1540
  self.log_dataset(f" ❌ {sub_folder_name} 上传失败: {e}")
1541
-
1542
- if temp_readme_path:
1543
- self.log_dataset("\n 📝 正在推送最新的 README.md...")
1544
- try:
1545
- api.upload_file(
1546
- path_or_fileobj=temp_readme_path,
1547
- path_in_repo="README.md",
1548
- repo_id=DATASET_REPO_ID,
1549
- repo_type="dataset",
1550
- commit_message="Auto-update README YAML configs"
1551
- )
1552
- self.log_dataset(" 🎉 README.md 已成功更新到云端!")
1553
- except Exception as e:
1554
- self.log_dataset(f" ❌ README.md 上传失败: {e}")
1555
- finally:
1556
- os.remove(temp_readme_path)
1557
  # ==========================================================
1558
  # ==================== 区域 4: Showcase 管理 ================
1559
  # ==========================================================
 
631
 
632
  ttk.Button(win, text="自动生成 dataset", command=auto_dataset).pack(anchor="w", padx=10, pady=4)
633
 
634
+ # # 🌟 新增:动态渲染自定义字段
635
+ # custom_vars = {}
636
+ # locked_keys = ["title", "trigger", "dataset", "showcase"]
637
+ # custom_keys = [k for k in meta.keys() if k not in locked_keys]
638
+
639
+ # if custom_keys:
640
+ # ext_frame = ttk.LabelFrame(win, text="自定义扩展字段")
641
+ # ext_frame.pack(fill="x", padx=10, pady=5)
642
+ # for k in custom_keys:
643
+ # row = ttk.Frame(ext_frame)
644
+ # row.pack(fill="x", pady=2)
645
+ # ttk.Label(row, text=f"{k}:", width=12).pack(side="left")
646
+ # var = tk.StringVar(value=str(meta.get(k, "")))
647
+ # custom_vars[k] = var
648
+ # ttk.Entry(row, textvariable=var).pack(side="left", fill="x", expand=True, padx=5)
649
  # ========================================================
650
+ # 🌟 动态渲染自定义字段(兼容空数据)
651
  # ========================================================
 
652
  custom_vars = {}
653
  locked_keys = ["title", "trigger", "dataset", "showcase"]
 
654
 
655
+ # 1. 当前数据自身的 key
656
+ current_custom_keys = set([k for k in meta.keys() if k not in locked_keys])
657
+
658
+ # 2. 全局所有数据里出现过的 key
659
+ global_custom_keys = set()
660
+ for m in self.items.values():
661
+ if isinstance(m, dict):
662
+ global_custom_keys.update([k for k in m.keys() if k not in locked_keys])
663
+
664
+ # 3. 合并去重
665
+ all_custom_keys = list(current_custom_keys) + [k for k in global_custom_keys if k not in current_custom_keys]
666
+
667
+ if all_custom_keys:
668
  ext_frame = ttk.LabelFrame(win, text="自定义扩展字段")
669
  ext_frame.pack(fill="x", padx=10, pady=5)
670
+ for k in all_custom_keys:
671
  row = ttk.Frame(ext_frame)
672
  row.pack(fill="x", pady=2)
673
  ttk.Label(row, text=f"{k}:", width=12).pack(side="left")
 
1322
  self._convert_png_to_jpg(local_dir)
1323
 
1324
  # 4. 打包 Parquet 并更新 YAML
1325
+ temp_readme_path, valid_folders = self._generate_parquet_and_update(api, local_dir, region_prefix)
1326
 
1327
  # 5. 上传
1328
  self._upload_files_and_readme(api, local_dir, region_prefix, temp_readme_path, valid_folders)
 
1432
  return
1433
  self.log_dataset(f" 🎉 转换完成!共转换 {converted_count} 张图片。")
1434
 
1435
+ def _generate_parquet_and_update(self, api, current_dir, region_prefix):
1436
+ import glob, pandas as pd
1437
  from datasets import Dataset, Features, Image as HFImage, Value
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1438
 
1439
+ self.log_dataset("📦 [任务 4/5] 正在本地打包 Parquet (已启用极简聚合模式)...")
 
1440
 
 
 
 
 
 
 
 
 
 
 
1441
  valid_folders = []
1442
 
1443
  for sub_folder_name in os.listdir(current_dir):
 
1486
  valid_folders.append(sub_folder_name)
1487
  self.log_dataset(f" ✅ 生成 train.parquet ({len(data_rows)} 条数据)")
1488
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1489
  return None, valid_folders
1490
 
1491
  def _upload_files_and_readme(self, api, current_dir, region_prefix, temp_readme_path, valid_folders):
 
1509
  self.log_dataset(f" 🎉 {sub_folder_name} 上传完成!")
1510
  except Exception as e:
1511
  self.log_dataset(f" ❌ {sub_folder_name} 上传失败: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1512
  # ==========================================================
1513
  # ==================== 区域 4: Showcase 管理 ================
1514
  # ==========================================================