Beispiel #1
0
        private async void GetData()
        {
            Globals.StatusBar.ProgressPercentage = 0;
            Globals.StatusBar.IsWorkProcessing   = true;
            Globals.StatusBar.ProgressText       = "Retrieving Data";
            try
            {
                using (Vndb client = new Vndb(true))
                {
                    bool           hasMore = true;
                    RequestOptions ro      = new RequestOptions {
                        Count = 25
                    };
                    int pageCount      = 1;
                    int characterCount = 0;
                    int releasesCount  = 0;


                    List <Character> characterList = new List <Character>();
                    while (hasMore)
                    {
                        ro.Page = pageCount;
                        VndbResponse <Character> characters = await client.GetCharacterAsync(VndbFilters.VisualNovel.Equals(_vnid), VndbFlags.FullCharacter, ro);

                        if (characters != null)
                        {
                            hasMore = characters.HasMore;
                            characterList.AddRange(characters.Items);
                            characterCount = characterCount + characters.Count;
                            pageCount++;
                        }
                        if (characters != null)
                        {
                            continue;
                        }
                        HandleError.HandleErrors(client.GetLastError(), 0);
                        return;
                    }

                    hasMore   = true;
                    pageCount = 1;
                    //do progress here

                    VndbResponse <VisualNovel> visualNovels = await client.GetVisualNovelAsync(VndbFilters.Id.Equals(_vnid), VndbFlags.FullVisualNovel);

                    if (visualNovels == null)
                    {
                        HandleError.HandleErrors(client.GetLastError(), 0);
                        return;
                    }



                    List <Release> releaseList = new List <Release>();
                    while (hasMore)
                    {
                        ro.Page = pageCount;
                        VndbResponse <Release> releases = await client.GetReleaseAsync(VndbFilters.VisualNovel.Equals(_vnid), VndbFlags.FullRelease, ro);

                        if (releases == null)
                        {
                            HandleError.HandleErrors(client.GetLastError(), 0);
                            break;
                        }
                        hasMore = releases.HasMore;
                        releaseList.AddRange(releases.Items);
                        releasesCount = releasesCount + releases.Count;
                        pageCount++;
                    }


                    _progressIncrement = (double)100 / (1 + characterCount);
                    //await save vn data here
                    Globals.StatusBar.ProgressText   = "Processing Data";
                    Globals.StatusBar.IsDbProcessing = true;
                    await AddToDatabase(visualNovels, releaseList, characterList);
                }
            }
            catch (Exception ex)
            {
                Globals.Logger.Error(ex);
                throw;
            }
        }