diff options
Diffstat (limited to 'MediaBrowser.Providers/ImagesByName/ImageUtils.cs')
| -rw-r--r-- | MediaBrowser.Providers/ImagesByName/ImageUtils.cs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs new file mode 100644 index 000000000..cee8c9ded --- /dev/null +++ b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs @@ -0,0 +1,83 @@ +using MediaBrowser.Common.IO; +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; + +namespace MediaBrowser.Providers.ImagesByName +{ + public static class ImageUtils + { + /// <summary> + /// Ensures the list. + /// </summary> + /// <param name="url">The URL.</param> + /// <param name="file">The file.</param> + /// <param name="httpClient">The HTTP client.</param> + /// <param name="fileSystem">The file system.</param> + /// <param name="semaphore">The semaphore.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + public static async Task EnsureList(string url, string file, IHttpClient httpClient, IFileSystem fileSystem, SemaphoreSlim semaphore, CancellationToken cancellationToken) + { + var fileInfo = new FileInfo(file); + + if (!fileInfo.Exists || (DateTime.UtcNow - fileSystem.GetLastWriteTimeUtc(fileInfo)).TotalDays > 1) + { + await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false); + + try + { + var temp = await httpClient.GetTempFile(new HttpRequestOptions + { + CancellationToken = cancellationToken, + Progress = new Progress<double>(), + Url = url + + }).ConfigureAwait(false); + + Directory.CreateDirectory(Path.GetDirectoryName(file)); + + File.Copy(temp, file, true); + } + finally + { + semaphore.Release(); + } + } + } + + public static string FindMatch(IHasImages item, IEnumerable<string> 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); + } + + public static IEnumerable<string> GetAvailableImages(string file) + { + using (var reader = new StreamReader(file)) + { + var lines = new List<string>(); + + while (!reader.EndOfStream) + { + var text = reader.ReadLine(); + + lines.Add(text); + } + + return lines; + } + } + } +} |
