"""Insights use cases shared by the web UI and the REST API."""
from app.tiktok_api import VIDEO_PAGE_MAX, list_videos

MAX_PAGES = 10


def top_videos(token, limit=10, max_pages=MAX_PAGES):
    """Walk the account's videos page by page (TikTok returns at most 20 per page) and return
    {videos: the `limit` most viewed, total_views, counted: how many videos were summed}."""
    videos = []
    cursor = 0
    for _ in range(max_pages):
        page = list_videos(token, max_count=VIDEO_PAGE_MAX, cursor=cursor)
        videos.extend(page["videos"])
        if not page["has_more"]:
            break
        cursor = page["cursor"]
    ranked = sorted(videos, key=lambda v: int(v.get("view_count") or 0), reverse=True)
    return {
        "videos": ranked[:limit],
        "total_views": sum(int(v.get("view_count") or 0) for v in videos),
        "counted": len(videos),
    }
