Spaces:
Runtime error
Runtime error
Upload main_app.py
Browse files- main_app.py +13 -30
main_app.py
CHANGED
|
@@ -1417,53 +1417,36 @@ def render_chat_tab_content(managers):
|
|
| 1417 |
# --- 未ログインの画面 ---
|
| 1418 |
|
| 1419 |
# 2. Hugging Faceからのリダイレクト直後か確認 (URLに 'code' があるか)
|
| 1420 |
-
query_params = st.
|
| 1421 |
-
|
| 1422 |
|
| 1423 |
-
if
|
| 1424 |
-
|
| 1425 |
redirect_uri = get_redirect_uri()
|
| 1426 |
token_data = get_hf_token(auth_code, redirect_uri)
|
| 1427 |
-
|
| 1428 |
if token_data:
|
| 1429 |
st.session_state['token_data'] = token_data
|
| 1430 |
user_data = get_user_info(token_data['access_token'])
|
| 1431 |
-
|
| 1432 |
-
|
| 1433 |
-
st.session_state['user_data'] = user_data
|
| 1434 |
-
|
| 1435 |
-
# URLから 'code' を消去してページを再読み込みし、ログイン後の画面を表示
|
| 1436 |
-
st.query_params.clear()
|
| 1437 |
st.rerun()
|
| 1438 |
-
|
| 1439 |
else:
|
| 1440 |
-
# 4. 初期アクセス時(未ログイン状態)
|
| 1441 |
st.warning("現在ログインしていません。")
|
| 1442 |
-
|
| 1443 |
if not CLIENT_ID or not CLIENT_SECRET:
|
| 1444 |
st.error("OAuthクライアントが設定されていません。SpaceのREADME.mdを確認し、再起動してください。")
|
| 1445 |
else:
|
| 1446 |
-
# ログインURLを生成
|
| 1447 |
redirect_uri = get_redirect_uri()
|
| 1448 |
-
params = {
|
| 1449 |
-
"client_id": CLIENT_ID,
|
| 1450 |
-
"redirect_uri": redirect_uri,
|
| 1451 |
-
"scope": "openid profile", # 取得したい情報の範囲
|
| 1452 |
-
"state": "STATE_STRING", # CSRF対策のためランダムな文字列を推奨
|
| 1453 |
-
"response_type": "code",
|
| 1454 |
-
}
|
| 1455 |
login_url = f"{HF_ENDPOINT}/oauth/authorize?{urlencode(params)}"
|
| 1456 |
-
|
| 1457 |
st.markdown(f'<a href="{login_url}" target="_self" style="display: inline-block; padding: 10px 20px; background-color: #FFD21E; color: black; text-align: center; text-decoration: none; border-radius: 5px; font-weight: bold;">🤗 Hugging Faceでログイン</a>', unsafe_allow_html=True)
|
| 1458 |
-
|
| 1459 |
-
|
| 1460 |
-
try:
|
| 1461 |
# 永続ストレージから確認
|
| 1462 |
# persistent_user_manager 完全廃止
|
| 1463 |
has_saved_data = user_info is not None and "game_data" in user_info
|
| 1464 |
if has_saved_data:
|
| 1465 |
logger.debug("永続ストレージに保存データを確認")
|
| 1466 |
-
|
| 1467 |
logger.warning(f"永続ストレージ確認エラー、フォールバック使用: {e}")
|
| 1468 |
# フォールバック: 従来のローカルファイル方式
|
| 1469 |
has_saved_data = user_id_manager.is_user_data_exists()
|
|
@@ -1471,7 +1454,7 @@ def render_chat_tab_content(managers):
|
|
| 1471 |
user_info = user_id_manager.get_user_info()
|
| 1472 |
logger.debug("フォールバック: ローカルファイルに保存データを確認")
|
| 1473 |
|
| 1474 |
-
|
| 1475 |
# 保存データがある場合の情報表示
|
| 1476 |
game_data = user_info["game_data"]
|
| 1477 |
if game_data:
|
|
@@ -1490,7 +1473,7 @@ def render_chat_tab_content(managers):
|
|
| 1490 |
storage_type = "🌐 永続ストレージ" if user_info.get("storage_type") != "local" else "📁 ローカル"
|
| 1491 |
st.info(f"💾 保存データあり ({storage_type})\n好感度: {saved_affection}/100\nメッセージ: {saved_messages}件\n保存日時: {saved_at}")
|
| 1492 |
|
| 1493 |
-
|
| 1494 |
success = save_game_data_to_file(managers)
|
| 1495 |
if success:
|
| 1496 |
st.success("✅ ゲ���ムデータを保存しました!")
|
|
@@ -1501,7 +1484,7 @@ def render_chat_tab_content(managers):
|
|
| 1501 |
else:
|
| 1502 |
st.error("❌ ゲームデータの保存に失敗しました。")
|
| 1503 |
|
| 1504 |
-
|
| 1505 |
# 設定ボタン内の表示を大きくするCSS
|
| 1506 |
settings_css = """
|
| 1507 |
<style>
|
|
|
|
| 1417 |
# --- 未ログインの画面 ---
|
| 1418 |
|
| 1419 |
# 2. Hugging Faceからのリダイレクト直後か確認 (URLに 'code' があるか)
|
| 1420 |
+
query_params = st.experimental_get_query_params()
|
| 1421 |
+
auth_code_list = query_params.get("code",[])
|
| 1422 |
|
| 1423 |
+
if auth_code_list:
|
| 1424 |
+
auth_code = auth_code_list[0]
|
| 1425 |
redirect_uri = get_redirect_uri()
|
| 1426 |
token_data = get_hf_token(auth_code, redirect_uri)
|
|
|
|
| 1427 |
if token_data:
|
| 1428 |
st.session_state['token_data'] = token_data
|
| 1429 |
user_data = get_user_info(token_data['access_token'])
|
| 1430 |
+
if user_data: st.session_state['user_data'] = user_data
|
| 1431 |
+
st.experimental_set_query_params()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1432 |
st.rerun()
|
|
|
|
| 1433 |
else:
|
|
|
|
| 1434 |
st.warning("現在ログインしていません。")
|
|
|
|
| 1435 |
if not CLIENT_ID or not CLIENT_SECRET:
|
| 1436 |
st.error("OAuthクライアントが設定されていません。SpaceのREADME.mdを確認し、再起動してください。")
|
| 1437 |
else:
|
|
|
|
| 1438 |
redirect_uri = get_redirect_uri()
|
| 1439 |
+
params = { "client_id": CLIENT_ID, "redirect_uri": redirect_uri, "scope": "openid profile", "state": "STATE_STRING", "response_type": "code", }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1440 |
login_url = f"{HF_ENDPOINT}/oauth/authorize?{urlencode(params)}"
|
|
|
|
| 1441 |
st.markdown(f'<a href="{login_url}" target="_self" style="display: inline-block; padding: 10px 20px; background-color: #FFD21E; color: black; text-align: center; text-decoration: none; border-radius: 5px; font-weight: bold;">🤗 Hugging Faceでログイン</a>', unsafe_allow_html=True)
|
| 1442 |
+
|
| 1443 |
+
try:
|
|
|
|
| 1444 |
# 永続ストレージから確認
|
| 1445 |
# persistent_user_manager 完全廃止
|
| 1446 |
has_saved_data = user_info is not None and "game_data" in user_info
|
| 1447 |
if has_saved_data:
|
| 1448 |
logger.debug("永続ストレージに保存データを確認")
|
| 1449 |
+
except Exception as e:
|
| 1450 |
logger.warning(f"永続ストレージ確認エラー、フォールバック使用: {e}")
|
| 1451 |
# フォールバック: 従来のローカルファイル方式
|
| 1452 |
has_saved_data = user_id_manager.is_user_data_exists()
|
|
|
|
| 1454 |
user_info = user_id_manager.get_user_info()
|
| 1455 |
logger.debug("フォールバック: ローカルファイルに保存データを確認")
|
| 1456 |
|
| 1457 |
+
if has_saved_data and user_info and "game_data" in user_info:
|
| 1458 |
# 保存データがある場合の情報表示
|
| 1459 |
game_data = user_info["game_data"]
|
| 1460 |
if game_data:
|
|
|
|
| 1473 |
storage_type = "🌐 永続ストレージ" if user_info.get("storage_type") != "local" else "📁 ローカル"
|
| 1474 |
st.info(f"💾 保存データあり ({storage_type})\n好感度: {saved_affection}/100\nメッセージ: {saved_messages}件\n保存日時: {saved_at}")
|
| 1475 |
|
| 1476 |
+
if st.button("💾 ゲームデータを保存", help="現在の進行状況(好感度、チャット履歴など)をファイルに保存します", use_container_width=True):
|
| 1477 |
success = save_game_data_to_file(managers)
|
| 1478 |
if success:
|
| 1479 |
st.success("✅ ゲ���ムデータを保存しました!")
|
|
|
|
| 1484 |
else:
|
| 1485 |
st.error("❌ ゲームデータの保存に失敗しました。")
|
| 1486 |
|
| 1487 |
+
with st.expander("⚙️ 設定"):
|
| 1488 |
# 設定ボタン内の表示を大きくするCSS
|
| 1489 |
settings_css = """
|
| 1490 |
<style>
|