using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.IO; namespace MediaBrowser.Providers.ImagesByName { public static class ImageUtils { /// /// Ensures the list. /// /// The URL. /// The file. /// The HTTP client. /// The file system. /// The cancellation token. /// Task. public static async Task EnsureList(string url, string file, IHttpClient httpClient, IFileSystem fileSystem, CancellationToken cancellationToken) { var fileInfo = fileSystem.GetFileInfo(file); if (!fileInfo.Exists || (DateTime.UtcNow - fileSystem.GetLastWriteTimeUtc(fileInfo)).TotalDays > 1) { var temp = await httpClient.GetTempFile(new HttpRequestOptions { CancellationToken = cancellationToken, Progress = new Progress(), Url = url }).ConfigureAwait(false); fileSystem.CreateDirectory(Path.GetDirectoryName(file)); try { fileSystem.CopyFile(temp, file, true); } catch { } return temp; } return file; } public static string FindMatch(IHasImages item, IEnumerable images) { var name = GetComparableName(item.Name); return images.FirstOrDefault(i => string.Equals(name, GetComparableName(i), StringComparison.OrdinalIgnoreCase)); } private static string GetComparableName(string name) { return name.Replace(" ", string.Empty) .Replace(".", string.Empty) .Replace("&", string.Empty) .Replace("!", string.Empty) .Replace(",", string.Empty) .Replace("/", string.Empty); } public static IEnumerable GetAvailableImages(string file, IFileSystem fileSystem) { using (var fileStream = fileSystem.GetFileStream(file, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read)) { using (var reader = new StreamReader(fileStream)) { var lines = new List(); while (!reader.EndOfStream) { var text = reader.ReadLine(); if (!string.IsNullOrWhiteSpace(text)) { lines.Add(text); } } return lines; } } } } }