aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-01-09 15:28:12 -0500
committerGitHub <noreply@github.com>2017-01-09 15:28:12 -0500
commit488e36811df4de3a9d75333bc7b73d6ec2eb6ed9 (patch)
tree123cfd54e289f98c75c7b722f2bda548c00ae6a2
parentd9dda3b56e4269e074379dee134130feab76ad04 (diff)
parent85cd90d6e6bb022469cbb34248300f3164cf1775 (diff)
Merge pull request #2390 from MediaBrowser/dev
Dev
-rw-r--r--Emby.Server.Implementations/Connect/ConnectEntryPoint.cs9
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs26
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs2
-rw-r--r--Emby.Server.Implementations/Library/SearchEngine.cs4
-rw-r--r--Emby.Server.Implementations/Library/UserViewManager.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvManager.cs2
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs2
-rw-r--r--MediaBrowser.Api/Reports/ReportsService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs6
-rw-r--r--MediaBrowser.Controller/Entities/AudioBook.cs9
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs4
-rw-r--r--MediaBrowser.Controller/Entities/InternalItemsQuery.cs2
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs4
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvProgram.cs5
-rw-r--r--MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs2
-rw-r--r--MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj4
-rw-r--r--MediaBrowser.Server.Mono/System.Data.SQLite.dll.config3
-rw-r--r--MediaBrowser.ServerApplication/MainStartup.cs6
18 files changed, 56 insertions, 42 deletions
diff --git a/Emby.Server.Implementations/Connect/ConnectEntryPoint.cs b/Emby.Server.Implementations/Connect/ConnectEntryPoint.cs
index 7f15f20cb..b5639773b 100644
--- a/Emby.Server.Implementations/Connect/ConnectEntryPoint.cs
+++ b/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);
}
}
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 06704bafa..79bc55d5d 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/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");
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 4dd6cd303..db514af76 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/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;
}
diff --git a/Emby.Server.Implementations/Library/SearchEngine.cs b/Emby.Server.Implementations/Library/SearchEngine.cs
index afdf65c06..e6c88aa1a 100644
--- a/Emby.Server.Implementations/Library/SearchEngine.cs
+++ b/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
diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs
index f7cc8bb73..0a8b1c681 100644
--- a/Emby.Server.Implementations/Library/UserViewManager.cs
+++ b/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
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
index 62a0738c7..b77ca3f41 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/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,
diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index 15c1cbe82..e654cc8f6 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/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
};
diff --git a/MediaBrowser.Api/Reports/ReportsService.cs b/MediaBrowser.Api/Reports/ReportsService.cs
index efbfa1bdf..cb275fa29 100644
--- a/MediaBrowser.Api/Reports/ReportsService.cs
+++ b/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))
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 049a7b1c6..8300beac3 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/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))
diff --git a/MediaBrowser.Controller/Entities/AudioBook.cs b/MediaBrowser.Controller/Entities/AudioBook.cs
index efeb9b497..c15cae8b1 100644
--- a/MediaBrowser.Controller/Entities/AudioBook.cs
+++ b/MediaBrowser.Controller/Entities/AudioBook.cs
@@ -17,6 +17,15 @@ namespace MediaBrowser.Controller.Entities
}
[IgnoreDataMember]
+ public override bool SupportsPlayedStatus
+ {
+ get
+ {
+ return true;
+ }
+ }
+
+ [IgnoreDataMember]
public string SeriesPresentationUniqueKey { get; set; }
[IgnoreDataMember]
public string SeriesName { get; set; }
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index b5d07b933..61747bd14 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/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;
diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
index f5af7d5c6..5cb9b9cee 100644
--- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
+++ b/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[] { };
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index 58d2cdc6c..a880b6d77 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/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;
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
index ffb6a7555..5a139e09d 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
+++ b/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();
diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
index c47b6ab93..0e842cdb4 100644
--- a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
+++ b/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)
diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
index 24da2fd59..325011adf 100644
--- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
+++ b/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> \ No newline at end of file
diff --git a/MediaBrowser.Server.Mono/System.Data.SQLite.dll.config b/MediaBrowser.Server.Mono/System.Data.SQLite.dll.config
deleted file mode 100644
index 83a6cd9f3..000000000
--- a/MediaBrowser.Server.Mono/System.Data.SQLite.dll.config
+++ /dev/null
@@ -1,3 +0,0 @@
-<configuration>
- <dllmap dll="sqlite3" target="libsqlite3.so" os="linux"/>
-</configuration> \ No newline at end of file
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs
index c34940141..8dcabb950 100644
--- a/MediaBrowser.ServerApplication/MainStartup.cs
+++ b/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))