コード例 #1
0
        private void ButtonOK_Click(object sender, RoutedEventArgs e)
        {
            var id = ((SearchResult)ListSearch.SelectedItem).Id;

            Task.Factory.StartNew(() =>
            {
                TextDownloading.Dispatcher.Invoke(() =>
                {
                    ListSearch.Visibility      = Visibility.Hidden;
                    TextDownloading.Visibility = Visibility.Visible;
                    ButtonOK.IsEnabled         = false;
                    ButtonCancel.IsEnabled     = false;
                });

                try
                {
                    switch (provider)
                    {
                    case MetadataProvider.Wiki:
                        var wiki     = new Wikipedia();
                        var page     = wiki.GetPage(id);
                        MetadataData = wiki.ParseGamePage(page, searchTerm);
                        break;

                    case MetadataProvider.IGDB:
                        var igdb     = new IGDB();
                        MetadataData = igdb.GetParsedGame(UInt64.Parse(id));
                        break;
                    }
                }
                catch (Exception exc)
                {
#if DEBUG
                    logger.Error(exc, "Failed to download metadata from meta page.");
#else
                    logger.Warn(exc, "Failed to download metadata from meta page.");
#endif

                    Dispatcher.Invoke(() =>
                    {
                        PlayniteMessageBox.Show("Didn't found any relevant information about game \"" + searchTerm + "\" on specified page.");
                    });

                    TextDownloading.Dispatcher.Invoke(() =>
                    {
                        ListSearch.Visibility      = Visibility.Visible;
                        TextDownloading.Visibility = Visibility.Hidden;
                        ButtonOK.IsEnabled         = true;
                        ButtonCancel.IsEnabled     = true;
                    });

                    return;
                }

                Dispatcher.Invoke(() =>
                {
                    DialogResult = true;
                    Close();
                });
            });
        }
コード例 #2
0
ファイル: WikipediaTests.cs プロジェクト: tjhrulz/Playnite
        public void ParseGamePage_MetadataParsingTest()
        {
            var wiki = new Wikipedia();

            // Standard page
            var game = wiki.ParseGamePage(wiki.GetPage("Guild Wars 2"));

            ValidateGameDate(game);
            ValidateBoxArt(game);

            // Without title in info box
            game = wiki.ParseGamePage(wiki.GetPage("Kingpin: Life of Crime"));
            ValidateGameDate(game);
            ValidateBoxArt(game);

            // Multiple release dates
            game = wiki.ParseGamePage(wiki.GetPage("Command & Conquer: Red Alert"));
            ValidateGameDate(game);
            ValidateBoxArt(game);

            // Multiple developers
            game = wiki.ParseGamePage(wiki.GetPage("Counter-Strike: Global Offensive"));
            ValidateGameDate(game);
            ValidateBoxArt(game);

            // Different page laytout
            game = wiki.ParseGamePage(wiki.GetPage("Quake III Arena"));
            ValidateGameDate(game);
            ValidateBoxArt(game);

            // Multiple property tables
            game = wiki.ParseGamePage(wiki.GetPage("Lotus_(series)"), "Lotus Turbo Challenge 2");
            ValidateGameDate(game);
            ValidateBoxArt(game);

            game = wiki.ParseGamePage(wiki.GetPage("TrackMania"), "TrackMania United");
            ValidateGameDate(game);
            ValidateBoxArt(game);

            // No image
            game = wiki.ParseGamePage(wiki.GetPage("State of War (video game)"));
            ValidateGameDate(game);

            // Different formats
            game = wiki.ParseGamePage(wiki.GetPage("Dungeon Siege"));
            ValidateGameDate(game);

            game = wiki.ParseGamePage(wiki.GetPage("MotoGP 3: Ultimate Racing Technology"));
            ValidateGameDate(game);

            game = wiki.ParseGamePage(wiki.GetPage("Quake 4"));
            ValidateGameDate(game);

            game = wiki.ParseGamePage(wiki.GetPage("DEFCON (video game)"));
            ValidateGameDate(game);

            game = wiki.ParseGamePage(wiki.GetPage("Kid Chaos (video game)"));
            ValidateGameDate(game);

            game = wiki.ParseGamePage(wiki.GetPage("StarCraft II: Wings of Liberty"));
            ValidateGameDate(game);

            game = wiki.ParseGamePage(wiki.GetPage("V-Rally"));
            ValidateGameDate(game);
        }