ttttdiva commited on
Commit
43ae23e
·
verified ·
1 Parent(s): 9b752dd

Upload main.py

Browse files
Files changed (1) hide show
  1. main.py +31 -4
main.py CHANGED
@@ -259,8 +259,14 @@ class CivitAICrawler:
259
  shutil.rmtree(single_file_folder)
260
  logger.info(f"Removed temp_single folder {single_file_folder}")
261
 
262
- # ========== 既存の encrypt_and_upload_folder はそのまま活用 ==========
263
  def encrypt_and_upload_folder(self, local_folder: str) -> Optional[str]:
 
 
 
 
 
 
 
264
  if not os.path.exists(local_folder):
265
  logger.error(f"encrypt_and_upload_folder: folder not found: {local_folder}")
266
  return None
@@ -268,7 +274,7 @@ class CivitAICrawler:
268
  encrypted_base_dir = os.path.join(os.getcwd(), "encrypted")
269
  os.makedirs(encrypted_base_dir, exist_ok=True)
270
 
271
- # 前のコードにある「古い暗号ファイル削除」はそのまま残す
272
  for item in os.listdir(encrypted_base_dir):
273
  item_path = os.path.join(encrypted_base_dir, item)
274
  try:
@@ -280,19 +286,40 @@ class CivitAICrawler:
280
  except Exception as e:
281
  logger.warning(f"[CLEANUP] Failed to remove {item_path}: {e}")
282
 
 
283
  subfolder_label = "enc_" + str(uuid.uuid4())[:8]
 
 
284
  try:
285
  subprocess.run(
286
- ["rclone", "copy", local_folder, f"cryptLocal:{subfolder_label}"],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  check=True
288
  )
289
  except subprocess.CalledProcessError as e:
290
  logger.error(f"rclone copy failed: {e}")
291
  return None
292
 
 
293
  enc_folder_path = os.path.join(encrypted_base_dir, subfolder_label)
 
294
  if not os.path.isdir(enc_folder_path):
295
- logger.error(f"[ERROR] {enc_folder_path} is not a directory.")
296
  return None
297
 
298
  # アップロード
 
259
  shutil.rmtree(single_file_folder)
260
  logger.info(f"Removed temp_single folder {single_file_folder}")
261
 
 
262
  def encrypt_and_upload_folder(self, local_folder: str) -> Optional[str]:
263
+ """
264
+ 1. rclone mkdir cryptLocal:subfolder_label で空フォルダを作る
265
+ 2. rclone copy local_folder => cryptLocal:subfolder_label --create-empty-src-dirs
266
+ 3. そのフォルダを self.upload_folder() でアップ
267
+ 4. ローカル平文フォルダ & 暗号フォルダを削除
268
+ 5. subfolder_label を返す
269
+ """
270
  if not os.path.exists(local_folder):
271
  logger.error(f"encrypt_and_upload_folder: folder not found: {local_folder}")
272
  return None
 
274
  encrypted_base_dir = os.path.join(os.getcwd(), "encrypted")
275
  os.makedirs(encrypted_base_dir, exist_ok=True)
276
 
277
+ # 既存の暗号ファイル削除(不要ならコメントアウト)
278
  for item in os.listdir(encrypted_base_dir):
279
  item_path = os.path.join(encrypted_base_dir, item)
280
  try:
 
286
  except Exception as e:
287
  logger.warning(f"[CLEANUP] Failed to remove {item_path}: {e}")
288
 
289
+ # サブフォルダ名を生成(enc_ + UUID)
290
  subfolder_label = "enc_" + str(uuid.uuid4())[:8]
291
+
292
+ # ★ 追加: mkdir で先に空ディレクトリを作っておく
293
  try:
294
  subprocess.run(
295
+ ["rclone", "mkdir", f"cryptLocal:{subfolder_label}"],
296
+ check=True
297
+ )
298
+ except subprocess.CalledProcessError as e:
299
+ logger.error(f"rclone mkdir failed: {e}")
300
+ return None
301
+
302
+ # ★ --create-empty-src-dirs オプションを付けて copy
303
+ try:
304
+ subprocess.run(
305
+ [
306
+ "rclone",
307
+ "copy",
308
+ local_folder,
309
+ f"cryptLocal:{subfolder_label}",
310
+ "--create-empty-src-dirs"
311
+ ],
312
  check=True
313
  )
314
  except subprocess.CalledProcessError as e:
315
  logger.error(f"rclone copy failed: {e}")
316
  return None
317
 
318
+ # 暗号フォルダのパス(必ずディレクトリができている前提)
319
  enc_folder_path = os.path.join(encrypted_base_dir, subfolder_label)
320
+
321
  if not os.path.isdir(enc_folder_path):
322
+ logger.error(f"[ERROR] {enc_folder_path} is not a directory, something is still off.")
323
  return None
324
 
325
  # アップロード