Upload folder using huggingface_hub
Browse files- api/mindmaps.py +1 -0
- api/websocket_routes.py +51 -11
api/mindmaps.py
CHANGED
|
@@ -76,6 +76,7 @@ async def generate_mindmap(
|
|
| 76 |
|
| 77 |
# Create initial processing record
|
| 78 |
file_base = request.file_key.split('/')[-1].rsplit('.', 1)[0] if request.file_key else None
|
|
|
|
| 79 |
|
| 80 |
# Priority: 1. File-based name, 2. User Title (if not default 'string'), 3. Default timestamp
|
| 81 |
if file_base:
|
|
|
|
| 76 |
|
| 77 |
# Create initial processing record
|
| 78 |
file_base = request.file_key.split('/')[-1].rsplit('.', 1)[0] if request.file_key else None
|
| 79 |
+
print(f'file_base: {file_base}')
|
| 80 |
|
| 81 |
# Priority: 1. File-based name, 2. User Title (if not default 'string'), 3. Default timestamp
|
| 82 |
if file_base:
|
api/websocket_routes.py
CHANGED
|
@@ -117,6 +117,12 @@ async def unified_generate_ws(
|
|
| 117 |
|
| 118 |
elif task_type == "mindmap":
|
| 119 |
await handle_mindmap_task(connection_id, data, current_user, db)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
|
| 121 |
else:
|
| 122 |
await manager.send_error(connection_id, f"Unsupported task type: {task_type}")
|
|
@@ -146,8 +152,11 @@ async def handle_podcast_task(connection_id: str, data: Dict, current_user: db_m
|
|
| 146 |
return
|
| 147 |
source_id = source.id
|
| 148 |
|
|
|
|
|
|
|
|
|
|
| 149 |
db_podcast = db_models.Podcast(
|
| 150 |
-
title=
|
| 151 |
user_id=current_user.id,
|
| 152 |
source_id=source_id,
|
| 153 |
status="processing"
|
|
@@ -249,7 +258,15 @@ async def handle_flashcards_task(connection_id: str, data: Dict, current_user: d
|
|
| 249 |
source_id = source.id
|
| 250 |
|
| 251 |
# Create initial processing record
|
| 252 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 253 |
db_set = db_models.FlashcardSet(
|
| 254 |
title=title,
|
| 255 |
difficulty=data.get("difficulty", "medium"),
|
|
@@ -320,7 +337,15 @@ async def handle_quiz_task(connection_id: str, data: Dict, current_user: db_mode
|
|
| 320 |
source_id = source.id
|
| 321 |
|
| 322 |
# Create initial processing record
|
| 323 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 324 |
db_set = db_models.QuizSet(
|
| 325 |
title=title,
|
| 326 |
difficulty=data.get("difficulty", "medium"),
|
|
@@ -381,8 +406,11 @@ async def handle_video_task(connection_id: str, data: Dict, current_user: db_mod
|
|
| 381 |
await manager.send_error(connection_id, "Not authorized to access this file")
|
| 382 |
return
|
| 383 |
|
|
|
|
|
|
|
|
|
|
| 384 |
db_summary = db_models.VideoSummary(
|
| 385 |
-
title=
|
| 386 |
user_id=current_user.id,
|
| 387 |
source_id=source.id,
|
| 388 |
status="processing"
|
|
@@ -442,8 +470,11 @@ async def handle_report_task(connection_id: str, data: Dict, current_user: db_mo
|
|
| 442 |
return
|
| 443 |
source_id = source.id
|
| 444 |
|
|
|
|
|
|
|
|
|
|
| 445 |
db_report = db_models.Report(
|
| 446 |
-
title=
|
| 447 |
format_key=data.get("format_key", "custom"),
|
| 448 |
user_id=current_user.id,
|
| 449 |
source_id=source_id,
|
|
@@ -466,11 +497,11 @@ async def handle_report_task(connection_id: str, data: Dict, current_user: db_mo
|
|
| 466 |
if not content:
|
| 467 |
raise Exception("AI failed to generate report content")
|
| 468 |
|
| 469 |
-
|
| 470 |
-
|
| 471 |
-
title
|
| 472 |
-
|
| 473 |
-
|
| 474 |
db_report.content = content
|
| 475 |
db_report.status = "completed"
|
| 476 |
db.commit()
|
|
@@ -503,8 +534,17 @@ async def handle_mindmap_task(connection_id: str, data: Dict, current_user: db_m
|
|
| 503 |
return
|
| 504 |
source_id = source.id
|
| 505 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 506 |
db_mindmap = db_models.MindMap(
|
| 507 |
-
title=
|
| 508 |
user_id=current_user.id,
|
| 509 |
source_id=source_id,
|
| 510 |
status="processing"
|
|
|
|
| 117 |
|
| 118 |
elif task_type == "mindmap":
|
| 119 |
await handle_mindmap_task(connection_id, data, current_user, db)
|
| 120 |
+
|
| 121 |
+
elif task_type == "flashcards":
|
| 122 |
+
await handle_flashcards_task(connection_id, data, current_user, db)
|
| 123 |
+
|
| 124 |
+
elif task_type == "quiz":
|
| 125 |
+
await handle_quiz_task(connection_id, data, current_user, db)
|
| 126 |
|
| 127 |
else:
|
| 128 |
await manager.send_error(connection_id, f"Unsupported task type: {task_type}")
|
|
|
|
| 152 |
return
|
| 153 |
source_id = source.id
|
| 154 |
|
| 155 |
+
file_base = data.get("file_key").split('/')[-1].rsplit('.', 1)[0] if data.get("file_key") else None
|
| 156 |
+
title = f"Podcast-{file_base}" if file_base else f"Podcast {datetime.utcnow().strftime('%Y-%m-%d %H:%M')}"
|
| 157 |
+
|
| 158 |
db_podcast = db_models.Podcast(
|
| 159 |
+
title=title,
|
| 160 |
user_id=current_user.id,
|
| 161 |
source_id=source_id,
|
| 162 |
status="processing"
|
|
|
|
| 258 |
source_id = source.id
|
| 259 |
|
| 260 |
# Create initial processing record
|
| 261 |
+
file_base = data.get("file_key").split('/')[-1].rsplit('.', 1)[0] if data.get("file_key") else None
|
| 262 |
+
|
| 263 |
+
if file_base:
|
| 264 |
+
title = f"Flashcard-{file_base}"
|
| 265 |
+
elif data.get("topic") and data.get("topic") != "string":
|
| 266 |
+
title = data.get("topic")
|
| 267 |
+
else:
|
| 268 |
+
title = f"Flashcards {datetime.utcnow().strftime('%Y-%m-%d %H:%M')}"
|
| 269 |
+
|
| 270 |
db_set = db_models.FlashcardSet(
|
| 271 |
title=title,
|
| 272 |
difficulty=data.get("difficulty", "medium"),
|
|
|
|
| 337 |
source_id = source.id
|
| 338 |
|
| 339 |
# Create initial processing record
|
| 340 |
+
file_base = data.get("file_key").split('/')[-1].rsplit('.', 1)[0] if data.get("file_key") else None
|
| 341 |
+
|
| 342 |
+
if file_base:
|
| 343 |
+
title = f"Quiz-{file_base}"
|
| 344 |
+
elif data.get("topic") and data.get("topic") != "string":
|
| 345 |
+
title = data.get("topic")
|
| 346 |
+
else:
|
| 347 |
+
title = f"Quiz {datetime.utcnow().strftime('%Y-%m-%d %H:%M')}"
|
| 348 |
+
|
| 349 |
db_set = db_models.QuizSet(
|
| 350 |
title=title,
|
| 351 |
difficulty=data.get("difficulty", "medium"),
|
|
|
|
| 406 |
await manager.send_error(connection_id, "Not authorized to access this file")
|
| 407 |
return
|
| 408 |
|
| 409 |
+
file_base = data.get("file_key").split('/')[-1].rsplit('.', 1)[0] if data.get("file_key") else None
|
| 410 |
+
title = f"Video Summary {file_base}" if file_base else f"Video Summary {datetime.utcnow().strftime('%Y-%m-%d %H:%M')}"
|
| 411 |
+
|
| 412 |
db_summary = db_models.VideoSummary(
|
| 413 |
+
title=title,
|
| 414 |
user_id=current_user.id,
|
| 415 |
source_id=source.id,
|
| 416 |
status="processing"
|
|
|
|
| 470 |
return
|
| 471 |
source_id = source.id
|
| 472 |
|
| 473 |
+
file_base = data.get("file_key").split('/')[-1].rsplit('.', 1)[0] if data.get("file_key") else None
|
| 474 |
+
title = f"Report-{file_base}" if file_base else f"Report {data.get('format_key', 'custom')} {datetime.utcnow().strftime('%Y-%m-%d %H:%M')}"
|
| 475 |
+
|
| 476 |
db_report = db_models.Report(
|
| 477 |
+
title=title,
|
| 478 |
format_key=data.get("format_key", "custom"),
|
| 479 |
user_id=current_user.id,
|
| 480 |
source_id=source_id,
|
|
|
|
| 497 |
if not content:
|
| 498 |
raise Exception("AI failed to generate report content")
|
| 499 |
|
| 500 |
+
if not db_report.title or "Report-" not in db_report.title:
|
| 501 |
+
title = content.split('\n')[0].replace('#', '').strip()
|
| 502 |
+
if not title or len(title) < 3:
|
| 503 |
+
title = f"Report {data.get('format_key')}"
|
| 504 |
+
db_report.title = title
|
| 505 |
db_report.content = content
|
| 506 |
db_report.status = "completed"
|
| 507 |
db.commit()
|
|
|
|
| 534 |
return
|
| 535 |
source_id = source.id
|
| 536 |
|
| 537 |
+
file_base = data.get("file_key").split('/')[-1].rsplit('.', 1)[0] if data.get("file_key") else None
|
| 538 |
+
|
| 539 |
+
if file_base:
|
| 540 |
+
title = f"Mind Map-{file_base}"
|
| 541 |
+
elif data.get("title") and data.get("title") != "string":
|
| 542 |
+
title = data.get("title")
|
| 543 |
+
else:
|
| 544 |
+
title = f"Mind Map {datetime.utcnow().strftime('%Y-%m-%d %H:%M')}"
|
| 545 |
+
|
| 546 |
db_mindmap = db_models.MindMap(
|
| 547 |
+
title=title,
|
| 548 |
user_id=current_user.id,
|
| 549 |
source_id=source_id,
|
| 550 |
status="processing"
|