aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-11-22 15:08:36 -0500
committerGitHub <noreply@github.com>2016-11-22 15:08:36 -0500
commit7edcda021632042d226523d46582c53881b744b6 (patch)
tree38ea769bc72ad830a169c73ef24cfec848093f0f /Emby.Server.Implementations
parent69c771cd89c7352b94511e010e193d4abba1d9c8 (diff)
parentc418f94c98658413ebb078154b7041d3d809ba40 (diff)
Merge pull request #2303 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs301
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs44
2 files changed, 197 insertions, 148 deletions
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 5c24c9ac4..78d78a9df 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -38,8 +38,6 @@ namespace Emby.Server.Implementations.Data
/// </summary>
public class SqliteItemRepository : BaseSqliteRepository, IItemRepository
{
- private SQLiteDatabaseConnection _connection;
-
private readonly TypeMapper _typeMapper;
/// <summary>
@@ -121,25 +119,37 @@ namespace Emby.Server.Implementations.Data
}
}
+ private SQLiteDatabaseConnection _backgroundConnection;
+ protected override void CloseConnection()
+ {
+ base.CloseConnection();
+
+ if (_backgroundConnection != null)
+ {
+ _backgroundConnection.Dispose();
+ _backgroundConnection = null;
+ }
+ }
+
/// <summary>
/// Opens the connection to the database
/// </summary>
/// <returns>Task.</returns>
public async Task Initialize(SqliteUserDataRepository userDataRepo)
{
- _connection = CreateConnection(false);
-
- _connection.ExecuteAll(string.Join(";", new[]
+ using (var connection = CreateConnection())
{
+ connection.ExecuteAll(string.Join(";", new[]
+ {
"PRAGMA page_size=4096",
"PRAGMA default_temp_store=memory",
"PRAGMA temp_store=memory"
- }));
+ }));
- var createMediaStreamsTableCommand
- = "create table if not exists mediastreams (ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, CodecTag TEXT NULL, Comment TEXT NULL, NalLengthSize TEXT NULL, IsAvc BIT NULL, Title TEXT NULL, TimeBase TEXT NULL, CodecTimeBase TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))";
+ var createMediaStreamsTableCommand
+ = "create table if not exists mediastreams (ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, CodecTag TEXT NULL, Comment TEXT NULL, NalLengthSize TEXT NULL, IsAvc BIT NULL, Title TEXT NULL, TimeBase TEXT NULL, CodecTimeBase TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))";
- string[] queries = {
+ string[] queries = {
"PRAGMA locking_mode=NORMAL",
"create table if not exists TypedBaseItems (guid GUID primary key NOT NULL, type TEXT NOT NULL, data BLOB NULL, ParentId GUID NULL, Path TEXT NULL)",
@@ -164,133 +174,133 @@ namespace Emby.Server.Implementations.Data
};
- _connection.RunQueries(queries);
-
- _connection.RunInTransaction(db =>
- {
- var existingColumnNames = GetColumnNames(db, "AncestorIds");
- AddColumn(db, "AncestorIds", "AncestorIdText", "Text", existingColumnNames);
-
- existingColumnNames = GetColumnNames(db, "TypedBaseItems");
-
- AddColumn(db, "TypedBaseItems", "Path", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "StartDate", "DATETIME", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "EndDate", "DATETIME", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ChannelId", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsMovie", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsSports", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsKids", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "CommunityRating", "Float", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "CustomRating", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IndexNumber", "INT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsLocked", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Name", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "OfficialRating", "Text", existingColumnNames);
-
- AddColumn(db, "TypedBaseItems", "MediaType", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Overview", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ParentIndexNumber", "INT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "PremiereDate", "DATETIME", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ProductionYear", "INT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ParentId", "GUID", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Genres", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SortName", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "RunTimeTicks", "BIGINT", existingColumnNames);
-
- AddColumn(db, "TypedBaseItems", "OfficialRatingDescription", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "HomePageUrl", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "VoteCount", "INT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "DisplayMediaType", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "DateCreated", "DATETIME", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "DateModified", "DATETIME", existingColumnNames);
-
- AddColumn(db, "TypedBaseItems", "ForcedSortName", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "LocationType", "Text", existingColumnNames);
-
- AddColumn(db, "TypedBaseItems", "IsSeries", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsLive", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsNews", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsPremiere", "BIT", existingColumnNames);
-
- AddColumn(db, "TypedBaseItems", "EpisodeTitle", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsRepeat", "BIT", existingColumnNames);
-
- AddColumn(db, "TypedBaseItems", "PreferredMetadataLanguage", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "PreferredMetadataCountryCode", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsHD", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ExternalEtag", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "DateLastRefreshed", "DATETIME", existingColumnNames);
-
- AddColumn(db, "TypedBaseItems", "DateLastSaved", "DATETIME", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsInMixedFolder", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "LockedFields", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Studios", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Audio", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ExternalServiceId", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Tags", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsFolder", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "InheritedParentalRatingValue", "INT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "UnratedType", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "TopParentId", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsItemByName", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SourceType", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "TrailerTypes", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "CriticRating", "Float", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "CriticRatingSummary", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "InheritedTags", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "CleanName", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "PresentationUniqueKey", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SlugName", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "OriginalTitle", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "PrimaryVersionId", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "DateLastMediaAdded", "DATETIME", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Album", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "IsVirtualItem", "BIT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SeriesName", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "UserDataKey", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SeasonName", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SeasonId", "GUID", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SeriesId", "GUID", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "SeriesSortName", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ExternalSeriesId", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ShortOverview", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Tagline", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Keywords", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ProviderIds", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Images", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ProductionLocations", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ThemeSongIds", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ThemeVideoIds", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "TotalBitrate", "INT", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ExtraType", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "Artists", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "AlbumArtists", "Text", existingColumnNames);
- AddColumn(db, "TypedBaseItems", "ExternalId", "Text", existingColumnNames);
-
- existingColumnNames = GetColumnNames(db, "ItemValues");
- AddColumn(db, "ItemValues", "CleanValue", "Text", existingColumnNames);
-
- existingColumnNames = GetColumnNames(db, ChaptersTableName);
- AddColumn(db, ChaptersTableName, "ImageDateModified", "DATETIME", existingColumnNames);
-
- existingColumnNames = GetColumnNames(db, "MediaStreams");
- AddColumn(db, "MediaStreams", "IsAvc", "BIT", existingColumnNames);
- AddColumn(db, "MediaStreams", "TimeBase", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "CodecTimeBase", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "Title", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "NalLengthSize", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "Comment", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "CodecTag", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "PixelFormat", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "BitDepth", "INT", existingColumnNames);
- AddColumn(db, "MediaStreams", "RefFrames", "INT", existingColumnNames);
- AddColumn(db, "MediaStreams", "KeyFrames", "TEXT", existingColumnNames);
- AddColumn(db, "MediaStreams", "IsAnamorphic", "BIT", existingColumnNames);
- });
-
- string[] postQueries =
-
- {
+ connection.RunQueries(queries);
+
+ connection.RunInTransaction(db =>
+ {
+ var existingColumnNames = GetColumnNames(db, "AncestorIds");
+ AddColumn(db, "AncestorIds", "AncestorIdText", "Text", existingColumnNames);
+
+ existingColumnNames = GetColumnNames(db, "TypedBaseItems");
+
+ AddColumn(db, "TypedBaseItems", "Path", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "StartDate", "DATETIME", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "EndDate", "DATETIME", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ChannelId", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsMovie", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsSports", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsKids", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "CommunityRating", "Float", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "CustomRating", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IndexNumber", "INT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsLocked", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Name", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "OfficialRating", "Text", existingColumnNames);
+
+ AddColumn(db, "TypedBaseItems", "MediaType", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Overview", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ParentIndexNumber", "INT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "PremiereDate", "DATETIME", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ProductionYear", "INT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ParentId", "GUID", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Genres", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SortName", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "RunTimeTicks", "BIGINT", existingColumnNames);
+
+ AddColumn(db, "TypedBaseItems", "OfficialRatingDescription", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "HomePageUrl", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "VoteCount", "INT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "DisplayMediaType", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "DateCreated", "DATETIME", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "DateModified", "DATETIME", existingColumnNames);
+
+ AddColumn(db, "TypedBaseItems", "ForcedSortName", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "LocationType", "Text", existingColumnNames);
+
+ AddColumn(db, "TypedBaseItems", "IsSeries", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsLive", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsNews", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsPremiere", "BIT", existingColumnNames);
+
+ AddColumn(db, "TypedBaseItems", "EpisodeTitle", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsRepeat", "BIT", existingColumnNames);
+
+ AddColumn(db, "TypedBaseItems", "PreferredMetadataLanguage", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "PreferredMetadataCountryCode", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsHD", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ExternalEtag", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "DateLastRefreshed", "DATETIME", existingColumnNames);
+
+ AddColumn(db, "TypedBaseItems", "DateLastSaved", "DATETIME", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsInMixedFolder", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "LockedFields", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Studios", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Audio", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ExternalServiceId", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Tags", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsFolder", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "InheritedParentalRatingValue", "INT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "UnratedType", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "TopParentId", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsItemByName", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SourceType", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "TrailerTypes", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "CriticRating", "Float", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "CriticRatingSummary", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "InheritedTags", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "CleanName", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "PresentationUniqueKey", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SlugName", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "OriginalTitle", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "PrimaryVersionId", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "DateLastMediaAdded", "DATETIME", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Album", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "IsVirtualItem", "BIT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SeriesName", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "UserDataKey", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SeasonName", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SeasonId", "GUID", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SeriesId", "GUID", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "SeriesSortName", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ExternalSeriesId", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ShortOverview", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Tagline", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Keywords", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ProviderIds", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Images", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ProductionLocations", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ThemeSongIds", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ThemeVideoIds", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "TotalBitrate", "INT", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ExtraType", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "Artists", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "AlbumArtists", "Text", existingColumnNames);
+ AddColumn(db, "TypedBaseItems", "ExternalId", "Text", existingColumnNames);
+
+ existingColumnNames = GetColumnNames(db, "ItemValues");
+ AddColumn(db, "ItemValues", "CleanValue", "Text", existingColumnNames);
+
+ existingColumnNames = GetColumnNames(db, ChaptersTableName);
+ AddColumn(db, ChaptersTableName, "ImageDateModified", "DATETIME", existingColumnNames);
+
+ existingColumnNames = GetColumnNames(db, "MediaStreams");
+ AddColumn(db, "MediaStreams", "IsAvc", "BIT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "TimeBase", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "CodecTimeBase", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "Title", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "NalLengthSize", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "Comment", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "CodecTag", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "PixelFormat", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "BitDepth", "INT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "RefFrames", "INT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "KeyFrames", "TEXT", existingColumnNames);
+ AddColumn(db, "MediaStreams", "IsAnamorphic", "BIT", existingColumnNames);
+ });
+
+ string[] postQueries =
+
+ {
// obsolete
"drop index if exists idx_TypedBaseItems",
"drop index if exists idx_mediastreams",
@@ -350,11 +360,15 @@ namespace Emby.Server.Implementations.Data
"create index if not exists idx_ItemValues7 on ItemValues(Type,CleanValue,ItemId)"
};
- _connection.RunQueries(postQueries);
+ connection.RunQueries(postQueries);
+
+ //SqliteExtensions.Attach(_connection, Path.Combine(_config.ApplicationPaths.DataPath, "userdata_v2.db"), "UserDataDb");
+ //await Vacuum(_connection).ConfigureAwait(false);
+ }
- //SqliteExtensions.Attach(_connection, Path.Combine(_config.ApplicationPaths.DataPath, "userdata_v2.db"), "UserDataDb");
userDataRepo.Initialize(WriteLock);
- //await Vacuum(_connection).ConfigureAwait(false);
+
+ _backgroundConnection = CreateConnection(true);
}
private readonly string[] _retriveItemColumns =
@@ -2127,15 +2141,6 @@ namespace Emby.Server.Implementations.Data
}
}
- protected override void CloseConnection()
- {
- if (_connection != null)
- {
- _connection.Dispose();
- _connection = null;
- }
- }
-
private bool EnableJoinUserData(InternalItemsQuery query)
{
if (query.User == null)
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index 81a6b8508..b7d2d1748 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -38,6 +38,7 @@ using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.FileOrganization;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Threading;
+using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
@@ -1550,6 +1551,49 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
// _logger.ErrorException("Error processing new recording", ex);
// }
//}
+ PostProcessRecording(timer, path);
+ }
+
+ private void PostProcessRecording(TimerInfo timer, string path)
+ {
+ var options = GetConfiguration();
+ if (string.IsNullOrWhiteSpace(options.RecordingPostProcessor))
+ {
+ return;
+ }
+
+ try
+ {
+ var process = _processFactory.Create(new ProcessOptions
+ {
+ Arguments = GetPostProcessArguments(path, options.RecordingPostProcessorArguments),
+ CreateNoWindow = true,
+ EnableRaisingEvents = true,
+ ErrorDialog = false,
+ FileName = options.RecordingPostProcessor,
+ IsHidden = true,
+ UseShellExecute = true
+ });
+
+ _logger.Info("Running recording post processor {0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments);
+
+ process.Exited += Process_Exited;
+ process.Start();
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error running recording post processor", ex);
+ }
+ }
+
+ private string GetPostProcessArguments(string path, string arguments)
+ {
+ return arguments.Replace("{path}", path, StringComparison.OrdinalIgnoreCase);
+ }
+
+ private void Process_Exited(object sender, EventArgs e)
+ {
+ ((IProcess)sender).Dispose();
}
private void SaveNfo(TimerInfo timer, string recordingPath, string seriesPath)