"""Final5 runtime: remove duplicate topic box, improve Qwen topic knowledge output, fix Shorts direct playback."""
import re, time
from urllib.parse import quote
import ai_runtime_final4 as f4
from ai_runtime_final4 import app, base, rt, HTMLResponse, JSONResponse, Request, Query
# Remove topic/root endpoints to override.
_PATCH={('/api/topic_post','POST'),('/','GET')}
app.router.routes=[r for r in app.router.routes if not any(getattr(r,'path',None)==p and m in getattr(r,'methods',set()) for p,m in _PATCH)]
def clean(s):
import html as html_lib
return re.sub(r"\s+"," ",html_lib.unescape(s or "")).strip()
def _topic_image(topic):
try:return base.pollinations_image_url(topic)
except Exception:return "https://image.pollinations.ai/prompt/"+quote("Vietnamese educational editorial illustration "+topic)+"?width=1024&height=576&nologo=true"
@app.post('/api/topic_post')
async def topic_post_knowledge(request:Request):
body=await request.json();topic=clean(body.get('topic',''))
if not topic:return JSONResponse({'error':'missing topic'},status_code=400)
img=_topic_image(topic)
prompt=f"""Người dùng muốn đăng một bài trên Tường AI về chủ đề: "{topic}".
Hãy viết NGAY nội dung kiến thức/thông tin hữu ích về chủ đề đó, không lập dàn ý chung chung, không nói "có thể viết", không hướng dẫn cách viết.
Yêu cầu đầu ra:
- Tiêu đề hấp dẫn, cụ thể.
- 1 đoạn mở đầu giải thích trực tiếp chủ đề là gì/vì sao đáng chú ý.
- 5-7 đoạn hoặc ý chính cung cấp kiến thức thực chất, ví dụ, bối cảnh, tác động, hiểu lầm thường gặp, điểm cần lưu ý.
- Nếu chủ đề là thể thao, hãy nói về bối cảnh, nhân vật/đội bóng, ý nghĩa chiến thuật hoặc lịch sử liên quan.
- Nếu chủ đề là công nghệ/khoa học/xã hội, hãy giải thích khái niệm, ứng dụng, rủi ro/lợi ích, ví dụ thực tế.
- Không bịa số liệu thời sự mới; nếu không chắc, dùng cách nói thận trọng.
- Viết như bài đăng hoàn chỉnh để đọc được ngay.
- Cuối bài thêm: Nguồn tham khảo: Qwen2.5-VL / kiến thức tổng hợp.
"""
text=await base.qwen_generate(prompt,image_url=img,max_tokens=1400)
if not text:
text=f"{topic}\n\n{topic} là một chủ đề có nhiều khía cạnh cần nhìn từ bối cảnh, ý nghĩa thực tế và tác động đối với người quan tâm. Bài viết này tóm lược các điểm quan trọng nhất để người đọc hiểu nhanh vấn đề, thay vì chỉ liệt kê tiêu đề hoặc dàn ý.\n\nNguồn tham khảo: Qwen2.5-VL / kiến thức tổng hợp."
post=base.make_post(topic,text,img,'','topic_qwen',sources=[{'title':'Qwen2.5-VL / kiến thức tổng hợp','url':'','via':'Qwen2.5-VL'}])
post['images']=[img]
posts=base._load_ai_wall();posts.insert(0,post);base._save_ai_wall(posts)
return JSONResponse({'post':post})
FINAL5_INJECT=r'''
'''
@app.get('/')
async def index_final5():
html=f4.f3.f2.f1._load_index_html();body=getattr(rt.old,'PATCH_INJECT','')+f4.f3.f2.f1.FINAL_INJECT+f4.f3.FINAL3_INJECT+f4.FINAL4_INJECT+FINAL5_INJECT
return HTMLResponse(html.replace('