ttttdiva commited on
Commit
b0af500
·
verified ·
1 Parent(s): b6e4f0f

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +35 -27
main.py CHANGED
@@ -468,14 +468,9 @@ class CivitAICrawler:
468
  def process_model(self, model_url: str):
469
  """指定されたモデルURLを処理する関数。"""
470
  try:
471
- # ===== 1) モデルID取得 & モデル情報 =====
472
  model_id = model_url.rstrip("/").split("/")[-1]
473
  model_info = self.get_model_info(model_id)
474
- if not model_info:
475
- logger.error(f"No model info found for ID {model_id}")
476
- return
477
-
478
- # ===== 2) フォルダ名を決める =====
479
  latest_version = model_info.get("modelVersions", [])[0]
480
  model_file = next(
481
  (file for file in latest_version["files"] if file.get('type') == 'Model'),
@@ -485,42 +480,55 @@ class CivitAICrawler:
485
  latest_filename = model_file['name']
486
  folder = os.path.splitext(latest_filename)[0]
487
  else:
488
- # 'Model'タイプファイルが無い場合
489
  first_file = latest_version["files"][0]
490
  latest_filename = first_file['name']
491
  folder = os.path.splitext(latest_filename)[0]
492
  logger.warning(f"No 'Model' type file found for model ID {model_id}. Using first file's name.")
493
-
494
  os.makedirs(folder, exist_ok=True)
495
-
496
- # ===== 3) model_list.log を読んで「既に同IDがあるかチェック」=====
497
- current_list = self.read_model_list()
498
- if str(model_id) in current_list:
499
- logger.info(f"Model ID {model_id} is already in model_list.log. (No skip in this example)")
500
-
501
- # ===== 4) ダウンロード処理 =====
502
- self.download_model(model_info["modelVersions"], folder)
 
 
 
 
 
 
 
 
 
 
 
 
 
503
  self.download_images(model_info["modelVersions"], folder)
504
  self.save_html_content(model_url, folder)
505
  self.save_model_info(model_info, folder)
506
-
507
- # ===== 5) rclone で暗号化フォルダをアップロード =====
508
  encrypted_top_name = self.upload_folder_encrypted(folder)
509
-
510
- # ===== 6) model_list.log に "{model_id}: {URL}" 形式で追記 =====
511
- # 暗号化されたトップフォルダ名をURLに含める
512
- final_url = f"https://huggingface.co/{self.repo_ids['current']}/tree/main/{encrypted_top_name}"
513
-
514
  with open(self.config.LIST_FILE, "a", encoding="utf-8") as f:
515
- f.write(f"{model_id}: {final_url}\n")
516
-
517
- # ===== 7) ローカルフォルダ掃除 =====
518
  if os.path.exists(folder):
519
  shutil.rmtree(folder)
520
-
521
  except Exception as e:
522
  logger.error(f"Unexpected error processing model ({model_url}): {e}")
523
 
 
524
  async def crawl(self):
525
  """モデルを定期的にチェックし、更新を行う。"""
526
  while True:
 
468
  def process_model(self, model_url: str):
469
  """指定されたモデルURLを処理する関数。"""
470
  try:
 
471
  model_id = model_url.rstrip("/").split("/")[-1]
472
  model_info = self.get_model_info(model_id)
473
+
 
 
 
 
474
  latest_version = model_info.get("modelVersions", [])[0]
475
  model_file = next(
476
  (file for file in latest_version["files"] if file.get('type') == 'Model'),
 
480
  latest_filename = model_file['name']
481
  folder = os.path.splitext(latest_filename)[0]
482
  else:
 
483
  first_file = latest_version["files"][0]
484
  latest_filename = first_file['name']
485
  folder = os.path.splitext(latest_filename)[0]
486
  logger.warning(f"No 'Model' type file found for model ID {model_id}. Using first file's name.")
487
+
488
  os.makedirs(folder, exist_ok=True)
489
+
490
+ # model_list を読み込み
491
+ model_list = self.read_model_list()
492
+
493
+ # もし既に「同名(モデルページ名)がアップされている」かどうか確認したい場合の例:
494
+ # ※ 今回は modelpage_name(= model_info["name"]) をキーにするか、
495
+ # あるいは model_id (str) をキーにするか、運用に合わせて設定してください。
496
+ # 例として modelpage_name をキーとしてチェックする流れ:
497
+ modelpage_name = model_info.get("name", "Unnamed Model")
498
+
499
+ if modelpage_name in model_list.values():
500
+ # 既に同モデルページ名がアップロード済み → ここでスキップや上書きなどの処理を決定
501
+ logger.info(f"Model '{modelpage_name}' is already listed in model_list. Skipping re-upload.")
502
+ # もし「強制再アップロード」したくないなら return で処理終了:
503
+ # return
504
+ # あるいは「強制アップするがバージョンだけ追加」などいろいろ処理が可能
505
+ # ここではあえて続行するが、必要に応じて書き換えてください。
506
+
507
+ # ダウンロードや画像保存
508
+ existing_old_version_files = []
509
+ self.download_model(model_info["modelVersions"], folder, existing_old_version_files)
510
  self.download_images(model_info["modelVersions"], folder)
511
  self.save_html_content(model_url, folder)
512
  self.save_model_info(model_info, folder)
513
+
514
+ # ========== rclone で暗号化フォルダをアップロード ==========
515
  encrypted_top_name = self.upload_folder_encrypted(folder)
516
+
517
+ # 今回アップロードしたモデルの URL
518
+ model_hf_url = f"https://huggingface.co/{self.repo_ids['current']}/tree/main/{encrypted_top_name}"
519
+
520
+ # model_list.log に追記 → "modelpage_name: model_hf_url" 形式
521
  with open(self.config.LIST_FILE, "a", encoding="utf-8") as f:
522
+ f.write(f"{modelpage_name}: {model_hf_url}\n")
523
+
524
+ # ローカルフォルダ削除
525
  if os.path.exists(folder):
526
  shutil.rmtree(folder)
527
+
528
  except Exception as e:
529
  logger.error(f"Unexpected error processing model ({model_url}): {e}")
530
 
531
+
532
  async def crawl(self):
533
  """モデルを定期的にチェックし、更新を行う。"""
534
  while True: