Mr. Chip53 3 tahun lalu
induk
melakukan
1a8dcae5e4

+ 12 - 12
Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs

@@ -59,34 +59,34 @@ namespace Emby.Server.Implementations.LiveTv.Listings
             return _config.Configuration.PreferredMetadataLanguage;
         }
 
-        private async Task<string> GetXml(string path, CancellationToken cancellationToken)
+        private async Task<string> GetXml(ListingsProviderInfo info, CancellationToken cancellationToken)
         {
-            _logger.LogInformation("xmltv path: {Path}", path);
+            _logger.LogInformation("xmltv path: {Path}", info.Path);
 
-            if (!path.StartsWith("http", StringComparison.OrdinalIgnoreCase))
+            if (!info.Path.StartsWith("http", StringComparison.OrdinalIgnoreCase))
             {
-                return UnzipIfNeeded(path, path);
+                return UnzipIfNeeded(info.Path, info.Path);
             }
 
-            string cacheFilename = DateTime.UtcNow.DayOfYear.ToString(CultureInfo.InvariantCulture) + "-" + DateTime.UtcNow.Hour.ToString(CultureInfo.InvariantCulture) + ".xml";
+            string cacheFilename = DateTime.UtcNow.DayOfYear.ToString(CultureInfo.InvariantCulture) + "-" + DateTime.UtcNow.Hour.ToString(CultureInfo.InvariantCulture) + "-" + info.Id + ".xml";
             string cacheFile = Path.Combine(_config.ApplicationPaths.CachePath, "xmltv", cacheFilename);
             if (File.Exists(cacheFile))
             {
-                return UnzipIfNeeded(path, cacheFile);
+                return UnzipIfNeeded(info.Path, cacheFile);
             }
 
-            _logger.LogInformation("Downloading xmltv listings from {Path}", path);
+            _logger.LogInformation("Downloading xmltv listings from {Path}", info.Path);
 
             Directory.CreateDirectory(Path.GetDirectoryName(cacheFile));
 
-            using var response = await _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(path, cancellationToken).ConfigureAwait(false);
+            using var response = await _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(info.Path, cancellationToken).ConfigureAwait(false);
             await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
             await using (var fileStream = new FileStream(cacheFile, FileMode.CreateNew, FileAccess.Write, FileShare.None, IODefaults.CopyToBufferSize, AsyncFile.UseAsyncIO))
             {
                 await stream.CopyToAsync(fileStream, cancellationToken).ConfigureAwait(false);
             }
 
-            return UnzipIfNeeded(path, cacheFile);
+            return UnzipIfNeeded(info.Path, cacheFile);
         }
 
         private string UnzipIfNeeded(string originalUrl, string file)
@@ -162,7 +162,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
 
             _logger.LogDebug("Getting xmltv programs for channel {Id}", channelId);
 
-            string path = await GetXml(info.Path, cancellationToken).ConfigureAwait(false);
+            string path = await GetXml(info, cancellationToken).ConfigureAwait(false);
             _logger.LogDebug("Opening XmlTvReader for {Path}", path);
             var reader = new XmlTvReader(path, GetLanguage(info));
 
@@ -256,7 +256,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
         public async Task<List<NameIdPair>> GetLineups(ListingsProviderInfo info, string country, string location)
         {
             // In theory this should never be called because there is always only one lineup
-            string path = await GetXml(info.Path, CancellationToken.None).ConfigureAwait(false);
+            string path = await GetXml(info, CancellationToken.None).ConfigureAwait(false);
             _logger.LogDebug("Opening XmlTvReader for {Path}", path);
             var reader = new XmlTvReader(path, GetLanguage(info));
             IEnumerable<XmlTvChannel> results = reader.GetChannels();
@@ -268,7 +268,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
         public async Task<List<ChannelInfo>> GetChannels(ListingsProviderInfo info, CancellationToken cancellationToken)
         {
             // In theory this should never be called because there is always only one lineup
-            string path = await GetXml(info.Path, cancellationToken).ConfigureAwait(false);
+            string path = await GetXml(info, cancellationToken).ConfigureAwait(false);
             _logger.LogDebug("Opening XmlTvReader for {Path}", path);
             var reader = new XmlTvReader(path, GetLanguage(info));
             var results = reader.GetChannels();