Spaces:
Runtime error
Runtime error
Upload persistent_user_manager.py
Browse files- persistent_user_manager.py +13 -6
persistent_user_manager.py
CHANGED
|
@@ -100,11 +100,9 @@ class PersistentUserManager:
|
|
| 100 |
logger.debug(f"Cookie初期化: prefix={unique_prefix}, session_id={session_id}, timestamp={timestamp}")
|
| 101 |
|
| 102 |
# EncryptedCookieManagerを初期化(永続Cookie対応)
|
| 103 |
-
# 完全にユニークなキーを使用
|
| 104 |
cookies = EncryptedCookieManager(
|
| 105 |
prefix=unique_prefix, # タイムスタンプ付きの完全にユニークなprefix
|
| 106 |
-
password=cookie_password
|
| 107 |
-
key=f"CookieManager_{session_id}_{timestamp}" # 内部キーも完全にユニーク
|
| 108 |
)
|
| 109 |
|
| 110 |
# Cookieが準備できるまで待機(最大3回試行)
|
|
@@ -435,7 +433,7 @@ class PersistentUserManager:
|
|
| 435 |
|
| 436 |
def save_user_game_data(self, user_id: str, game_data: Dict[str, Any]) -> bool:
|
| 437 |
"""
|
| 438 |
-
|
| 439 |
|
| 440 |
Args:
|
| 441 |
user_id: ユーザーID
|
|
@@ -447,10 +445,15 @@ class PersistentUserManager:
|
|
| 447 |
try:
|
| 448 |
user_file = os.path.join(self.user_data_dir, f"{user_id}.json")
|
| 449 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 450 |
# 既存データを読み込み
|
| 451 |
if os.path.exists(user_file):
|
| 452 |
with open(user_file, 'r', encoding='utf-8') as f:
|
| 453 |
user_data = json.load(f)
|
|
|
|
| 454 |
else:
|
| 455 |
# 新規ユーザーデータを作成
|
| 456 |
user_data = {
|
|
@@ -458,6 +461,7 @@ class PersistentUserManager:
|
|
| 458 |
"created_at": datetime.now().isoformat(),
|
| 459 |
"version": "1.0"
|
| 460 |
}
|
|
|
|
| 461 |
|
| 462 |
# ゲームデータを更新
|
| 463 |
user_data["game_data"] = game_data
|
|
@@ -468,11 +472,14 @@ class PersistentUserManager:
|
|
| 468 |
with open(user_file, 'w', encoding='utf-8') as f:
|
| 469 |
json.dump(user_data, f, ensure_ascii=False, indent=2)
|
| 470 |
|
| 471 |
-
|
|
|
|
|
|
|
|
|
|
| 472 |
return True
|
| 473 |
|
| 474 |
except Exception as e:
|
| 475 |
-
logger.error(f"
|
| 476 |
return False
|
| 477 |
|
| 478 |
def get_user_info(self, user_id: str) -> Optional[Dict[str, Any]]:
|
|
|
|
| 100 |
logger.debug(f"Cookie初期化: prefix={unique_prefix}, session_id={session_id}, timestamp={timestamp}")
|
| 101 |
|
| 102 |
# EncryptedCookieManagerを初期化(永続Cookie対応)
|
|
|
|
| 103 |
cookies = EncryptedCookieManager(
|
| 104 |
prefix=unique_prefix, # タイムスタンプ付きの完全にユニークなprefix
|
| 105 |
+
password=cookie_password
|
|
|
|
| 106 |
)
|
| 107 |
|
| 108 |
# Cookieが準備できるまで待機(最大3回試行)
|
|
|
|
| 433 |
|
| 434 |
def save_user_game_data(self, user_id: str, game_data: Dict[str, Any]) -> bool:
|
| 435 |
"""
|
| 436 |
+
ユーザーのゲームデータを永続ストレージ(/mnt/data)に保存
|
| 437 |
|
| 438 |
Args:
|
| 439 |
user_id: ユーザーID
|
|
|
|
| 445 |
try:
|
| 446 |
user_file = os.path.join(self.user_data_dir, f"{user_id}.json")
|
| 447 |
|
| 448 |
+
# 保存先パスをログ出力(永続ストレージ確認用)
|
| 449 |
+
logger.info(f"ゲームデータ保存先: {user_file}")
|
| 450 |
+
logger.info(f"永続ストレージベースパス: {self.storage_base_path}")
|
| 451 |
+
|
| 452 |
# 既存データを読み込み
|
| 453 |
if os.path.exists(user_file):
|
| 454 |
with open(user_file, 'r', encoding='utf-8') as f:
|
| 455 |
user_data = json.load(f)
|
| 456 |
+
logger.info(f"既存ユーザーデータを更新: {user_id[:8]}...")
|
| 457 |
else:
|
| 458 |
# 新規ユーザーデータを作成
|
| 459 |
user_data = {
|
|
|
|
| 461 |
"created_at": datetime.now().isoformat(),
|
| 462 |
"version": "1.0"
|
| 463 |
}
|
| 464 |
+
logger.info(f"新規ユーザーデータを作成: {user_id[:8]}...")
|
| 465 |
|
| 466 |
# ゲームデータを更新
|
| 467 |
user_data["game_data"] = game_data
|
|
|
|
| 472 |
with open(user_file, 'w', encoding='utf-8') as f:
|
| 473 |
json.dump(user_data, f, ensure_ascii=False, indent=2)
|
| 474 |
|
| 475 |
+
# 保存後のファイルサイズを確認
|
| 476 |
+
file_size = os.path.getsize(user_file)
|
| 477 |
+
logger.info(f"永続ストレージにゲームデータ保存完了: {user_id[:8]}... (ファイルサイズ: {file_size}バイト)")
|
| 478 |
+
|
| 479 |
return True
|
| 480 |
|
| 481 |
except Exception as e:
|
| 482 |
+
logger.error(f"永続ストレージへのゲームデータ保存エラー: {e}")
|
| 483 |
return False
|
| 484 |
|
| 485 |
def get_user_info(self, user_id: str) -> Optional[Dict[str, Any]]:
|