Luke Pulverenti преди 8 години
родител
ревизия
a3b9d33248

+ 7 - 17
Emby.Common.Implementations/IO/ManagedFileSystem.cs

@@ -20,10 +20,13 @@ namespace Emby.Common.Implementations.IO
         private readonly List<IShortcutHandler> _shortcutHandlers = new List<IShortcutHandler>();
         private bool EnableFileSystemRequestConcat = true;
 
-        public ManagedFileSystem(ILogger logger, bool supportsAsyncFileStreams, bool enableManagedInvalidFileNameChars, bool enableFileSystemRequestConcat)
+        private string _tempPath;
+
+        public ManagedFileSystem(ILogger logger, bool supportsAsyncFileStreams, bool enableManagedInvalidFileNameChars, bool enableFileSystemRequestConcat, string tempPath)
         {
             Logger = logger;
             _supportsAsyncFileStreams = supportsAsyncFileStreams;
+            _tempPath = tempPath;
             EnableFileSystemRequestConcat = enableFileSystemRequestConcat;
             SetInvalidFileNameChars(enableManagedInvalidFileNameChars);
         }
@@ -487,12 +490,13 @@ namespace Emby.Common.Implementations.IO
                 throw new ArgumentNullException("file2");
             }
 
-            var temp1 = Path.GetTempFileName();
+            var temp1 = Path.Combine(_tempPath, Guid.NewGuid().ToString("N"));
 
             // Copying over will fail against hidden files
             SetHidden(file1, false);
             SetHidden(file2, false);
 
+            Directory.CreateDirectory(_tempPath);
             CopyFile(file1, temp1, true);
 
             CopyFile(file2, file1, true);
@@ -674,21 +678,7 @@ namespace Emby.Common.Implementations.IO
 
         private IEnumerable<FileSystemMetadata> ToMetadata(string parentPath, IEnumerable<FileSystemInfo> infos)
         {
-            return infos.Select(i =>
-            {
-                try
-                {
-                    return GetFileSystemMetadata(i);
-                }
-                catch (PathTooLongException)
-                {
-                    // Can't log using the FullName because it will throw the PathTooLongExceptiona again
-                    //Logger.Warn("Path too long: {0}", i.FullName);
-                    Logger.Warn("File or directory path too long. Parent folder: {0}", parentPath);
-                    return null;
-                }
-
-            }).Where(i => i != null);
+            return infos.Select(GetFileSystemMetadata);
         }
 
         public string[] ReadAllLines(string path)

+ 0 - 1
Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs

@@ -104,7 +104,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
                         {
                             Type = HdHomerunHost.DeviceType,
                             Url = url,
-                            DataVersion = 1,
                             DeviceId = response.DeviceID
 
                         }).ConfigureAwait(false);

+ 1 - 4
Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs

@@ -61,10 +61,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
         {
             var id = ChannelIdPrefix + i.GuideNumber;
 
-            if (info.DataVersion >= 1)
-            {
-                id += '_' + (i.GuideName ?? string.Empty).GetMD5().ToString("N");
-            }
+            id += '_' + (i.GuideName ?? string.Empty).GetMD5().ToString("N");
 
             return id;
         }

+ 1 - 1
Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs

@@ -50,7 +50,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 
         protected override async Task<IEnumerable<ChannelInfo>> GetChannelsInternal(TunerHostInfo info, CancellationToken cancellationToken)
         {
-            return await new M3uParser(Logger, _fileSystem, _httpClient, _appHost).Parse(info.Url, ChannelIdPrefix, info.Id, cancellationToken).ConfigureAwait(false);
+            return await new M3uParser(Logger, _fileSystem, _httpClient, _appHost).Parse(info.Url, ChannelIdPrefix, info.Id, !info.EnableTvgId, cancellationToken).ConfigureAwait(false);
         }
 
         public Task<List<LiveTvTunerInfo>> GetTunerInfos(CancellationToken cancellationToken)

+ 18 - 5
Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs

@@ -33,14 +33,14 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
             _appHost = appHost;
         }
 
-        public async Task<List<M3UChannel>> Parse(string url, string channelIdPrefix, string tunerHostId, CancellationToken cancellationToken)
+        public async Task<List<M3UChannel>> Parse(string url, string channelIdPrefix, string tunerHostId, bool enableStreamUrlAsIdentifier, CancellationToken cancellationToken)
         {
             var urlHash = url.GetMD5().ToString("N");
 
             // Read the file and display it line by line.
             using (var reader = new StreamReader(await GetListingsStream(url, cancellationToken).ConfigureAwait(false)))
             {
-                return GetChannels(reader, urlHash, channelIdPrefix, tunerHostId);
+                return GetChannels(reader, urlHash, channelIdPrefix, tunerHostId, enableStreamUrlAsIdentifier);
             }
         }
 
@@ -51,7 +51,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
             // Read the file and display it line by line.
             using (var reader = new StringReader(text))
             {
-                return GetChannels(reader, urlHash, channelIdPrefix, tunerHostId);
+                return GetChannels(reader, urlHash, channelIdPrefix, tunerHostId, false);
             }
         }
 
@@ -71,7 +71,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
         }
 
         const string ExtInfPrefix = "#EXTINF:";
