瀏覽代碼

Merge pull request #2390 from MediaBrowser/dev

Dev
Luke 8 年之前
父節點
當前提交
488e36811d

+ 9 - 0
Emby.Server.Implementations/Connect/ConnectEntryPoint.cs

@@ -18,6 +18,7 @@ namespace Emby.Server.Implementations.Connect
     public class ConnectEntryPoint : IServerEntryPoint
     {
         private ITimer _timer;
+        private IpAddressInfo _cachedIpAddress;
         private readonly IHttpClient _httpClient;
         private readonly IApplicationPaths _appPaths;
         private readonly ILogger _logger;
@@ -151,6 +152,12 @@ namespace Emby.Server.Implementations.Connect
 
         private void CacheAddress(IpAddressInfo address)
         {
+            if (_cachedIpAddress != null && _cachedIpAddress.Equals(address))
+            {
+                // no need to update the file if the address has not changed
+                return;
+            }
+
             var path = CacheFilePath;
 
             try
@@ -164,6 +171,7 @@ namespace Emby.Server.Implementations.Connect
             try
             {
                 _fileSystem.WriteAllText(path, _encryption.EncryptString(address.ToString()), Encoding.UTF8);
+                _cachedIpAddress = address;
             }
             catch (Exception ex)
             {
@@ -184,6 +192,7 @@ namespace Emby.Server.Implementations.Connect
 
                 if (_networkManager.TryParseIpAddress(endpoint, out ipAddress))
                 {
+                    _cachedIpAddress = ipAddress;
                     ((ConnectManager)_connectManager).OnWanAddressResolved(ipAddress);
                 }
             }

+ 5 - 21
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -3208,6 +3208,11 @@ namespace Emby.Server.Implementations.Data
 
         private List<string> GetWhereClauses(InternalItemsQuery query, IStatement statement, string paramSuffix = "")
         {
+            if (query.IsResumable ?? false)
+            {
+                query.IsVirtualItem = false;
+            }
+
             var whereClauses = new List<string>();
 
             if (EnableJoinUserData(query))
@@ -4081,27 +4086,6 @@ namespace Emby.Server.Implementations.Data
 
                 whereClauses.Add("LocationType in (" + val + ")");
             }
-            if (query.ExcludeLocationTypes.Length == 1)
-            {
-                if (query.ExcludeLocationTypes[0] == LocationType.Virtual && _config.Configuration.SchemaVersion >= 90)
-                {
-                    query.IsVirtualItem = false;
-                }
-                else
-                {
-                    whereClauses.Add("LocationType<>@ExcludeLocationTypes");
-                    if (statement != null)
-                    {
-                        statement.TryBind("@ExcludeLocationTypes", query.ExcludeLocationTypes[0].ToString());
-                    }
-                }
-            }
-            else if (query.ExcludeLocationTypes.Length > 1)
-            {
-                var val = string.Join(",", query.ExcludeLocationTypes.Select(i => "'" + i + "'").ToArray());
-
-                whereClauses.Add("LocationType not in (" + val + ")");
-            }
             if (query.IsVirtualItem.HasValue)
             {
                 whereClauses.Add("IsVirtualItem=@IsVirtualItem");

+ 2 - 0
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -2481,6 +2481,8 @@ namespace Emby.Server.Implementations.Library
                 options.VideoFileExtensions.Remove(".zip");
             }
 
+            options.VideoFileExtensions.Add(".tp");
+
             return options;
         }
 

+ 2 - 2
Emby.Server.Implementations/Library/SearchEngine.cs

@@ -157,6 +157,7 @@ namespace Emby.Server.Implementations.Library
             }
 
             AddIfMissing(excludeItemTypes, typeof(CollectionFolder).Name);
