diff --git a/FoxTube/Controls/PlaylistCard.xaml.cs b/FoxTube/Controls/PlaylistCard.xaml.cs index dd1c4cc..b4d3bde 100644 --- a/FoxTube/Controls/PlaylistCard.xaml.cs +++ b/FoxTube/Controls/PlaylistCard.xaml.cs @@ -53,8 +53,8 @@ namespace FoxTube.Controls try { - thumbnail.Source = new BitmapImage(new Uri(item.Snippet.Thumbnails.Standard.Url)); - avatar.ProfilePicture = new BitmapImage(new Uri((await r.ExecuteAsync()).Items[0].Snippet.Thumbnails.Standard.Url)); + thumbnail.Source = new BitmapImage(new Uri(item.Snippet.Thumbnails.Medium.Url)); + avatar.ProfilePicture = new BitmapImage(new Uri((await r.ExecuteAsync()).Items[0].Snippet.Thumbnails.Medium.Url)); } catch { } } @@ -65,7 +65,7 @@ namespace FoxTube.Controls private void Button_Click(object sender, RoutedEventArgs e) { - //Goto playlist + Methods.MainPage.GoToPlaylist(item.Id); } } } diff --git a/FoxTube/Pages/MainPage.xaml b/FoxTube/Pages/MainPage.xaml index 7c2ef53..cae4469 100644 --- a/FoxTube/Pages/MainPage.xaml +++ b/FoxTube/Pages/MainPage.xaml @@ -98,7 +98,7 @@ --> - + - + + + + + + + + + + + + + + + + + - + + + - - - - - + + + + + + + + + + + - - - - - - - + + diff --git a/FoxTube/Pages/PlaylistPage.xaml.cs b/FoxTube/Pages/PlaylistPage.xaml.cs index 2ec6f8e..2b3a0f7 100644 --- a/FoxTube/Pages/PlaylistPage.xaml.cs +++ b/FoxTube/Pages/PlaylistPage.xaml.cs @@ -1,16 +1,21 @@ -using System; +using FoxTube.Controls; +using Google.Apis.YouTube.v3; +using Google.Apis.YouTube.v3.Data; +using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.Foundation; using Windows.Foundation.Collections; +using Windows.System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; using Windows.UI.Xaml.Navigation; // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238 @@ -22,9 +27,99 @@ namespace FoxTube.Pages /// public sealed partial class PlaylistPage : Page { + string playlistId; + Playlist item; + + LoadingPage loading; + VideoGrid list; + public PlaylistPage() { this.InitializeComponent(); + loading = grid.Children[2] as LoadingPage; + list = ((grid.Children[0] as ScrollViewer).Content as Grid).Children[1] as VideoGrid; + loading.RefreshPage += refresh_Click; + } + + protected override void OnNavigatedTo(NavigationEventArgs e) + { + base.OnNavigatedTo(e); + if (e.Parameter == null) + loading.Error("NullReferenceException", "Unable to initialize search. Search term is not stated."); + else + Initialize(e.Parameter as string); + + + } + + public async void Initialize(string id) + { + loading.Refresh(); + + //try + { + playlistId = id; + PlaylistsResource.ListRequest request = SecretsVault.Service.Playlists.List("snippet,contentDetails"); + request.Id = id; + + item = (await request.ExecuteAsync()).Items[0]; + + title.Text = item.Snippet.Title; + info.Text = $"{item.ContentDetails.ItemCount} videos"; + description.Text = item.Snippet.Description; + + channelName.Text = item.Snippet.ChannelTitle; + + try + { + thumbnail.Source = new BitmapImage(new Uri(item.Snippet.Thumbnails.Medium.Url)); + ChannelsResource.ListRequest channelRequest = SecretsVault.NoAuthService.Channels.List("snippet"); + channelRequest.Id = item.Snippet.ChannelId; + Google.Apis.YouTube.v3.Data.Channel channel = (await channelRequest.ExecuteAsync()).Items[0]; + avatar.ProfilePicture = new BitmapImage(new Uri(channel.Snippet.Thumbnails.Medium.Url)); + } + catch { } + + PlaylistItemsResource.ListRequest listRequest = SecretsVault.NoAuthService.PlaylistItems.List("contentDetails"); + listRequest.PlaylistId = item.Id; + listRequest.MaxResults = 50; + + PlaylistItemListResponse response = await listRequest.ExecuteAsync(); + + list.Clear(); + foreach (PlaylistItem i in response.Items) + list.Add(new VideoCard(i.ContentDetails.VideoId)); + + while (response.NextPageToken != null) + { + listRequest.PageToken = response.NextPageToken; + response = await listRequest.ExecuteAsync(); + + foreach (PlaylistItem i in response.Items) + list.Add(new VideoCard(i.ContentDetails.VideoId)); + } + + loading.Close(); + } + //catch + { + loading.Error(); + } + } + + private void toChannel_Click(object sender, RoutedEventArgs e) + { + Methods.MainPage.GoToChannel(item.Snippet.ChannelId); + } + + private async void inBrowser_Click(object sender, RoutedEventArgs e) + { + await Launcher.LaunchUriAsync(new Uri($"https://www.youtube.com/playlist?list={item.Id}")); + } + + private void refresh_Click(object sender, RoutedEventArgs e) + { + Initialize(playlistId); } } }