stuff
This commit is contained in:
@@ -15,7 +15,9 @@ from src.database import (
|
||||
get_scenario,
|
||||
get_scenario_stats,
|
||||
get_stats,
|
||||
get_user_audio_duration,
|
||||
get_user_session,
|
||||
get_user_stats,
|
||||
get_users_in_state,
|
||||
get_users_with_scenario,
|
||||
upsert_user_session,
|
||||
@@ -253,13 +255,17 @@ def format_replica_message(session: UserSession) -> str:
|
||||
|
||||
def format_admin_stats() -> str:
|
||||
"""Форматирует статистику для админки."""
|
||||
from src.audio import format_duration
|
||||
|
||||
stats = get_stats()
|
||||
duration_str = format_duration(stats["total_duration"])
|
||||
|
||||
return f"""📊 Статистика датасета:
|
||||
|
||||
📁 Сценарии: {stats["total_scenarios"]}
|
||||
🎵 Дорожки: {stats["total_tracks"]} (завершено: {stats["completed_tracks"]})
|
||||
💬 Реплики: {stats["total_replicas"]}
|
||||
🎙 Записей: {stats["total_recordings"]}
|
||||
📁 Сценарии: {stats["completed_scenarios"]}/{stats["total_scenarios"]} завершено
|
||||
🎵 Дорожки: {stats["completed_tracks"]}/{stats["total_tracks"]} озвучено
|
||||
💬 Реплики: {stats["total_recordings"]}/{stats["total_replicas"]} записано
|
||||
⏱ Объём: {duration_str}
|
||||
👥 Пользователей: {stats["total_users"]}
|
||||
|
||||
Отправьте JSON-файл с новым сценарием для загрузки."""
|
||||
@@ -434,9 +440,28 @@ async def handle_save_track(
|
||||
) -> None:
|
||||
"""Обработчик сохранения дорожки."""
|
||||
query = update.callback_query
|
||||
from src.scenarios import move_track_to_data
|
||||
from src.audio import format_duration
|
||||
from src.scenarios import is_scenario_complete, move_scenario_to_data
|
||||
|
||||
# Переносим файлы только когда весь сценарий озвучен
|
||||
if is_scenario_complete(session.scenario_id):
|
||||
move_scenario_to_data(session.scenario_id)
|
||||
|
||||
# Получаем статистику пользователя
|
||||
stats = get_user_stats(user.id)
|
||||
duration = get_user_audio_duration(user.id)
|
||||
duration_str = format_duration(duration)
|
||||
|
||||
# Формируем сообщение с благодарностью и статистикой
|
||||
thanks_msg = f"""✅ Дорожка сохранена!
|
||||
|
||||
🙏 Спасибо за вашу работу!
|
||||
|
||||
📊 Ваша статистика:
|
||||
• Озвучено реплик: {stats["total_replicas"]}
|
||||
• Завершено дорожек: {stats["completed_tracks"]}
|
||||
• Общее время записи: {duration_str}"""
|
||||
|
||||
move_track_to_data(user.id, session.scenario_id, session.speaker_id)
|
||||
track = find_available_track(user.id)
|
||||
|
||||
if not track:
|
||||
@@ -444,9 +469,7 @@ async def handle_save_track(
|
||||
session.scenario_id = None
|
||||
session.speaker_id = None
|
||||
session.replica_index = None
|
||||
await query.edit_message_text(
|
||||
f"✅ Дорожка сохранена!\n\n{NO_MORE_SCENARIOS_TEXT}"
|
||||
)
|
||||
await query.edit_message_text(f"{thanks_msg}\n\n{NO_MORE_SCENARIOS_TEXT}")
|
||||
else:
|
||||
scenario_id, speaker_id = track
|
||||
session.state = UserState.FIRST_REPLICA
|
||||
@@ -455,7 +478,7 @@ async def handle_save_track(
|
||||
session.replica_index = 0
|
||||
replica_text = get_current_replica_text(session)
|
||||
await query.edit_message_text(
|
||||
f"✅ Дорожка сохранена!\n\n{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}"
|
||||
f"{thanks_msg}\n\n{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}"
|
||||
)
|
||||
logger.info(
|
||||
f"User {user.id} saved track, started new: {scenario_id}/{speaker_id}"
|
||||
@@ -806,9 +829,18 @@ async def handle_voice_message(
|
||||
"""Обработчик голосовых сообщений."""
|
||||
from src.audio import save_voice_message
|
||||
|
||||
# Получаем реальный replica_index из таблицы replicas (индекс в сценарии)
|
||||
replicas = get_replicas_for_track(session.scenario_id, session.speaker_id)
|
||||
real_replica_index = replicas[session.replica_index].replica_index
|
||||
|
||||
voice = update.message.voice
|
||||
await save_voice_message(
|
||||
context.bot, voice.file_id, user.id, session.scenario_id, session.replica_index
|
||||
context.bot,
|
||||
voice.file_id,
|
||||
user.id,
|
||||
session.scenario_id,
|
||||
real_replica_index,
|
||||
voice.duration,
|
||||
)
|
||||
|
||||
track_length = get_track_length(session.scenario_id, session.speaker_id)
|
||||
|
||||
Reference in New Issue
Block a user