private async void TextBox_TextChanged(object sender, TextChangedEventArgs e) { try { if (YoutubeHelpers.TryParsePlaylistId(PlaylistLinkTextBox.Text, out string playlistId)) { _ = Task.Run(async() => { Playlist basePlaylist = await client.Playlists.GetAsync(playlistId).ConfigureAwait(false); list = new FullPlaylist(basePlaylist, await client.Playlists.GetVideosAsync(basePlaylist.Id).BufferAsync().ConfigureAwait(false)); VideoList = new List <Video>(); await UpdatePlaylistInfo(Visibility.Visible, list.BasePlaylist.Title, list.BasePlaylist.Author, list.BasePlaylist.Engagement.ViewCount.ToString(), list.Videos.Count().ToString(), $"https://img.youtube.com/vi/{list?.Videos?.FirstOrDefault()?.Id}/0.jpg", true, true); }).ConfigureAwait(false); } else if (YoutubeHelpers.TryParseChannelId(PlaylistLinkTextBox.Text, out string channelId)) { _ = Task.Run(async() => { channel = await client.Channels.GetAsync(channelId).ConfigureAwait(false); list = new FullPlaylist(null, null); VideoList = await client.Channels.GetUploadsAsync(channel.Id).BufferAsync().ConfigureAwait(false);; await UpdatePlaylistInfo(Visibility.Visible, channel.Title, totalVideos: VideoList.Count().ToString(), imageUrl: channel.LogoUrl, downloadEnabled: true, showIndexes: true); }).ConfigureAwait(false); } else if (YoutubeHelpers.TryParseUsername(PlaylistLinkTextBox.Text, out string username)) { _ = Task.Run(async() => { var channel = await client.Channels.GetByUserAsync(username).ConfigureAwait(false); list = new FullPlaylist(null, null); VideoList = await client.Channels.GetUploadsAsync(channel.Id).BufferAsync().ConfigureAwait(false); await UpdatePlaylistInfo(Visibility.Visible, channel.Title, totalVideos: VideoList.Count().ToString(), imageUrl: channel.LogoUrl, downloadEnabled: true, showIndexes: true); }).ConfigureAwait(false); } else if (YoutubeHelpers.TryParseVideoId(PlaylistLinkTextBox.Text, out string videoId)) { _ = Task.Run(async() => { var video = await client.Videos.GetAsync(videoId); VideoList = new List <Video> { video }; list = new FullPlaylist(null, null); await UpdatePlaylistInfo(Visibility.Visible, video.Title, video.Author, video.Engagement.ViewCount.ToString(), string.Empty, $"https://img.youtube.com/vi/{video.Id}/0.jpg", true, false); }).ConfigureAwait(false); } else { await UpdatePlaylistInfo().ConfigureAwait(false); } } catch (Exception ex) { await GlobalConsts.Log(ex.ToString(), "MainPage TextBox_TextChanged"); await GlobalConsts.ShowMessage((string)FindResource("Error"), ex.Message); } }
private async void TextBox_TextChanged(object sender, TextChangedEventArgs e) { try { if (YoutubeClient.TryParsePlaylistId(PlaylistLinkTextBox.Text, out string playlistId)) { _ = Task.Run(async() => { list = await client.GetPlaylistAsync(playlistId).ConfigureAwait(false); VideoList.Clear(); await UpdatePlaylistInfo(Visibility.Visible, list.Title, list.Author, list.Statistics.ViewCount.ToString(), list.Videos.Count.ToString(), $"https://img.youtube.com/vi/{list?.Videos?.FirstOrDefault()?.Id}/0.jpg", true, true); }).ConfigureAwait(false); } else if (YoutubeClient.TryParseChannelId(PlaylistLinkTextBox.Text, out string channelId)) { _ = Task.Run(async() => { channel = await client.GetChannelAsync(channelId).ConfigureAwait(false); list = await client.GetPlaylistAsync(channel.GetChannelVideosPlaylistId()); VideoList.Clear(); await UpdatePlaylistInfo(Visibility.Visible, channel.Title, list.Author, list.Statistics.ViewCount.ToString(), list.Videos.Count.ToString(), channel.LogoUrl, true, true); }).ConfigureAwait(false); } else if (YoutubeClient.TryParseUsername(PlaylistLinkTextBox.Text, out string username)) { _ = Task.Run(async() => { string channelID = await client.GetChannelIdAsync(username).ConfigureAwait(false); var channel = await client.GetChannelAsync(channelID).ConfigureAwait(false); list = await client.GetPlaylistAsync(channel.GetChannelVideosPlaylistId()).ConfigureAwait(false); VideoList.Clear(); await UpdatePlaylistInfo(Visibility.Visible, channel.Title, list.Author, list.Statistics.ViewCount.ToString(), list.Videos.Count.ToString(), channel.LogoUrl, true, true); }).ConfigureAwait(false); } else if (YoutubeClient.TryParseVideoId(PlaylistLinkTextBox.Text, out string videoId)) { _ = Task.Run(async() => { var video = await client.GetVideoAsync(videoId); VideoList.Clear(); VideoList.Add(video); list = null; await UpdatePlaylistInfo(Visibility.Visible, video.Title, video.Author, video.Statistics.ViewCount.ToString(), string.Empty, $"https://img.youtube.com/vi/{video.Id}/0.jpg", true, false); }).ConfigureAwait(false); } else { await UpdatePlaylistInfo().ConfigureAwait(false); } } catch (Exception ex) { await GlobalConsts.Log(ex.ToString(), "MainPage TextBox_TextChanged"); await GlobalConsts.ShowMessage((string)FindResource("Error"), ex.Message); } }
async void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { await GlobalConsts.ShowMessage((string)FindResource("Error"), (string)FindResource("ErrorMessage")); await GlobalConsts.Log($"{e.Exception}", "Unhandled exception"); // Don't crash at the moment of truth >.< #if !DEBUG e.Handled = true; #endif }
private void BulkDownloadButton_Click(object sender, RoutedEventArgs e) { var links = BulkLinksTextBox.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (!CanDownload()) { GlobalConsts.ShowMessage((string)FindResource("Error"), $"{string.Format((string)FindResource("FileDoesNotExist"), GlobalConsts.FFmpegFilePath)}").ConfigureAwait(false); return; } _ = DownloadPage.SequenceDownload(links, GlobalConsts.DownloadSettings.Clone(), silent: true); BulkLinksTextBox.Text = string.Empty; MetroAnimatedTabControl.SelectedItem = QueueMetroTabItem; }
private void DownloadInBackgroundButton_Click(object sender, RoutedEventArgs e) { if (list != null || VideoList.Any()) { if (!CanDownload()) { GlobalConsts.ShowMessage((string)FindResource("Error"), $"{string.Format((string)FindResource("FileDoesNotExist"), GlobalConsts.FFmpegFilePath)}").ConfigureAwait(false); return; } new DownloadPage(list, GlobalConsts.DownloadSettings.Clone(), silent: true, videos: VideoList); VideoList = new List <PlaylistVideo>(); PlaylistLinkTextBox.Text = string.Empty; } }
private async void UpdateButton_Click(object sender, System.Windows.RoutedEventArgs e) { try { using (var wc = new WebClient()) { var latestVersion = Version.Parse(await wc.DownloadStringTaskAsync("https://raw.githubusercontent.com/shaked6540/YoutubePlaylistDownloader/master/YoutubePlaylistDownloader/latestVersionWithRevision.txt")); if (latestVersion > GlobalConsts.VERSION) { var changelog = await wc.DownloadStringTaskAsync("https://raw.githubusercontent.com/shaked6540/YoutubePlaylistDownloader/master/YoutubePlaylistDownloader/changelog.txt"); var dialogSettings = new MetroDialogSettings() { AffirmativeButtonText = $"{FindResource("UpdateNow")}", NegativeButtonText = $"{FindResource("No")}", FirstAuxiliaryButtonText = $"{FindResource("UpdateWhenIExit")}", ColorScheme = MetroDialogColorScheme.Theme, DefaultButtonFocus = MessageDialogResult.Affirmative, }; var update = await GlobalConsts.Current.ShowMessageAsync($"{FindResource("NewVersionAvailable")}", $"{FindResource("DoYouWantToUpdate")}\n{changelog}", MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, dialogSettings); if (update == MessageDialogResult.Affirmative) { GlobalConsts.LoadPage(new DownloadUpdate(latestVersion, changelog)); } else if (update == MessageDialogResult.FirstAuxiliary) { GlobalConsts.UpdateControl = new DownloadUpdate(latestVersion, changelog, true).UpdateLaterStillDownloading(); } } else { await GlobalConsts.ShowMessage($"{FindResource("NoUpdates")}", $"{FindResource("NoUpdatesAvailable")}"); } } } catch (Exception ex) { await GlobalConsts.Log(ex.ToString(), "About UpdateButton_Click"); await GlobalConsts.ShowMessage($"{FindResource("Error")}", $"{FindResource("CannotUpdate")} {ex.Message}"); } }