Exemplo n.º 1
0
        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);
                }
            }
        }