-        private List<M3UChannel> GetChannels(TextReader reader, string urlHash, string channelIdPrefix, string tunerHostId)
+        private List<M3UChannel> GetChannels(TextReader reader, string urlHash, string channelIdPrefix, string tunerHostId, bool enableStreamUrlAsIdentifier)
         {
             var channels = new List<M3UChannel>();
             string line;
@@ -97,7 +97,15 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
                 else if (!string.IsNullOrWhiteSpace(extInf) && !line.StartsWith("#", StringComparison.OrdinalIgnoreCase))
                 {
                     var channel = GetChannelnfo(extInf, tunerHostId, line);
-                    channel.Id = channelIdPrefix + urlHash + line.GetMD5().ToString("N");
+                    if (string.IsNullOrWhiteSpace(channel.Id) || enableStreamUrlAsIdentifier)
+                    {
+                        channel.Id = channelIdPrefix + urlHash + line.GetMD5().ToString("N");
+                    }
+                    else
+                    {
+                        channel.Id = channelIdPrefix + channel.Id.GetMD5().ToString("N");
+                    }
+
                     channel.Path = line;
                     channels.Add(channel);
                     extInf = "";
@@ -126,6 +134,11 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
             channel.Name = GetChannelName(extInf, attributes);
             channel.Number = GetChannelNumber(extInf, attributes, mediaUrl);
 
+            if (attributes.TryGetValue("tvg-id", out value))
+            {
+                channel.Id = value;
+            }
+
             return channel;
         }
 

+ 1 - 2
MediaBrowser.Model/LiveTv/LiveTvOptions.cs

@@ -57,8 +57,7 @@ namespace MediaBrowser.Model.LiveTv
         public string SourceB { get; set; }
         public string SourceC { get; set; }
         public string SourceD { get; set; }
-
-        public int DataVersion { get; set; }
+        public bool EnableTvgId { get; set; }
 
         public TunerHostInfo()
         {

+ 2 - 2
MediaBrowser.Server.Mono/Native/MonoFileSystem.cs

@@ -6,8 +6,8 @@ namespace MediaBrowser.Server.Mono.Native
 {
     public class MonoFileSystem : ManagedFileSystem
     {
-        public MonoFileSystem(ILogger logger, bool supportsAsyncFileStreams, bool enableManagedInvalidFileNameChars)
-            : base(logger, supportsAsyncFileStreams, enableManagedInvalidFileNameChars, true)
+        public MonoFileSystem(ILogger logger, bool supportsAsyncFileStreams, bool enableManagedInvalidFileNameChars, string tempPath)
+            : base(logger, supportsAsyncFileStreams, enableManagedInvalidFileNameChars, true, tempPath)
         {
         }
 

+ 1 - 1
MediaBrowser.Server.Mono/Program.cs

@@ -108,7 +108,7 @@ namespace MediaBrowser.Server.Mono
             // Allow all https requests
             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
 
-            var fileSystem = new MonoFileSystem(logManager.GetLogger("FileSystem"), false, false);
+            var fileSystem = new MonoFileSystem(logManager.GetLogger("FileSystem"), false, false, appPaths.TempDirectory);
             fileSystem.AddShortcutHandler(new MbLinkShortcutHandler(fileSystem));
 
             var environmentInfo = GetEnvironmentInfo();

+ 0 - 1
MediaBrowser.Server.Startup.Common/LiveTv/TunerHosts/SatIp/SatIpDiscovery.cs

@@ -113,7 +113,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.SatIp
                         Type = SatIpHost.DeviceType,
                         Url = deviceUrl,
                         InfoUrl = infoUrl,
-                        DataVersion = 1,
                         DeviceId = info.DeviceId,
                         FriendlyName = info.FriendlyName,
                         Tuners = info.Tuners,

+ 1 - 1
MediaBrowser.Server.Startup.Common/LiveTv/TunerHosts/SatIp/SatIpHost.cs

@@ -44,7 +44,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.SatIp
         {
             if (!string.IsNullOrWhiteSpace(tuner.M3UUrl))
             {
-                return await new M3uParser(Logger, _fileSystem, _httpClient, _appHost).Parse(tuner.M3UUrl, ChannelIdPrefix, tuner.Id, cancellationToken).ConfigureAwait(false);
+                return await new M3uParser(Logger, _fileSystem, _httpClient, _appHost).Parse(tuner.M3UUrl, ChannelIdPrefix, tuner.Id, false, cancellationToken).ConfigureAwait(false);
             }
 
             var channels = await new ChannelScan(Logger).Scan(tuner, cancellationToken).ConfigureAwait(false);

+ 1 - 1
MediaBrowser.ServerApplication/MainStartup.cs

@@ -324,7 +324,7 @@ namespace MediaBrowser.ServerApplication
         /// <param name="options">The options.</param>
         private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, bool runService, StartupOptions options)
         {
-            var fileSystem = new ManagedFileSystem(logManager.GetLogger("FileSystem"), true, true, true);
+            var fileSystem = new ManagedFileSystem(logManager.GetLogger("FileSystem"), true, true, true, appPaths.TempDirectory);
             fileSystem.AddShortcutHandler(new LnkShortcutHandler());
             fileSystem.AddShortcutHandler(new MbLinkShortcutHandler(fileSystem));
 

+ 2 - 2
OpenSubtitlesHandler/Utilities.cs

@@ -37,8 +37,8 @@ namespace OpenSubtitlesHandler
         public static IHttpClient HttpClient { get; set; }
         public static ITextEncoding EncodingHelper { get; set; }
 
-        //private static string XML_RPC_SERVER = "https://api.opensubtitles.org/xml-rpc";
-        private static string XML_RPC_SERVER = "https://92.240.234.122/xml-rpc";
+        private static string XML_RPC_SERVER = "https://api.opensubtitles.org/xml-rpc";
+        //private static string XML_RPC_SERVER = "https://92.240.234.122/xml-rpc";
         private static string HostHeader = "api.opensubtitles.org:443";
 
         /// <summary>