diff --git a/Emby.Drawing/GDI/DynamicImageHelpers.cs b/Emby.Drawing/GDI/DynamicImageHelpers.cs
index 7b8ef2f98..59340af8a 100644
--- a/Emby.Drawing/GDI/DynamicImageHelpers.cs
+++ b/Emby.Drawing/GDI/DynamicImageHelpers.cs
@@ -33,7 +33,9 @@ namespace Emby.Drawing.GDI
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
- graphics.CompositingMode = CompositingMode.SourceCopy;
+
+ // SourceCopy causes the image to be blank in OSX
+ //graphics.CompositingMode = CompositingMode.SourceCopy;
for (var row = 0; row < rows; row++)
{
@@ -44,19 +46,9 @@ namespace Emby.Drawing.GDI
if (files.Count > index)
{
- using (var fileStream = fileSystem.GetFileStream(files[index], FileMode.Open, FileAccess.Read, FileShare.Read, true))
+ using (var imgtemp = Image.FromFile(files[index]))
{
- using (var memoryStream = new MemoryStream())
- {
- fileStream.CopyTo(memoryStream);
-
- memoryStream.Position = 0;
-
- using (var imgtemp = Image.FromStream(memoryStream, true, false))
- {
- graphics.DrawImage(imgtemp, x, y, cellWidth, cellHeight);
- }
- }
+ graphics.DrawImage(imgtemp, x, y, cellWidth, cellHeight);
}
}
@@ -90,7 +82,9 @@ namespace Emby.Drawing.GDI
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
- graphics.CompositingMode = CompositingMode.SourceCopy;
+
+ // SourceCopy causes the image to be blank in OSX
+ //graphics.CompositingMode = CompositingMode.SourceCopy;
for (var row = 0; row < rows; row++)
{
@@ -99,21 +93,10 @@ namespace Emby.Drawing.GDI
var x = col * singleSize;
var y = row * singleSize;
- using (var fileStream = fileSystem.GetFileStream(files[index], FileMode.Open, FileAccess.Read, FileShare.Read, true))
+ using (var imgtemp = Image.FromFile(files[index]))
{
- using (var memoryStream = new MemoryStream())
- {
- fileStream.CopyTo(memoryStream);
-
- memoryStream.Position = 0;
-
- using (var imgtemp = Image.FromStream(memoryStream, true, false))
- {
- graphics.DrawImage(imgtemp, x, y, singleSize, singleSize);
- }
- }
+ graphics.DrawImage(imgtemp, x, y, singleSize, singleSize);
}
-
index++;
}
}
@@ -121,16 +104,5 @@ namespace Emby.Drawing.GDI
}
}
}
-
- private static Stream GetStream(Image image)
- {
- var ms = new MemoryStream();
-
- image.Save(ms, ImageFormat.Png);
-
- ms.Position = 0;
-
- return ms;
- }
}
}
diff --git a/Emby.Drawing/GDI/GDIImageEncoder.cs b/Emby.Drawing/GDI/GDIImageEncoder.cs
index bdd1c5a22..afd16899d 100644
--- a/Emby.Drawing/GDI/GDIImageEncoder.cs
+++ b/Emby.Drawing/GDI/GDIImageEncoder.cs
@@ -119,9 +119,11 @@ namespace Emby.Drawing.GDI
thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality;
thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
thumbnailGraph.PixelOffsetMode = PixelOffsetMode.HighQuality;
- thumbnailGraph.CompositingMode = !hasPostProcessing ?
- CompositingMode.SourceCopy :
- CompositingMode.SourceOver;
+
+ // SourceCopy causes the image to be blank in OSX
+ //thumbnailGraph.CompositingMode = !hasPostProcessing ?
+ // CompositingMode.SourceCopy :
+ // CompositingMode.SourceOver;
SetBackgroundColor(thumbnailGraph, options);
diff --git a/MediaBrowser.Api/Movies/MoviesService.cs b/MediaBrowser.Api/Movies/MoviesService.cs
index 755713c84..66f2fac81 100644
--- a/MediaBrowser.Api/Movies/MoviesService.cs
+++ b/MediaBrowser.Api/Movies/MoviesService.cs
@@ -192,7 +192,8 @@ namespace MediaBrowser.Api.Movies
SortOrder = SortOrder.Descending,
Limit = 7,
ParentId = parentIdGuid,
- Recursive = true
+ Recursive = true,
+ IsPlayed = true
};
var recentlyPlayedMovies = _libraryManager.GetItemList(query).ToList();
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 6f4b6323d..a022c83d8 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -644,7 +644,7 @@ namespace MediaBrowser.Api.Playback
{
var maxHeightParam = request.MaxHeight.Value.ToString(UsCulture);
- filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(ih\\,{0})", maxHeightParam));
+ filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(max(iw/dar\\,ih)\\,{0})", maxHeightParam));
}
}
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs
index e120f2e23..597ecf973 100644
--- a/MediaBrowser.Controller/Entities/CollectionFolder.cs
+++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs
@@ -106,6 +106,7 @@ namespace MediaBrowser.Controller.Entities
{
LibraryOptions[path] = options;
+ options.SchemaVersion = 1;
XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path));
}
}
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index a783910e3..c0912708c 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -724,6 +724,15 @@ namespace MediaBrowser.Controller.Providers
}
break;
}
+ case "TvMazeId":
+ {
+ var id = reader.ReadElementContentAsString();
+ if (!string.IsNullOrWhiteSpace(id))
+ {
+ item.SetProviderId(MetadataProviders.TvMaze, id);
+ }
+ break;
+ }
case "AudioDbArtistId":
{
var id = reader.ReadElementContentAsString();
diff --git a/MediaBrowser.Dlna/PlayTo/Device.cs b/MediaBrowser.Dlna/PlayTo/Device.cs
index 6ad5899da..174ca871a 100644
--- a/MediaBrowser.Dlna/PlayTo/Device.cs
+++ b/MediaBrowser.Dlna/PlayTo/Device.cs
@@ -479,17 +479,17 @@ namespace MediaBrowser.Dlna.PlayTo
_successiveStopCount++;
_connectFailureCount++;
- if (_successiveStopCount >= maxSuccessiveStopReturns)
- {
- RestartTimerInactive();
- }
- if (_connectFailureCount >= maxSuccessiveStopReturns)
+ if (_connectFailureCount >= 3)
{
if (OnDeviceUnavailable != null)
{
OnDeviceUnavailable();
}
}
+ if (_successiveStopCount >= maxSuccessiveStopReturns)
+ {
+ RestartTimerInactive();
+ }
}
catch (Exception ex)
{
diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs
index 7429330bd..913b34016 100644
--- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs
+++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs
@@ -99,11 +99,11 @@ namespace MediaBrowser.Dlna.PlayTo
public void Init(Device device)
{
_device = device;
+ _device.OnDeviceUnavailable = OnDeviceUnavailable;
_device.PlaybackStart += _device_PlaybackStart;
_device.PlaybackProgress += _device_PlaybackProgress;
_device.PlaybackStopped += _device_PlaybackStopped;
_device.MediaChanged += _device_MediaChanged;
- _device.OnDeviceUnavailable = OnDeviceUnavailable;
_device.Start();
diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs
index 2b3f53aeb..d472d4812 100644
--- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs
+++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs
@@ -553,6 +553,13 @@ namespace MediaBrowser.LocalMetadata.Savers
builder.Append("" + SecurityElement.Escape(externalId) + "");
}
+ externalId = item.GetProviderId(MetadataProviders.TvMaze);
+
+ if (!string.IsNullOrEmpty(externalId))
+ {
+ builder.Append("" + SecurityElement.Escape(externalId) + "");
+ }
+
var hasTagline = item as IHasTaglines;
if (hasTagline != null)
{
diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
index aaa5593b4..6bf414dfa 100644
--- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
@@ -978,7 +978,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
{
var maxHeightParam = request.MaxHeight.Value.ToString(UsCulture);
- filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(ih\\,{0})", maxHeightParam));
+ filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(max(iw/dar\\,ih)\\,{0})", maxHeightParam));
}
}
diff --git a/MediaBrowser.Model/Configuration/EncodingOptions.cs b/MediaBrowser.Model/Configuration/EncodingOptions.cs
index 4ef15604a..3c03dc12a 100644
--- a/MediaBrowser.Model/Configuration/EncodingOptions.cs
+++ b/MediaBrowser.Model/Configuration/EncodingOptions.cs
@@ -18,6 +18,7 @@ namespace MediaBrowser.Model.Configuration
EnableThrottling = true;
ThrottleDelaySeconds = 180;
EncodingThreadCount = -1;
+ VaapiDevice = "/dev/dri/card0";
}
}
}
diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs
index e15df37c1..3fe694553 100644
--- a/MediaBrowser.Model/Configuration/LibraryOptions.cs
+++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs
@@ -4,10 +4,13 @@
{
public bool EnableArchiveMediaFiles { get; set; }
public bool EnablePhotos { get; set; }
+ public bool EnableRealtimeMonitor { get; set; }
+ public int SchemaVersion { get; set; }
public LibraryOptions()
{
EnablePhotos = true;
+ EnableRealtimeMonitor = true;
}
}
}
diff --git a/MediaBrowser.Model/Configuration/UserConfiguration.cs b/MediaBrowser.Model/Configuration/UserConfiguration.cs
index b081e2973..313c5243c 100644
--- a/MediaBrowser.Model/Configuration/UserConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/UserConfiguration.cs
@@ -27,8 +27,6 @@ namespace MediaBrowser.Model.Configuration
public bool DisplayMissingEpisodes { get; set; }
public bool DisplayUnairedEpisodes { get; set; }
- public bool GroupMoviesIntoBoxSets { get; set; }
-
public string[] ExcludeFoldersFromGrouping { get; set; }
public string[] GroupedFolders { get; set; }
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index f1b3e7bab..d042125b9 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -602,19 +602,16 @@ namespace MediaBrowser.Model.Dlna
private int GetAudioBitrate(string subProtocol, int? maxTotalBitrate, int? targetAudioChannels, string targetAudioCodec, MediaStream audioStream)
{
- var defaultBitrate = 128000;
- if (StringHelper.EqualsIgnoreCase(targetAudioCodec, "ac3"))
+ var defaultBitrate = audioStream.BitRate ?? 192000;
+ // Reduce the bitrate if we're downmixing
+ if (targetAudioChannels.HasValue && audioStream != null && audioStream.Channels.HasValue && targetAudioChannels.Value < audioStream.Channels.Value)
{
- defaultBitrate = 192000;
- }
- if (!string.IsNullOrEmpty(targetAudioCodec) && audioStream != null && StringHelper.EqualsIgnoreCase(audioStream.Codec, targetAudioCodec))
- {
- defaultBitrate = audioStream.BitRate ?? defaultBitrate;
+ defaultBitrate = StringHelper.EqualsIgnoreCase(targetAudioCodec, "ac3") ? 192000 : 128000;
}
if (targetAudioChannels.HasValue)
{
- if (targetAudioChannels.Value >= 5 && (maxTotalBitrate ?? 0) >= 1500000)
+ if (targetAudioChannels.Value >= 5 && (maxTotalBitrate ?? 0) >= 1200000)
{
if (StringHelper.EqualsIgnoreCase(targetAudioCodec, "ac3"))
{
diff --git a/MediaBrowser.Model/Entities/MetadataProviders.cs b/MediaBrowser.Model/Entities/MetadataProviders.cs
index f5ab0c1d4..1e7bde934 100644
--- a/MediaBrowser.Model/Entities/MetadataProviders.cs
+++ b/MediaBrowser.Model/Entities/MetadataProviders.cs
@@ -39,6 +39,7 @@ namespace MediaBrowser.Model.Entities
TvRage = 15,
AudioDbArtist = 16,
AudioDbAlbum = 17,
- MusicBrainzTrack = 18
+ MusicBrainzTrack = 18,
+ TvMaze = 19
}
}
diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
index ea9e58ee4..7ed4dc71e 100644
--- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
+++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
@@ -172,27 +172,29 @@ namespace MediaBrowser.Server.Implementations.IO
}
}
- public void Start()
+ private bool IsLibraryMonitorEnabaled(BaseItem item)
{
- if (EnableLibraryMonitor)
+ var options = LibraryManager.GetLibraryOptions(item);
+
+ if (options != null && options.SchemaVersion >= 1)
{
- StartInternal();
+ return options.EnableRealtimeMonitor;
}
+
+ return EnableLibraryMonitor;
}
- ///
- /// Starts this instance.
- ///
- private void StartInternal()
+ public void Start()
{
LibraryManager.ItemAdded += LibraryManager_ItemAdded;
LibraryManager.ItemRemoved += LibraryManager_ItemRemoved;
- var pathsToWatch = new List { LibraryManager.RootFolder.Path };
+ var pathsToWatch = new List { };
var paths = LibraryManager
.RootFolder
.Children
+ .Where(IsLibraryMonitorEnabaled)
.OfType()
.SelectMany(f => f.PhysicalLocations)
.Distinct(StringComparer.OrdinalIgnoreCase)
@@ -213,6 +215,14 @@ namespace MediaBrowser.Server.Implementations.IO
}
}
+ private void StartWatching(BaseItem item)
+ {
+ if (IsLibraryMonitorEnabaled(item))
+ {
+ StartWatchingPath(item.Path);
+ }
+ }
+
///
/// Handles the ItemRemoved event of the LibraryManager control.
///
@@ -235,7 +245,7 @@ namespace MediaBrowser.Server.Implementations.IO
{
if (e.Item.GetParent() is AggregateFolder)
{
- StartWatchingPath(e.Item.Path);
+ StartWatching(e.Item);
}
}
@@ -382,14 +392,6 @@ namespace MediaBrowser.Server.Implementations.IO
Logger.ErrorException("Error in Directory watcher for: " + dw.Path, ex);
DisposeWatcher(dw);
-
- if (ConfigurationManager.Configuration.EnableLibraryMonitor == AutoOnOff.Auto)
- {
- Logger.Info("Disabling realtime monitor to prevent future instability");
-
- ConfigurationManager.Configuration.EnableLibraryMonitor = AutoOnOff.Disabled;
- Stop();
- }
}
///
@@ -420,8 +422,8 @@ namespace MediaBrowser.Server.Implementations.IO
var filename = Path.GetFileName(path);
- var monitorPath = !string.IsNullOrEmpty(filename) &&
- !_alwaysIgnoreFiles.Contains(filename, StringComparer.OrdinalIgnoreCase) &&
+ var monitorPath = !string.IsNullOrEmpty(filename) &&
+ !_alwaysIgnoreFiles.Contains(filename, StringComparer.OrdinalIgnoreCase) &&
!_alwaysIgnoreExtensions.Contains(Path.GetExtension(path) ?? string.Empty, StringComparer.OrdinalIgnoreCase);
// Ignore certain files
diff --git a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj
index 104923f8e..f04b833b9 100644
--- a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj
+++ b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj
@@ -390,6 +390,9 @@
Resources\dashboard-ui\autoorganizetv.html
+
+ Resources\dashboard-ui\camerauploadsettings.html
+
Resources\dashboard-ui\channelitems.html
@@ -1128,9 +1131,6 @@
Resources\dashboard-ui\bower_components\emby-webcomponents\multidownload.js
-
- Resources\dashboard-ui\bower_components\emby-webcomponents\objectassign.js
-
Resources\dashboard-ui\bower_components\emby-webcomponents\playmenu.js
@@ -1155,6 +1155,9 @@
Resources\dashboard-ui\bower_components\emby-webcomponents\shortcuts.js
+
+ Resources\dashboard-ui\bower_components\emby-webcomponents\thememediaplayer.js
+
Resources\dashboard-ui\bower_components\emby-webcomponents\visibleinviewport.js
@@ -1566,6 +1569,15 @@
Resources\dashboard-ui\bower_components\emby-webcomponents\playlisteditor\playlisteditor.js
+
+ Resources\dashboard-ui\bower_components\emby-webcomponents\polyfills\array.js
+
+
+ Resources\dashboard-ui\bower_components\emby-webcomponents\polyfills\bind.js
+
+
+ Resources\dashboard-ui\bower_components\emby-webcomponents\polyfills\objectassign.js
+
Resources\dashboard-ui\bower_components\emby-webcomponents\prompt\nativeprompt.js
@@ -1773,6 +1785,9 @@
Resources\dashboard-ui\bower_components\emby-webcomponents\subtitleeditor\subtitleeditor.template.html
+
+ Resources\dashboard-ui\bower_components\emby-webcomponents\sync\sync.js
+
Resources\dashboard-ui\bower_components\emby-webcomponents\toast\toast.css
@@ -1860,36 +1875,6 @@
Resources\dashboard-ui\bower_components\fetch\fetch.js
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\.bower.json
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\CONTRIBUTING.md
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\FAQ.md
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\README.md
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\bower.json
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\fingerprint2.js
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\gulpfile.js
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\index.html
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\package.json
-
-
- Resources\dashboard-ui\bower_components\fingerprintjs2\dist\fingerprint2.min.js
-
Resources\dashboard-ui\bower_components\font-roboto\.bower.json
@@ -2094,45 +2079,6 @@
Resources\dashboard-ui\bower_components\iron-a11y-keys-behavior\test\index.html
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.bower.json
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.gitignore
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.travis.yml
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\CONTRIBUTING.md
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\README.md
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\bower.json
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\hero.svg
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\iron-autogrow-textarea.html
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.github\ISSUE_TEMPLATE.md
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\demo\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\test\basic.html
-
-
- Resources\dashboard-ui\bower_components\iron-autogrow-textarea\test\index.html
-
Resources\dashboard-ui\bower_components\iron-behaviors\.bower.json
@@ -2502,51 +2448,6 @@
Resources\dashboard-ui\bower_components\iron-iconset-svg\test\iron-iconset-svg.html
-
- Resources\dashboard-ui\bower_components\iron-input\.bower.json
-
-
- Resources\dashboard-ui\bower_components\iron-input\.gitignore
-
-
- Resources\dashboard-ui\bower_components\iron-input\.travis.yml
-
-
- Resources\dashboard-ui\bower_components\iron-input\CONTRIBUTING.md
-
-
- Resources\dashboard-ui\bower_components\iron-input\README.md
-
-
- Resources\dashboard-ui\bower_components\iron-input\bower.json
-
-
- Resources\dashboard-ui\bower_components\iron-input\hero.svg
-
-
- Resources\dashboard-ui\bower_components\iron-input\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-input\iron-input.html
-
-
- Resources\dashboard-ui\bower_components\iron-input\.github\ISSUE_TEMPLATE.md
-
-
- Resources\dashboard-ui\bower_components\iron-input\demo\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-input\test\disabled-input.html
-
-
- Resources\dashboard-ui\bower_components\iron-input\test\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-input\test\iron-input.html
-
-
- Resources\dashboard-ui\bower_components\iron-input\test\letters-only.html
-
Resources\dashboard-ui\bower_components\iron-meta\.bower.json
@@ -2574,6 +2475,9 @@
Resources\dashboard-ui\bower_components\iron-meta\iron-meta.html
+
+ Resources\dashboard-ui\bower_components\iron-meta\.github\ISSUE_TEMPLATE.md
+
Resources\dashboard-ui\bower_components\iron-meta\demo\index.html
@@ -2586,45 +2490,6 @@
Resources\dashboard-ui\bower_components\iron-meta\test\iron-meta.html
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\.bower.json
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\.gitignore
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\.travis.yml
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\CONTRIBUTING.md
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\README.md
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\bower.json
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\iron-range-behavior.html
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\.github\ISSUE_TEMPLATE.md
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\demo\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\test\basic.html
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\test\index.html
-
-
- Resources\dashboard-ui\bower_components\iron-range-behavior\test\x-progressbar.html
-
Resources\dashboard-ui\bower_components\iron-validatable-behavior\.bower.json
@@ -3252,126 +3117,6 @@
Resources\dashboard-ui\bower_components\paper-icon-button\test\index.html
-
- Resources\dashboard-ui\bower_components\paper-input\.bower.json
-
-
- Resources\dashboard-ui\bower_components\paper-input\.gitignore
-
-
- Resources\dashboard-ui\bower_components\paper-input\.travis.yml
-
-
- Resources\dashboard-ui\bower_components\paper-input\CONTRIBUTING.md
-
-
- Resources\dashboard-ui\bower_components\paper-input\README.md
-
-
- Resources\dashboard-ui\bower_components\paper-input\all-imports.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\bower.json
-
-
- Resources\dashboard-ui\bower_components\paper-input\hero.svg
-
-
- Resources\dashboard-ui\bower_components\paper-input\index.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\paper-input-addon-behavior.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\paper-input-behavior.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\paper-input-char-counter.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\paper-input-container.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\paper-input-error.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\paper-input.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\paper-textarea.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\.github\ISSUE_TEMPLATE.md
-
-
- Resources\dashboard-ui\bower_components\paper-input\demo\index.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\demo\ssn-input.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\demo\ssn-validator.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\test\index.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\test\letters-only.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\test\paper-input-char-counter.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\test\paper-input-container.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\test\paper-input-error.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\test\paper-input.html
-
-
- Resources\dashboard-ui\bower_components\paper-input\test\paper-textarea.html
-
-
- Resources\dashboard-ui\bower_components\paper-progress\.bower.json
-
-
- Resources\dashboard-ui\bower_components\paper-progress\.gitignore
-
-
- Resources\dashboard-ui\bower_components\paper-progress\.travis.yml
-
-
- Resources\dashboard-ui\bower_components\paper-progress\CONTRIBUTING.md
-
-
- Resources\dashboard-ui\bower_components\paper-progress\README.md
-
-
- Resources\dashboard-ui\bower_components\paper-progress\bower.json
-
-
- Resources\dashboard-ui\bower_components\paper-progress\hero.svg
-
-
- Resources\dashboard-ui\bower_components\paper-progress\index.html
-
-
- Resources\dashboard-ui\bower_components\paper-progress\paper-progress.html
-
-
- Resources\dashboard-ui\bower_components\paper-progress\.github\ISSUE_TEMPLATE.md
-
-
- Resources\dashboard-ui\bower_components\paper-progress\demo\index.html
-
-
- Resources\dashboard-ui\bower_components\paper-progress\test\basic.html
-
-
- Resources\dashboard-ui\bower_components\paper-progress\test\index.html
-
Resources\dashboard-ui\bower_components\paper-ripple\.bower.json
@@ -3729,6 +3474,9 @@
Resources\dashboard-ui\components\tvproviders\xmltv.template.html
+
+ Resources\dashboard-ui\css\autoorganizetable.css
+
Resources\dashboard-ui\css\chromecast.css
@@ -3801,6 +3549,9 @@
Resources\dashboard-ui\css\images\rotten.png
+
+ Resources\dashboard-ui\css\images\throbber.gif
+
Resources\dashboard-ui\css\images\userflyoutdefault.png
@@ -3987,6 +3738,48 @@
Resources\dashboard-ui\css\images\userdata\password.png
+
+ Resources\dashboard-ui\dashboard\aboutpage.js
+
+
+ Resources\dashboard-ui\dashboard\autoorganizelog.js
+
+
+ Resources\dashboard-ui\dashboard\autoorganizesmart.js
+
+
+ Resources\dashboard-ui\dashboard\autoorganizetv.js
+
+
+ Resources\dashboard-ui\dashboard\cinemamodeconfiguration.js
+
+
+ Resources\dashboard-ui\dashboard\dashboardgeneral.js
+
+
+ Resources\dashboard-ui\dashboard\dashboardhosting.js
+
+
+ Resources\dashboard-ui\dashboard\devicesupload.js
+
+
+ Resources\dashboard-ui\dashboard\librarydisplay.js
+
+
+ Resources\dashboard-ui\dashboard\librarysettings.js
+
+
+ Resources\dashboard-ui\dashboard\livetvtunerprovider-satip.js
+
+
+ Resources\dashboard-ui\dashboard\logpage.js
+
+
+ Resources\dashboard-ui\dashboard\wizardcomponents.js
+
+
+ Resources\dashboard-ui\dashboard\wizardfinishpage.js
+
Resources\dashboard-ui\devices\android\android.css
@@ -4008,9 +3801,6 @@
Resources\dashboard-ui\legacy\selectmenu.js
-
- Resources\dashboard-ui\scripts\aboutpage.js
-
Resources\dashboard-ui\scripts\addpluginpage.js
@@ -4020,14 +3810,8 @@
Resources\dashboard-ui\scripts\autobackdrops.js
-
- Resources\dashboard-ui\scripts\autoorganizelog.js
-
-
- Resources\dashboard-ui\scripts\autoorganizesmart.js
-
-
- Resources\dashboard-ui\scripts\autoorganizetv.js
+
+ Resources\dashboard-ui\scripts\camerauploadsettings.js
Resources\dashboard-ui\scripts\channelitems.js
@@ -4041,18 +3825,9 @@
Resources\dashboard-ui\scripts\chromecast.js
-
- Resources\dashboard-ui\scripts\cinemamodeconfiguration.js
-
Resources\dashboard-ui\scripts\connectlogin.js
-
- Resources\dashboard-ui\scripts\dashboardgeneral.js
-
-
- Resources\dashboard-ui\scripts\dashboardhosting.js
-
Resources\dashboard-ui\scripts\dashboardpage.js
@@ -4062,9 +3837,6 @@
Resources\dashboard-ui\scripts\devices.js
-
- Resources\dashboard-ui\scripts\devicesupload.js
-
Resources\dashboard-ui\scripts\dlnaprofile.js
@@ -4140,18 +3912,12 @@
Resources\dashboard-ui\scripts\librarybrowser.js
-
- Resources\dashboard-ui\scripts\librarydisplay.js
-
Resources\dashboard-ui\scripts\librarymenu.js
Resources\dashboard-ui\scripts\librarypathmapping.js
-
- Resources\dashboard-ui\scripts\librarysettings.js
-
Resources\dashboard-ui\scripts\livetvchannel.js
@@ -4197,18 +3963,12 @@
Resources\dashboard-ui\scripts\livetvtunerprovider-m3u.js
-
- Resources\dashboard-ui\scripts\livetvtunerprovider-satip.js
-
Resources\dashboard-ui\scripts\localsync.js
Resources\dashboard-ui\scripts\loginpage.js
-
- Resources\dashboard-ui\scripts\logpage.js
-
Resources\dashboard-ui\scripts\mediacontroller.js
@@ -4371,9 +4131,6 @@
Resources\dashboard-ui\scripts\supporterkeypage.js
-
- Resources\dashboard-ui\scripts\sync.js
-
Resources\dashboard-ui\scripts\syncactivity.js
@@ -4386,9 +4143,6 @@
Resources\dashboard-ui\scripts\taskbutton.js
-
- Resources\dashboard-ui\scripts\thememediaplayer.js
-
Resources\dashboard-ui\scripts\tvgenres.js
@@ -4431,15 +4185,9 @@
Resources\dashboard-ui\scripts\wizardagreement.js
-
- Resources\dashboard-ui\scripts\wizardcomponents.js
-
Resources\dashboard-ui\scripts\wizardcontroller.js
-
- Resources\dashboard-ui\scripts\wizardfinishpage.js
-
Resources\dashboard-ui\scripts\wizardlivetvguide.js
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index 75f2d2427..9c5015b0e 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -386,7 +386,6 @@ namespace MediaBrowser.Server.Startup.Common
new MovieDbEpisodeProviderMigration(ServerConfigurationManager),
new DbMigration(ServerConfigurationManager, TaskManager),
new UpdateLevelMigration(ServerConfigurationManager, this, HttpClient, JsonSerializer, _releaseAssetFilename),
- new CollectionGroupingMigration(ServerConfigurationManager, UserManager),
new CollectionsViewMigration(ServerConfigurationManager, UserManager)
};
diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
index bbef5caea..5ee7d49e8 100644
--- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
+++ b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
@@ -70,7 +70,6 @@
-
diff --git a/MediaBrowser.Server.Startup.Common/Migrations/CollectionGroupingMigration.cs b/MediaBrowser.Server.Startup.Common/Migrations/CollectionGroupingMigration.cs
deleted file mode 100644
index 5041c49b8..000000000
--- a/MediaBrowser.Server.Startup.Common/Migrations/CollectionGroupingMigration.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Linq;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Library;
-
-namespace MediaBrowser.Server.Startup.Common.Migrations
-{
- public class CollectionGroupingMigration : IVersionMigration
- {
- private readonly IServerConfigurationManager _config;
- private readonly IUserManager _userManager;
-
- public CollectionGroupingMigration(IServerConfigurationManager config, IUserManager userManager)
- {
- _config = config;
- _userManager = userManager;
- }
-
- public void Run()
- {
- var migrationKey = this.GetType().Name;
- var migrationKeyList = _config.Configuration.Migrations.ToList();
-
- if (!migrationKeyList.Contains(migrationKey))
- {
- if (_config.Configuration.IsStartupWizardCompleted)
- {
- if (_userManager.Users.Any(i => i.Configuration.GroupMoviesIntoBoxSets))
- {
- _config.Configuration.EnableGroupingIntoCollections = true;
- }
- }
-
- migrationKeyList.Add(migrationKey);
- _config.Configuration.Migrations = migrationKeyList.ToArray();
- _config.SaveConfiguration();
- }
-
- }
- }
-}
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
index 0c8501e62..f777ae16b 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
@@ -827,6 +827,15 @@ namespace MediaBrowser.XbmcMetadata.Parsers
}
break;
}
+ case "tvmazeid":
+ {
+ var id = reader.ReadElementContentAsString();
+ if (!string.IsNullOrWhiteSpace(id))
+ {
+ item.SetProviderId(MetadataProviders.TvMaze, id);
+ }
+ break;
+ }
case "audiodbartistid":
{
var id = reader.ReadElementContentAsString();
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index 954fb2a47..c28a15a93 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -822,6 +822,12 @@ namespace MediaBrowser.XbmcMetadata.Savers
writer.WriteElementString("tvrageid", externalId);
}
+ externalId = item.GetProviderId(MetadataProviders.TvMaze);
+ if (!string.IsNullOrEmpty(externalId))
+ {
+ writer.WriteElementString("tvmazeid", externalId);
+ }
+
if (options.SaveImagePathsInNfo)
{
AddImages(item, writer, libraryManager, config);