@using InnerTube.Models @using System.Web @model LightTube.Contexts.ChannelContext @{ ViewBag.Metadata = new Dictionary<string, string>(); ViewBag.Metadata["og:title"] = Model.Channel.Name; ViewBag.Metadata["og:url"] = $"{Url.ActionContext.HttpContext.Request.Scheme}://{Url.ActionContext.HttpContext.Request.Host}{Url.ActionContext.HttpContext.Request.Path}{Url.ActionContext.HttpContext.Request.QueryString}"; ViewBag.Metadata["og:image"] = $"{Url.ActionContext.HttpContext.Request.Scheme}://{Url.ActionContext.HttpContext.Request.Host}/proxy/image?url={HttpUtility.UrlEncode(Model.Channel.Avatars.FirstOrDefault()?.Url?.ToString())}"; ViewBag.Metadata["twitter:card"] = $"{Url.ActionContext.HttpContext.Request.Scheme}://{Url.ActionContext.HttpContext.Request.Host}/proxy/image?url={HttpUtility.UrlEncode(Model.Channel.Avatars.LastOrDefault()?.Url?.ToString())}"; ViewBag.Metadata["og:description"] = Model.Channel.Description; ViewBag.Title = Model.Channel.Name; Layout = "_Layout"; DynamicItem[] contents; try { contents = ((ItemSectionItem)((ItemSectionItem)Model.Channel.Videos[0]).Contents[0]).Contents; } catch { contents = Model.Channel.Videos; } } <div class="channel-page"> @if (Model.Channel.Banners.Length > 0) { <img class="channel-banner" alt="Channel Banner" src="@Model.Channel.Banners.Last().Url"> } <div class="channel-info-container"> <div class="channel-info"> <a href="/channel/@Model.Channel.Id" class="avatar"> <img src="@Model.Channel.Avatars.LastOrDefault()?.Url" alt="Channel Avatar"> </a> <div class="name"> <a>@Model.Channel.Name</a> <span>@Model.Channel.Subscribers</span> </div> <button class="subscribe-button" data-cid="@Model.Channel.Id">Subscribe</button> </div> </div> <h3>About</h3> <p>@Html.Raw(Model.Channel.GetHtmlDescription())</p> <br><br> <h3>Uploads</h3> <div class="video-grid"> @foreach (VideoItem video in contents.Where(x => x is VideoItem).Cast<VideoItem>()) { <a href="/watch?v=@video.Id" class="video"> <div class="thumbnail" style="background-image: url('@video.Thumbnails.LastOrDefault()?.Url')"><span class="video-length">@video.Duration</span></div> <div class="info"> <span class="title max-lines-2">@video.Title</span> <div> <div> <span>@video.Views views</span> <span>@video.UploadedAt</span> </div> </div> </div> </a> } </div> <div class="pagination-buttons"> @if (!string.IsNullOrWhiteSpace(Model.ContinuationToken)) { <a href="/channel?id=@Model.Id">First Page</a> } <div class="divider"></div> <span>•</span> <div class="divider"></div> @if (!string.IsNullOrWhiteSpace(contents.FirstOrDefault(x => x is ContinuationItem)?.Id)) { <a href="/channel/@Model.Id?continuation=@(contents.FirstOrDefault(x => x is ContinuationItem)?.Id)">Next Page</a> } </div> </div>