ttttdiva commited on
Commit
aa38287
·
verified ·
1 Parent(s): d13d5c8

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +43 -43
main.py CHANGED
@@ -205,53 +205,53 @@ class CivitAICrawler:
205
  fname = f_info["name"]
206
  self.download_file(url, ov_folder, fname)
207
 
208
- def get_model_info_json(self, model_info: dict, folder: str):
209
- """model_info.jsonを保存"""
210
- info_path = os.path.join(folder, "model_info.json")
211
  try:
212
- with open(info_path, 'w', encoding='utf-8') as f:
213
- json.dump(model_info, f, indent=2)
214
- logger.info(f"[OK] saved model_info.json => {info_path}")
 
215
  except Exception as e:
216
- logger.error(f"[ERR] saving model_info.json: {e}")
 
217
 
218
  def process_model(self, model_id: str):
219
- """本体処理: フォルダにまとめてDL => encrypt => upload"""
220
- try:
221
- info = self.get_model_info(model_id)
222
- if not info or "modelVersions" not in info:
223
- logger.error(f"[ERR] no modelVersions for {model_id}")
224
- return
225
- versions = info["modelVersions"]
226
- folder_name = re.sub(r'[\\/*?:"<>|]', '_', info.get("name","UnknownModel"))
227
- # local_folderベースに作りたいならこう↓
228
- # local_folder = "local_folder"
229
- # os.makedirs(local_folder, exist_ok=True)
230
- # folder_path = os.path.join(local_folder, folder_name)
231
- # ここでは、とりあえずapp直下に folder_name作成
232
- folder_path = folder_name
233
-
234
- if os.path.exists(folder_path):
235
- shutil.rmtree(folder_path)
236
- os.makedirs(folder_path, exist_ok=True)
237
- logger.info(f"[OK] created folder => {folder_path}")
238
-
239
- # ダウンロード
240
- self.download_and_process_versions(versions, folder_path)
241
-
242
- # 画像
243
- self.download_images(versions, folder_path)
244
-
245
- # model_info.json
246
- self.get_model_info_json(info, folder_path)
247
-
248
- # 暗号化アップ
249
- enc_folder = self.encrypt_and_upload_folder(folder_path)
250
- if enc_folder is None:
251
- enc_folder = "[ENCRYPT_FAILED]"
252
- # (Optional) model_list.log に追記 など
253
- except Exception as e:
254
- logger.error(f"Error in process_model({model_id}): {e}")
255
 
256
  async def crawl(self):
257
  while True:
 
205
  fname = f_info["name"]
206
  self.download_file(url, ov_folder, fname)
207
 
208
+ def get_model_info(self, model_id: str) -> dict:
209
+ """モデルIDからCivitAIの情報を取得"""
 
210
  try:
211
+ url = f"{self.config.URLS['modelId']}{model_id}"
212
+ resp = requests.get(url, headers=self.config.HEADERS)
213
+ resp.raise_for_status()
214
+ return resp.json()
215
  except Exception as e:
216
+ logger.error(f"[ERR] get_model_info({model_id}): {e}")
217
+ return {}
218
 
219
  def process_model(self, model_id: str):
220
+ info = self.get_model_info(model_id)
221
+ if not info or "modelVersions" not in info:
222
+ logger.error(f"[ERR] No modelVersions for {model_id}")
223
+ return
224
+
225
+ versions = info["modelVersions"]
226
+
227
+ # ここで固定フォルダ "local_models" を作る
228
+ base_dir = "local_models"
229
+ os.makedirs(base_dir, exist_ok=True)
230
+
231
+ # サブフォルダ名 (model_id を使う or model名を使う)
232
+ folder_name = str(model_id)
233
+ folder_path = os.path.join(base_dir, folder_name)
234
+
235
+ # 古いものがあれば消す
236
+ if os.path.exists(folder_path):
237
+ shutil.rmtree(folder_path)
238
+ os.makedirs(folder_path, exist_ok=True)
239
+
240
+ logger.info(f"[OK] created local folder => {folder_path}")
241
+
242
+ # ここでダウンロード (最新&古いバージョン)
243
+ # 例: すべて folder_path に保存
244
+ for v in versions:
245
+ for f_info in v.get("files", []):
246
+ dl_url = f_info["downloadUrl"]
247
+ fname = f_info["name"]
248
+ self.download_file(dl_url, folder_path, fname)
249
+
250
+ # 画像もダウンロード (folder_path/images に)
251
+ self.download_images(versions, folder_path)
252
+
253
+ # ここで暗号化→アップロードするなら
254
+ self.encrypt_and_upload_folder(folder_path)
 
255
 
256
  async def crawl(self):
257
  while True: