func Pages.VideoInfo(tytd,ctx)
{
    var vid = ctx.QueryParams.TryGetFirst("v");
    tytd.PutVideoInfoIfNotExists(vid);
    var vi = tytd.GetVideo(vid);
    var html = <h1>Could not find video</h1>;

    if(vi != null)
    {
        html = <div class="col">
             <div class="min">   
                <img src={$"./api/v1/video-thumbnail?v={Net.Http.UrlEncode(vi.videoId)}"}>
            </div>
            <div class="min">
                <raw(Components.AddVideo($"https://www.youtube.com/watch?v={vi.videoId}"))>
            </div>
            <div class="min">
                <raw(Components.AddToPersonalList(tytd,vi.videoId))>
            </div>
            <div class="min">
                <h4>{vi.title}</h4>
                <a class="underline" href={$"./channel?id={Net.Http.UrlEncode(vi.channelId)}"}>{vi.author}</a>
                <p>{vi.shortDescription}</p>
            </div>
            
        </div>;
    }

    return Components.Shell(vi != null ? vi.title : "Could not find video", html, 1);
}