public MetadataSource(MetadataPlugin plugin) { if (plugin is null) { throw new ArgumentNullException(nameof(plugin)); } metadataPlugin = plugin; }
public void DownloadPluginData(MetadataPlugin plugin) { var res = dialogs.ActivateGlobalProgress((args) => { var provider = plugin.GetMetadataProvider(new MetadataRequestOptions(EditingGame, false)); if (provider != null) { try { var fieldArgs = new GetMetadataFieldArgs { CancelToken = args.CancelToken }; var metadata = new GameMetadata { Name = provider.GetName(fieldArgs), Genres = provider.GetGenres(fieldArgs)?.Where(a => a != null).ToHashSet(), ReleaseDate = provider.GetReleaseDate(fieldArgs), Developers = provider.GetDevelopers(fieldArgs)?.Where(a => a != null).ToHashSet(), Publishers = provider.GetPublishers(fieldArgs)?.Where(a => a != null).ToHashSet(), Tags = provider.GetTags(fieldArgs)?.Where(a => a != null).ToHashSet(), Features = provider.GetFeatures(fieldArgs)?.Where(a => a != null).ToHashSet(), Description = provider.GetDescription(fieldArgs), Links = provider.GetLinks(fieldArgs)?.Where(a => a != null).ToList(), CriticScore = provider.GetCriticScore(fieldArgs), CommunityScore = provider.GetCommunityScore(fieldArgs), AgeRatings = provider.GetAgeRatings(fieldArgs)?.Where(a => a != null).ToHashSet(), Series = provider.GetSeries(fieldArgs)?.Where(a => a != null).ToHashSet(), Regions = provider.GetRegions(fieldArgs)?.Where(a => a != null).ToHashSet(), Platforms = provider.GetPlatforms(fieldArgs)?.Where(a => a != null).ToHashSet(), Icon = provider.GetIcon(fieldArgs), CoverImage = provider.GetCoverImage(fieldArgs), BackgroundImage = provider.GetBackgroundImage(fieldArgs) }; Application.Current.Dispatcher.Invoke(() => PreviewGameData(ConvertGameInfo(metadata))); } finally { provider.Dispose(); } } }, new GlobalProgressOptions(LOC.DownloadingLabel) { IsIndeterminate = true, Cancelable = true }); if (res.Error != null) { logger.Error(res.Error, string.Format("Failed to download metadata, {0}, {1}", Game.PluginId, Game.GameId)); dialogs.ShowMessage( string.Format(resources.GetString("LOCMetadataDownloadError"), res.Error.Message), resources.GetString("LOCDownloadError"), MessageBoxButton.OK, MessageBoxImage.Error); } }
public MetadataSession Start() { MetadataHooks hooks = new MetadataHooks(); MetadataPlugin plugin = new MetadataPlugin(hooks); CoordinatorService coordinator = new CoordinatorBuilder() .WithHash(FileHash.Random()) .WithPipeline(pipeline) .WithPlugin(plugin) .Build(); return(new MetadataSession(coordinator, plugin)); }
public MenuGenerator(IAppContext context, MetadataPlugin plugin) { if (context == null) { throw new ArgumentNullException("context"); } // if (pluginManager == null) throw new ArgumentNullException("pluginManager"); _plugin = plugin; _context = context; _menuManager = _context.MainView.RibbonManager; _commands = new YutaiCommands(_context, plugin.Identity); _commands.Plugin = plugin; InitMenus(); }
public async void DownloadPluginData(MetadataPlugin plugin) { ProgressVisible = true; await Task.Run(() => { try { var provider = plugin.GetMetadataProvider(new MetadataRequestOptions(EditingGame, false)); if (provider != null) { try { var gameInfo = new GameInfo { Name = provider.GetName(), Genres = provider.GetGenres(), ReleaseDate = provider.GetReleaseDate(), Developers = provider.GetDevelopers(), Publishers = provider.GetPublishers(), Tags = provider.GetTags(), Features = provider.GetFeatures(), Description = provider.GetDescription(), Links = provider.GetLinks(), CriticScore = provider.GetCriticScore(), CommunityScore = provider.GetCommunityScore(), AgeRating = provider.GetAgeRating(), Series = provider.GetSeries(), Region = provider.GetRegion(), Platform = provider.GetPlatform() }; var metadata = new GameMetadata { GameInfo = gameInfo, Icon = provider.GetIcon(), CoverImage = provider.GetCoverImage(), BackgroundImage = provider.GetBackgroundImage() }; Application.Current.Dispatcher.Invoke(() => PreviewGameData(metadata)); } finally { provider.Dispose(); } } } catch (Exception exc) when(!PlayniteEnvironment.ThrowAllErrors) { logger.Error(exc, string.Format("Failed to download metadata, {0}, {1}", Game.PluginId, Game.GameId)); dialogs.ShowMessage( string.Format(resources.GetString("LOCMetadataDownloadError"), exc.Message), resources.GetString("LOCDownloadError"), MessageBoxButton.OK, MessageBoxImage.Error); } finally { ProgressVisible = false; } }); }
public MetadataSession(CoordinatorService coordinator, MetadataPlugin plugin) { this.coordinator = coordinator; this.plugin = plugin; }