public VodList( DownloadForm parent, Twixel twixel ) { InitializeComponent(); DownloadWindow = parent; TwitchAPI = twixel; comboBoxService.Text = "Twitch (Recordings)"; objectListViewVideos.SecondarySortColumn = objectListViewVideos.GetColumn( "Video ID" ); objectListViewVideos.SecondarySortOrder = SortOrder.Ascending; comboBoxKnownUsers.Items.Add( " == No Preset == " ); comboBoxKnownUsers.Items.AddRange( UserInfoPersister.KnownUsers.ToArray() ); comboBoxKnownUsers.SelectedIndex = 0; buttonClear.Enabled = false; checkBoxAutoDownload.Enabled = false; if ( !Util.ShowDownloadFetched ) { buttonDownloadFetched.Enabled = false; buttonDownloadFetched.Hide(); buttonDownloadAllKnown.Enabled = false; buttonDownloadAllKnown.Hide(); checkBoxAutoDownload.Hide(); } if ( !Util.ShowAnySpecialButton ) { objectListViewVideos.Size = new Size( objectListViewVideos.Size.Width, objectListViewVideos.Size.Height + 29 ); } }
public VodList(DownloadForm parent) { InitializeComponent(); DownloadWindow = parent; comboBoxService.Text = "Twitch (Recordings)"; objectListViewVideos.SecondarySortColumn = objectListViewVideos.GetColumn("Video ID"); objectListViewVideos.SecondarySortOrder = SortOrder.Ascending; comboBoxKnownUsers.Items.Add(" == No Preset == "); comboBoxKnownUsers.Items.AddRange(UserInfoPersister.GetKnownUsers().ToArray()); comboBoxKnownUsers.SelectedIndex = 0; buttonClear.Enabled = false; checkBoxAutoDownload.Enabled = false; if (!Util.ShowDownloadFetched) { buttonDownloadFetched.Enabled = false; buttonDownloadFetched.Hide(); buttonDownloadAllKnown.Enabled = false; buttonDownloadAllKnown.Hide(); checkBoxAutoDownload.Hide(); } if (!Util.ShowAnySpecialButton) { objectListViewVideos.Size = new Size(objectListViewVideos.Size.Width, objectListViewVideos.Size.Height + 29); } }
public static void DownloadFetched(IEnumerable <IVideoInfo> videos, DownloadForm downloadWindow) { Console.WriteLine("Enqueueing " + videos.Count() + " videos..."); foreach (IVideoInfo videoInfo in videos) { Console.WriteLine("Enqueueing " + videoInfo.Username + "/" + videoInfo.VideoId); downloadWindow.CreateAndEnqueueJob(videoInfo); } }
public static async Task AutoDownload(IUserInfo[] users, DownloadForm downloadWindow) { Random rng = new Random(); for (int i = 0; i < users.Length; ++i) { var userInfo = users[i]; if (userInfo != null) { if (!userInfo.AutoDownload) { continue; } List <IVideoInfo> videos = new List <IVideoInfo>(); while (true) { downloadWindow.AddStatusMessage("[" + (i + 1).ToString() + "/" + users.Length.ToString() + "] Fetching " + userInfo.ToString() + "..."); try { FetchReturnValue fetchReturnValue; int Offset = 0; do { await Task.Delay(rng.Next(55000, 95000)); fetchReturnValue = await Fetch(userInfo, Offset, true); Offset += fetchReturnValue.VideoCountThisFetch; if (fetchReturnValue.Success) { videos.AddRange(fetchReturnValue.Videos); } } while (fetchReturnValue.Success && fetchReturnValue.HasMore); break; } catch (Exception ex) { downloadWindow.AddStatusMessage("Error during " + userInfo.ToString() + ": " + ex.ToString()); break; } } await Task.Delay(rng.Next(55000, 95000)); DownloadFetched(videos, downloadWindow); } } }
public static async Task AutoDownload( UserInfo[] users, Twixel twitchApi, DownloadForm downloadWindow ) { for ( int i = 0; i < users.Length; ++i ) { var userInfo = users[i]; if ( userInfo != null ) { if ( !userInfo.AutoDownload ) { continue; } List<IVideoInfo> videos = new List<IVideoInfo>(); while ( true ) { downloadWindow.SetAutoDownloadStatus( "[" + ( i + 1 ).ToString() + "/" + users.Length.ToString() + "] Fetching " + userInfo.ToString() + "..." ); try { FetchReturnValue fetchReturnValue; do { await Task.Delay( 15000 ); fetchReturnValue = await Fetch( twitchApi, userInfo, videos.Count ); if ( fetchReturnValue.Success ) { videos.AddRange( fetchReturnValue.Videos ); } } while ( fetchReturnValue.Success && fetchReturnValue.HasMore ); break; } catch ( Exception ex ) { // TODO: Better errorhandling? break; } } DownloadFetched( videos, downloadWindow ); } } }
public static void DownloadFetched( IEnumerable<IVideoInfo> videos, DownloadForm downloadWindow ) { Console.WriteLine( "Enqueueing " + videos.Count() + " videos..." ); foreach ( IVideoInfo videoInfo in videos ) { Console.WriteLine( "Enqueueing " + videoInfo.Username + "/" + videoInfo.VideoId ); if ( videoInfo.VideoType == VideoFileType.M3U ) { downloadWindow.CreateAndEnqueueJob( videoInfo ); } for ( int i = 0; i < DownloadForm.MaxRunningJobs; ++i ) { Task.Run( () => downloadWindow.RunJob() ); } } }
public VideoSplitWindow(DownloadForm downloadForm) { this.downloadForm = downloadForm; InitializeComponent(); }