/// <summary> /// Fetches the images. /// </summary> /// <param name="game">The game.</param> /// <param name="mediaType">Type of the media.</param> /// <param name="type">The type.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{IEnumerable{RemoteImageInfo}}.</returns> private async Task<IEnumerable<RemoteImageInfo>> FetchImages(Game game, EmuMoviesMediaTypes mediaType, ImageType type, CancellationToken cancellationToken) { var sessionId = await Plugin.Instance.GetEmuMoviesToken(cancellationToken); var list = new List<RemoteImageInfo>(); if (sessionId == null) return list; var url = string.Format(EmuMoviesUrls.Search, HttpUtility.UrlEncode(game.Name), GetEmuMoviesPlatformFromGameSystem(game.GameSystem), mediaType, sessionId); using (var stream = await _httpClient.Get(url, Plugin.Instance.EmuMoviesSemiphore, cancellationToken).ConfigureAwait(false)) { var doc = new XmlDocument(); doc.Load(stream); if (doc.HasChildNodes) { var nodes = doc.SelectNodes("Results/Result"); if (nodes != null) { foreach (XmlNode node in nodes) { if (node != null && node.Attributes != null) { var urlAttribute = node.Attributes["URL"]; if (urlAttribute != null && !string.IsNullOrEmpty(urlAttribute.Value)) { list.Add(new RemoteImageInfo { ProviderName = Name, Type = type, Url = urlAttribute.Value }); } } } } } } return list; }
/// <summary> /// /// </summary> /// <param name="game"></param> /// <param name="cancellationToken"></param> /// <returns></returns> private async Task<bool> Fetch(Game game, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var metaFile = GameXmlSaver.GetGameSavePath(game); if (File.Exists(metaFile)) { await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); try { new GameXmlParser(Logger).Fetch(game, metaFile, cancellationToken); } finally { XmlParsingResourcePool.Release(); } } SetLastRefreshed(game, DateTime.UtcNow); return true; }
/// <summary> /// /// </summary> /// <param name="game"></param> /// <param name="cancellationToken"></param> /// <returns></returns> private async Task<bool> Fetch(Game game, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var metaFile = Path.Combine(game.MetaLocation, "game.xml"); if (File.Exists(metaFile)) { await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); try { new BaseItemXmlParser<Game>(Logger).Fetch(game, metaFile, cancellationToken); } finally { XmlParsingResourcePool.Release(); } } SetLastRefreshed(game, DateTime.UtcNow); return true; }
private void SetGameProperties(BaseItemDto dto, Game item) { dto.Players = item.PlayersSupported; dto.GameSystem = item.GameSystem; }
private void AttachSoundtrackIds(BaseItemDto dto, Game item, User user) { var gamesdb = item.GetProviderId(MetadataProviders.Gamesdb); if (string.IsNullOrEmpty(gamesdb)) { return; } var recursiveChildren = user == null ? _libraryManager.RootFolder.RecursiveChildren : user.RootFolder.GetRecursiveChildren(user); dto.SoundtrackIds = recursiveChildren .Where(i => { if (!string.IsNullOrEmpty(gamesdb) && string.Equals(gamesdb, i.GetProviderId(MetadataProviders.Gamesdb), StringComparison.OrdinalIgnoreCase) && i is MusicAlbum) { return true; } return false; }) .Select(GetClientItemId) .ToArray(); }
public static string GetGameSavePath(Game item) { if (item.IsInMixedFolder) { return Path.ChangeExtension(item.Path, ".xml"); } return Path.Combine(item.ContainingFolderPath, "game.xml"); }
private async Task<string> Sync(SyncJobItem jobItem, Game item, DeviceProfile profile, CancellationToken cancellationToken) { return item.Path; }