/// <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;
        }
Exemplo n.º 3
0
        /// <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;
        }
Exemplo n.º 4
0
 private void SetGameProperties(BaseItemDto dto, Game item)
 {
     dto.Players = item.PlayersSupported;
     dto.GameSystem = item.GameSystem;
 }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        public static string GetGameSavePath(Game item)
        {
            if (item.IsInMixedFolder)
            {
                return Path.ChangeExtension(item.Path, ".xml");
            }

            return Path.Combine(item.ContainingFolderPath, "game.xml");
        }
Exemplo n.º 7
0
 private async Task<string> Sync(SyncJobItem jobItem, Game item, DeviceProfile profile, CancellationToken cancellationToken)
 {
     return item.Path;
 }