from flask import url_for, session, redirect, render_template, request
from yt_dlp import YoutubeDL
from wonderwords import RandomWord
from numpy import random

def index_red():
    if "is_visited" not in session:
       session["is_visited"]=False 
    if session["is_visited"]==False:
        session["is_visited"]=True
        return render_template("not_visited_yet.html")
    else:                                                                       
        return render_template("index.html",topics=session["topics_info"])


def topic_receive():
    rw = RandomWord()
    
    topics_str = request.form["topics"]
    topics_list = topics_str.split(",")
    while len(topics_list) < 12:
        if topics_list:
            topics_list.append(topics_list[random.randint(0, len(topics_list)-1)] + rw.word())
        else:
            topics_list.append(rw.word())
    
    if "topics" not in session:
        session["topics"] = []
    session["topics"] = topics_list
    vid_info_project = {}
    for x in session["topics"]:
        url = f"ytsearch:{x}"
        ydl_opts = {'quiet': True, 'skip_download': True}
        with YoutubeDL(ydl_opts) as ydl:
            info = ydl.extract_info(url, download=False)
            if not info['entries']:
                continue
            video = info['entries'][0]
            formats = video.get('formats', [])
            mp4_formats = [f for f in formats if f.get('ext') == 'mp4' and f.get('height')]
            if mp4_formats:
                mp4_formats.sort(key=lambda f: f['height'], reverse=True)
                video_url = mp4_formats[0]['url']
            else:
                video_url = video.get('url')

            vid_info_project[video.get('title')] = {
                "screen": video.get('thumbnail'),
                "url": video_url
            }
    if "topics_info" not in session:
        session["topics_info"] = {}
    session["topics_info"] = vid_info_project
    return redirect(url_for("base_web"))


def get_vid():
    url_stream=request.args.get("url")
    return render_template("video_page.html",url=url_stream)
    