+            AddIfMissing(excludeItemTypes, typeof(Folder).Name);
 
             var mediaItems = _libraryManager.GetItemList(new InternalItemsQuery(user)
             {
@@ -164,8 +165,7 @@ namespace Emby.Server.Implementations.Library
                 ExcludeItemTypes = excludeItemTypes.ToArray(),
                 IncludeItemTypes = includeItemTypes.ToArray(),
                 Limit = query.Limit,
-                IncludeItemsByName = true,
-                IsVirtualItem = false
+                IncludeItemsByName = true
             });
 
             // Add search hints based on item name

+ 1 - 1
Emby.Server.Implementations/Library/UserViewManager.cs

@@ -287,7 +287,7 @@ namespace Emby.Server.Implementations.Library
                 SortBy = new[] { ItemSortBy.DateCreated },
                 IsFolder = includeItemTypes.Length == 0 ? false : (bool?)null,
                 ExcludeItemTypes = excludeItemTypes,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 Limit = limit * 5,
                 SourceTypes = parents.Count == 0 ? new[] { SourceType.Library } : new SourceType[] { },
                 IsPlayed = request.IsPlayed

+ 1 - 1
Emby.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -1602,7 +1602,7 @@ namespace Emby.Server.Implementations.LiveTv
                 Recursive = true,
                 AncestorIds = folders.Select(i => i.Id.ToString("N")).ToArray(),
                 IsFolder = false,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 Limit = query.Limit,
                 SortBy = new[] { ItemSortBy.DateCreated },
                 SortOrder = SortOrder.Descending,

+ 1 - 1
MediaBrowser.Api/Library/LibraryService.cs

@@ -666,7 +666,7 @@ namespace MediaBrowser.Api.Library
                 IncludeItemTypes = new[] { type.Name },
                 Limit = 0,
                 Recursive = true,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 SourceTypes = new[] { SourceType.Library },
                 IsFavorite = request.IsFavorite
             };

+ 5 - 1
MediaBrowser.Api/Reports/ReportsService.cs

@@ -293,7 +293,11 @@ namespace MediaBrowser.Api.Reports
             // ExcludeLocationTypes
             if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
             {
-                query.ExcludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                var excludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                if (excludeLocationTypes.Contains(LocationType.Virtual))
+                {
+                    query.IsVirtualItem = false;
+                }
             }
 
             if (!string.IsNullOrEmpty(request.LocationTypes))

+ 5 - 1
MediaBrowser.Api/UserLibrary/ItemsService.cs

@@ -318,7 +318,11 @@ namespace MediaBrowser.Api.UserLibrary
             // ExcludeLocationTypes
             if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
             {
-                query.ExcludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                var excludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                if (excludeLocationTypes.Contains(LocationType.Virtual))
+                {
+                    query.IsVirtualItem = false;
+                }
             }
 
             if (!string.IsNullOrEmpty(request.LocationTypes))

+ 9 - 0
MediaBrowser.Controller/Entities/AudioBook.cs

@@ -16,6 +16,15 @@ namespace MediaBrowser.Controller.Entities
             }
         }
 
+        [IgnoreDataMember]
+        public override bool SupportsPlayedStatus
+        {
+            get
+            {
+                return true;
+            }
+        }
+
         [IgnoreDataMember]
         public string SeriesPresentationUniqueKey { get; set; }
         [IgnoreDataMember]

+ 2 - 2
MediaBrowser.Controller/Entities/Folder.cs

@@ -1336,7 +1336,7 @@ namespace MediaBrowser.Controller.Entities
 
             if (!user.Configuration.DisplayMissingEpisodes || !user.Configuration.DisplayUnairedEpisodes)
             {
-                query.ExcludeLocationTypes = new[] { LocationType.Virtual };
+                query.IsVirtualItem = false;
             }
 
             var itemsResult = await GetItems(query).ConfigureAwait(false);
@@ -1375,7 +1375,7 @@ namespace MediaBrowser.Controller.Entities
             {
                 Recursive = true,
                 IsFolder = false,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 EnableTotalRecordCount = false
 
             }).Result;

+ 0 - 2
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -130,7 +130,6 @@ namespace MediaBrowser.Controller.Entities
         public string[] TopParentIds { get; set; }
 
         public LocationType[] LocationTypes { get; set; }
-        public LocationType[] ExcludeLocationTypes { get; set; }
         public string[] PresetViews { get; set; }
         public SourceType[] SourceTypes { get; set; }
         public SourceType[] ExcludeSourceTypes { get; set; }
@@ -233,7 +232,6 @@ namespace MediaBrowser.Controller.Entities
             ExcludeTags = new string[] { };
             ExcludeInheritedTags = new string[] { };
             LocationTypes = new LocationType[] { };
-            ExcludeLocationTypes = new LocationType[] { };
             PresetViews = new string[] { };
             SourceTypes = new SourceType[] { };
             ExcludeSourceTypes = new SourceType[] { };

+ 2 - 2
MediaBrowser.Controller/Entities/UserViewBuilder.cs

@@ -647,7 +647,7 @@ namespace MediaBrowser.Controller.Entities
             query.SetUser(user);
             query.Limit = GetSpecialItemsLimit();
             query.IncludeItemTypes = new[] { typeof(Episode).Name };
-            query.ExcludeLocationTypes = new[] { LocationType.Virtual };
+            query.IsVirtualItem = false;
 
             return ConvertToResult(_libraryManager.GetItemList(query));
         }
@@ -1199,7 +1199,7 @@ namespace MediaBrowser.Controller.Entities
                 return false;
             }
 
-            if (query.ExcludeLocationTypes.Length > 0 && query.ExcludeLocationTypes.Contains(item.LocationType))
+            if (query.IsVirtualItem.HasValue && item.IsVirtualItem != query.IsVirtualItem.Value)
             {
                 return false;
             }

+ 5 - 0
MediaBrowser.Controller/LiveTv/LiveTvProgram.cs

@@ -15,6 +15,11 @@ namespace MediaBrowser.Controller.LiveTv
 {
     public class LiveTvProgram : BaseItem, IHasLookupInfo<LiveTvProgramLookupInfo>, IHasStartDate, IHasProgramAttributes
     {
+        public LiveTvProgram()
+        {
+            IsVirtualItem = true;
+        }
+
         public override List<string> GetUserDataKeys()
         {
             var list = base.GetUserDataKeys();

+ 1 - 1
MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs

@@ -82,10 +82,10 @@ namespace MediaBrowser.Providers.MediaInfo
             {
                 MediaTypes = new string[] { MediaType.Video },
                 IsVirtualItem = false,
-                ExcludeLocationTypes = new LocationType[] { LocationType.Remote, LocationType.Virtual },
                 IncludeItemTypes = types.ToArray()
 
             }).OfType<Video>()
+                .Where(i => i.LocationType != LocationType.Remote)
                 .ToList();
 
             if (videos.Count == 0)

+ 0 - 4
MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj

@@ -227,10 +227,6 @@
       <SubType>Designer</SubType>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="System.Data.SQLite.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-      <SubType>Designer</SubType>
-    </None>
   </ItemGroup>
   <ItemGroup />
 </Project>

+ 0 - 3
MediaBrowser.Server.Mono/System.Data.SQLite.dll.config

@@ -1,3 +0,0 @@
-<configuration>
-  <dllmap dll="sqlite3" target="libsqlite3.so" os="linux"/>
-</configuration>

+ 6 - 0
MediaBrowser.ServerApplication/MainStartup.cs

@@ -601,6 +601,12 @@ namespace MediaBrowser.ServerApplication
         /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
         private static bool PerformUpdateIfNeeded(ServerApplicationPaths appPaths, ILogger logger)
         {
+            // Not supported
+            if (IsRunningAsService)
+            {
+                return false;
+            }
+
             // Look for the existence of an update archive
             var updateArchive = Path.Combine(appPaths.TempUpdatePath, "MBServer" + ".zip");
             if (File.Exists(updateArchive))