diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index d8da311960..d17b6a4f8d 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -138,7 +138,7 @@ namespace MediaBrowser.Controller.Entities case CollectionType.GameFavorites: return GetFavoriteGames(parent, user, query); - case CollectionType.TvSeries: + case CollectionType.ViewTypeTvShowSeries: return GetTvSeries(parent, user, query); case CollectionType.TvGenres: @@ -183,6 +183,12 @@ namespace MediaBrowser.Controller.Entities case CollectionType.MusicArtists: return GetMusicArtists(parent, user, query); + case CollectionType.TvFavoriteEpisodes: + return GetFavoriteEpisodes(parent, user, query); + + case CollectionType.TvFavoriteSeries: + return GetFavoriteSeries(parent, user, query); + default: return GetResult(GetMediaFolders(user).SelectMany(i => i.GetChildren(user, true)), query); } @@ -302,6 +308,20 @@ namespace MediaBrowser.Controller.Entities return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.Movies, CollectionType.BoxSets, string.Empty }).Where(i => i is Movie), query); } + private QueryResult GetFavoriteSeries(Folder parent, User user, UserItemsQuery query) + { + query.IsFavorite = true; + + return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.TvShows, string.Empty }).Where(i => i is Series), query); + } + + private QueryResult GetFavoriteEpisodes(Folder parent, User user, UserItemsQuery query) + { + query.IsFavorite = true; + + return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.TvShows, string.Empty }).Where(i => i is Episode), query); + } + private QueryResult GetMovieMovies(Folder parent, User user, UserItemsQuery query) { return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.Movies, CollectionType.BoxSets, string.Empty }).Where(i => i is Movie), query); @@ -368,8 +388,9 @@ namespace MediaBrowser.Controller.Entities list.Add(await GetUserView(category, CollectionType.TvResume, user, "0", parent).ConfigureAwait(false)); list.Add(await GetUserView(category, CollectionType.TvNextUp, user, "1", parent).ConfigureAwait(false)); list.Add(await GetUserView(category, CollectionType.TvLatest, user, "2", parent).ConfigureAwait(false)); - list.Add(await GetUserView(category, CollectionType.TvSeries, user, "3", parent).ConfigureAwait(false)); - //list.Add(await GetUserView(CollectionType.TvFavorites, user, "4", parent).ConfigureAwait(false)); + list.Add(await GetUserView(category, CollectionType.ViewTypeTvShowSeries, user, "3", parent).ConfigureAwait(false)); + list.Add(await GetUserView(category, CollectionType.TvFavoriteSeries, user, "4", parent).ConfigureAwait(false)); + list.Add(await GetUserView(category, CollectionType.TvFavoriteEpisodes, user, "5", parent).ConfigureAwait(false)); //list.Add(await GetUserView(CollectionType.TvGenres, user, "5", parent).ConfigureAwait(false)); return GetResult(list, query); diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index bcfd566a9c..d3580010cb 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -503,6 +503,9 @@ namespace MediaBrowser.Dlna.Didl private XmlElement CreateObjectClass(XmlDocument result, BaseItem item) { + // More types here + // http://oss.linn.co.uk/repos/Public/LibUpnpCil/DidlLite/UpnpAv/Test/TestDidlLite.cs + var objectClass = result.CreateElement("upnp", "class", NS_UPNP); if (item.IsFolder) @@ -527,6 +530,10 @@ namespace MediaBrowser.Dlna.Didl { classType = "object.container.playlistContainer"; } + else if (item is PhotoAlbum) + { + classType = "object.container.album.photoAlbum"; + } } objectClass.InnerText = classType ?? "object.container.storageFolder"; @@ -545,11 +552,23 @@ namespace MediaBrowser.Dlna.Didl { objectClass.InnerText = "object.item.videoItem.movie"; } + else if (!_profile.RequiresPlainVideoItems && item is MusicVideo) + { + objectClass.InnerText = "object.item.videoItem.musicVideoClip"; + } else { objectClass.InnerText = "object.item.videoItem"; } } + else if (item is MusicGenre) + { + objectClass.InnerText = _profile.RequiresPlainFolders ? "object.container.storageFolder" : "object.container.genre.musicGenre"; + } + else if (item is Genre || item is GameGenre) + { + objectClass.InnerText = _profile.RequiresPlainFolders ? "object.container.storageFolder" : "object.container.genre"; + } else { objectClass.InnerText = "object.item"; diff --git a/MediaBrowser.Dlna/Ssdp/Datagram.cs b/MediaBrowser.Dlna/Ssdp/Datagram.cs index 2554d33c6e..0432c35c16 100644 --- a/MediaBrowser.Dlna/Ssdp/Datagram.cs +++ b/MediaBrowser.Dlna/Ssdp/Datagram.cs @@ -8,8 +8,8 @@ namespace MediaBrowser.Dlna.Ssdp { public class Datagram { - public IPEndPoint ToEndPoint { get; private set; } - public IPEndPoint FromEndPoint { get; private set; } + public EndPoint ToEndPoint { get; private set; } + public EndPoint FromEndPoint { get; private set; } public string Message { get; private set; } /// @@ -24,7 +24,7 @@ namespace MediaBrowser.Dlna.Ssdp private readonly ILogger _logger; - public Datagram(IPEndPoint toEndPoint, IPEndPoint fromEndPoint, ILogger logger, string message, int totalSendCount) + public Datagram(EndPoint toEndPoint, EndPoint fromEndPoint, ILogger logger, string message, int totalSendCount) { Message = message; _logger = logger; diff --git a/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs b/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs index cc9b80d757..56877d82d4 100644 --- a/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs +++ b/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs @@ -87,13 +87,13 @@ namespace MediaBrowser.Dlna.Ssdp try { - //var ip = _networkManager.GetLocalIpAddresses().FirstOrDefault(); + var ip = _networkManager.GetLocalIpAddresses().FirstOrDefault(); - //if (ip != null) - //{ - // e.LocalIp = IPAddress.Parse(ip); - // TryCreateDevice(e); - //} + if (ip != null) + { + e.LocalIp = IPAddress.Parse(ip); + TryCreateDevice(e); + } } catch (OperationCanceledException) { @@ -140,7 +140,8 @@ namespace MediaBrowser.Dlna.Ssdp if (receivedBytes > 0) { - var args = SsdpHelper.ParseSsdpResponse(receiveBuffer, endPoint); + var args = SsdpHelper.ParseSsdpResponse(receiveBuffer); + args.EndPoint = endPoint; args.LocalIp = localIp; TryCreateDevice(args); diff --git a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs b/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs index bac920ecb0..10a9575be2 100644 --- a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs +++ b/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs @@ -101,7 +101,7 @@ namespace MediaBrowser.Dlna.Ssdp ReloadAliveNotifier(); } - public void SendSearchMessage(IPEndPoint localIp) + public void SendSearchMessage(EndPoint localIp) { var values = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -121,7 +121,7 @@ namespace MediaBrowser.Dlna.Ssdp public void SendDatagram(string header, Dictionary values, - IPEndPoint localAddress, + EndPoint localAddress, int sendCount = 1) { SendDatagram(header, values, _ssdpEndp, localAddress, sendCount); @@ -129,8 +129,8 @@ namespace MediaBrowser.Dlna.Ssdp public void SendDatagram(string header, Dictionary values, - IPEndPoint endpoint, - IPEndPoint localAddress, + EndPoint endpoint, + EndPoint localAddress, int sendCount = 1) { var msg = new SsdpMessageBuilder().BuildMessage(header, values); @@ -147,7 +147,7 @@ namespace MediaBrowser.Dlna.Ssdp StartQueueTimer(); } - private void RespondToSearch(IPEndPoint endpoint, string deviceType) + private void RespondToSearch(EndPoint endpoint, string deviceType) { if (_config.GetDlnaConfiguration().EnableDebugLogging) { @@ -267,7 +267,8 @@ namespace MediaBrowser.Dlna.Ssdp _logger.Debug(Encoding.ASCII.GetString(received)); } - var args = SsdpHelper.ParseSsdpResponse(received, (IPEndPoint)endpoint); + var args = SsdpHelper.ParseSsdpResponse(received); + args.EndPoint = endpoint; if (_config.GetDlnaConfiguration().EnableDebugLogging) { diff --git a/MediaBrowser.Dlna/Ssdp/SsdpHelper.cs b/MediaBrowser.Dlna/Ssdp/SsdpHelper.cs index b666140d24..707f0b8777 100644 --- a/MediaBrowser.Dlna/Ssdp/SsdpHelper.cs +++ b/MediaBrowser.Dlna/Ssdp/SsdpHelper.cs @@ -1,14 +1,13 @@ using System; using System.Collections.Generic; using System.IO; -using System.Net; using System.Text; namespace MediaBrowser.Dlna.Ssdp { public class SsdpHelper { - public static SsdpMessageEventArgs ParseSsdpResponse(byte[] data, IPEndPoint endpoint) + public static SsdpMessageEventArgs ParseSsdpResponse(byte[] data) { using (var ms = new MemoryStream(data)) { @@ -35,8 +34,7 @@ namespace MediaBrowser.Dlna.Ssdp return new SsdpMessageEventArgs { Method = method, - Headers = headers, - EndPoint = endpoint + Headers = headers }; } } diff --git a/MediaBrowser.Dlna/Ssdp/SsdpMessageEventArgs.cs b/MediaBrowser.Dlna/Ssdp/SsdpMessageEventArgs.cs index 1894768308..602a5bfc18 100644 --- a/MediaBrowser.Dlna/Ssdp/SsdpMessageEventArgs.cs +++ b/MediaBrowser.Dlna/Ssdp/SsdpMessageEventArgs.cs @@ -8,7 +8,7 @@ namespace MediaBrowser.Dlna.Ssdp { public string Method { get; set; } - public IPEndPoint EndPoint { get; set; } + public EndPoint EndPoint { get; set; } public Dictionary Headers { get; set; } diff --git a/MediaBrowser.LocalMetadata/Savers/AlbumXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/AlbumXmlSaver.cs index 05022464d9..ba334da8c1 100644 --- a/MediaBrowser.LocalMetadata/Savers/AlbumXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/AlbumXmlSaver.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading; namespace MediaBrowser.LocalMetadata.Savers { @@ -18,6 +19,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public AlbumXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -52,7 +60,7 @@ namespace MediaBrowser.LocalMetadata.Savers var xmlFilePath = GetSavePath(item); - XmlSaverHelpers.Save(builder, xmlFilePath, new List { }); + XmlSaverHelpers.Save(builder, xmlFilePath, new List { }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/ArtistXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/ArtistXmlSaver.cs index b932c5c7c7..5b74db2328 100644 --- a/MediaBrowser.LocalMetadata/Savers/ArtistXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/ArtistXmlSaver.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading; namespace MediaBrowser.LocalMetadata.Savers { @@ -18,6 +19,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public ArtistXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -52,7 +60,7 @@ namespace MediaBrowser.LocalMetadata.Savers var xmlFilePath = GetSavePath(item); - XmlSaverHelpers.Save(builder, xmlFilePath, new List { }); + XmlSaverHelpers.Save(builder, xmlFilePath, new List { }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs index db7b40c7de..8cbe69551b 100644 --- a/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading; namespace MediaBrowser.LocalMetadata.Savers { @@ -18,6 +19,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public BoxSetXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -52,7 +60,7 @@ namespace MediaBrowser.LocalMetadata.Savers var xmlFilePath = GetSavePath(item); - XmlSaverHelpers.Save(builder, xmlFilePath, new List { }); + XmlSaverHelpers.Save(builder, xmlFilePath, new List { }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/ChannelXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/ChannelXmlSaver.cs index 3b77830121..b111f6d157 100644 --- a/MediaBrowser.LocalMetadata/Savers/ChannelXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/ChannelXmlSaver.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading; namespace MediaBrowser.LocalMetadata.Savers { @@ -13,6 +14,13 @@ namespace MediaBrowser.LocalMetadata.Savers /// public class ChannelXmlSaver : IMetadataFileSaver { + private readonly IServerConfigurationManager _config; + + public ChannelXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -57,7 +65,7 @@ namespace MediaBrowser.LocalMetadata.Savers XmlSaverHelpers.Save(builder, xmlFilePath, new List { - }); + }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs index 275ec2fe8f..06c13eb8bd 100644 --- a/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs @@ -1,13 +1,14 @@ -using System.Collections.Generic; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Security; using System.Text; using System.Threading; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Persistence; namespace MediaBrowser.LocalMetadata.Savers { @@ -16,10 +17,12 @@ namespace MediaBrowser.LocalMetadata.Savers private readonly IItemRepository _itemRepository; private readonly CultureInfo _usCulture = new CultureInfo("en-US"); + private readonly IServerConfigurationManager _config; - public EpisodeXmlSaver(IItemRepository itemRepository) + public EpisodeXmlSaver(IItemRepository itemRepository, IServerConfigurationManager config) { _itemRepository = itemRepository; + _config = config; } /// @@ -133,7 +136,7 @@ namespace MediaBrowser.LocalMetadata.Savers "DVD_episodenumber", "DVD_season", "absolute_number" - }); + }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs index c38a33c406..7efa55420d 100644 --- a/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; @@ -21,6 +22,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public FolderXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -66,7 +74,7 @@ namespace MediaBrowser.LocalMetadata.Savers var xmlFilePath = GetSavePath(item); - XmlSaverHelpers.Save(builder, xmlFilePath, new List { }); + XmlSaverHelpers.Save(builder, xmlFilePath, new List { }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs index 163c79ce23..e1fc3b8cc7 100644 --- a/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using System.Collections.Generic; using System.IO; using System.Security; using System.Text; using System.Threading; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; namespace MediaBrowser.LocalMetadata.Savers { @@ -18,6 +19,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public GameSystemXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -59,7 +67,7 @@ namespace MediaBrowser.LocalMetadata.Savers var xmlFilePath = GetSavePath(item); - XmlSaverHelpers.Save(builder, xmlFilePath, new List { }); + XmlSaverHelpers.Save(builder, xmlFilePath, new List { }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs index 7eeaa211fa..11f6db77c6 100644 --- a/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs @@ -1,12 +1,13 @@ -using System.Collections.Generic; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Security; using System.Text; using System.Threading; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Entities; namespace MediaBrowser.LocalMetadata.Savers { @@ -23,6 +24,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public GameXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -91,7 +99,7 @@ namespace MediaBrowser.LocalMetadata.Savers "GameSystem", "NesBox", "NesBoxRom" - }); + }, _config); } public string GetSavePath(IHasMetadata item) diff --git a/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs index ef81790a62..40ed156bc5 100644 --- a/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs @@ -1,13 +1,14 @@ -using System.Collections.Generic; -using System.IO; -using System.Security; -using System.Text; -using System.Threading; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using System.Collections.Generic; +using System.IO; +using System.Security; +using System.Text; +using System.Threading; namespace MediaBrowser.LocalMetadata.Savers { @@ -17,10 +18,12 @@ namespace MediaBrowser.LocalMetadata.Savers public class MovieXmlSaver : IMetadataFileSaver { private readonly IItemRepository _itemRepository; + private readonly IServerConfigurationManager _config; - public MovieXmlSaver(IItemRepository itemRepository) + public MovieXmlSaver(IItemRepository itemRepository, IServerConfigurationManager config) { _itemRepository = itemRepository; + _config = config; } public string Name @@ -112,7 +115,7 @@ namespace MediaBrowser.LocalMetadata.Savers "Artist", "Album", "TmdbCollectionName" - }); + }, _config); } public string GetSavePath(IHasMetadata item) diff --git a/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs index 2ea60f47c2..835256ca74 100644 --- a/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using System.Collections.Generic; using System.IO; using System.Security; using System.Text; using System.Threading; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; namespace MediaBrowser.LocalMetadata.Savers { @@ -21,6 +22,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public PersonXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -65,7 +73,7 @@ namespace MediaBrowser.LocalMetadata.Savers XmlSaverHelpers.Save(builder, xmlFilePath, new List { "PlaceOfBirth" - }); + }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs index 1541c2176b..169f0b6ee0 100644 --- a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs @@ -1,9 +1,10 @@ -using System.Security; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Playlists; using System.Collections.Generic; using System.IO; +using System.Security; using System.Text; using System.Threading; @@ -19,6 +20,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public PlaylistXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -70,7 +78,7 @@ namespace MediaBrowser.LocalMetadata.Savers "OwnerUserId", "PlaylistMediaType" - }); + }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/SeasonXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/SeasonXmlSaver.cs index b9908875dc..610652c6b6 100644 --- a/MediaBrowser.LocalMetadata/Savers/SeasonXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/SeasonXmlSaver.cs @@ -1,12 +1,13 @@ -using System.Collections.Generic; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Security; using System.Text; using System.Threading; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; namespace MediaBrowser.LocalMetadata.Savers { @@ -20,6 +21,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } + private readonly IServerConfigurationManager _config; + + public SeasonXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + /// /// Determines whether [is enabled for] [the specified item]. /// @@ -42,7 +50,7 @@ namespace MediaBrowser.LocalMetadata.Savers } private readonly CultureInfo _usCulture = new CultureInfo("en-US"); - + /// /// Saves the specified item. /// @@ -71,7 +79,7 @@ namespace MediaBrowser.LocalMetadata.Savers XmlSaverHelpers.Save(builder, xmlFilePath, new List { "SeasonNumber" - }); + }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs index 23ea528204..885dccdb65 100644 --- a/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs @@ -1,18 +1,26 @@ -using System.Collections.Generic; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Security; using System.Text; using System.Threading; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Entities; namespace MediaBrowser.LocalMetadata.Savers { public class SeriesXmlSaver : IMetadataFileSaver { + private readonly IServerConfigurationManager _config; + + public SeriesXmlSaver(IServerConfigurationManager config) + { + _config = config; + } + public string Name { get @@ -38,7 +46,7 @@ namespace MediaBrowser.LocalMetadata.Savers } private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - + /// /// Saves the specified item. /// @@ -119,7 +127,7 @@ namespace MediaBrowser.LocalMetadata.Savers // Deprecated. No longer saving in this field. "AnimeSeriesIndex" - }); + }, _config); } /// diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs index 0801b73589..93876f4742 100644 --- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs @@ -1,4 +1,11 @@ -using System; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Persistence; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Model.Entities; +using System; using System.Collections.Generic; using System.Globalization; using System.IO; @@ -6,12 +13,6 @@ using System.Linq; using System.Security; using System.Text; using System.Xml; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Persistence; -using MediaBrowser.Controller.Playlists; -using MediaBrowser.Model.Entities; namespace MediaBrowser.LocalMetadata.Savers { @@ -126,7 +127,7 @@ namespace MediaBrowser.LocalMetadata.Savers /// The XML. /// The path. /// The XML tags used. - public static void Save(StringBuilder xml, string path, List xmlTagsUsed) + public static void Save(StringBuilder xml, string path, List xmlTagsUsed, IServerConfigurationManager config) { if (File.Exists(path)) { @@ -165,7 +166,7 @@ namespace MediaBrowser.LocalMetadata.Savers } } - if (wasHidden) + if (wasHidden || config.Configuration.SaveMetadataHidden) { file.Refresh(); diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index 7a3a7d2d0c..3b8dafa8e3 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -59,7 +59,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles try { // Return the original without any conversions, if possible - if (startTimeTicks == 0 && + if (startTimeTicks == 0 && !endTimeTicks.HasValue && string.Equals(inputFormat, outputFormat, StringComparison.OrdinalIgnoreCase)) { @@ -158,14 +158,14 @@ namespace MediaBrowser.MediaEncoding.Subtitles var fileInfo = await GetReadableFile(mediaSource.Path, inputFiles, mediaSource.Protocol, subtitleStream, cancellationToken).ConfigureAwait(false); - var stream = await GetSubtitleStream(fileInfo.Item1, subtitleStream.Language).ConfigureAwait(false); + var stream = await GetSubtitleStream(fileInfo.Item1, subtitleStream.Language, fileInfo.Item3).ConfigureAwait(false); return new Tuple(stream, fileInfo.Item2); } - private async Task GetSubtitleStream(string path, string language) + private async Task GetSubtitleStream(string path, string language, bool requiresCharset) { - if (!string.IsNullOrEmpty(language)) + if (requiresCharset && !string.IsNullOrEmpty(language)) { var charset = GetSubtitleFileCharacterSet(path, language); @@ -188,7 +188,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles return File.OpenRead(path); } - private async Task> GetReadableFile(string mediaPath, + private async Task> GetReadableFile(string mediaPath, string[] inputFiles, MediaProtocol protocol, MediaStream subtitleStream, @@ -225,7 +225,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles await ExtractTextSubtitle(inputFiles, protocol, subtitleStream.Index, outputCodec, outputPath, cancellationToken) .ConfigureAwait(false); - return new Tuple(outputPath, outputFormat); + return new Tuple(outputPath, outputFormat, false); } var currentFormat = (Path.GetExtension(subtitleStream.Path) ?? subtitleStream.Codec) @@ -239,10 +239,10 @@ namespace MediaBrowser.MediaEncoding.Subtitles await ConvertTextSubtitleToSrt(subtitleStream.Path, outputPath, subtitleStream.Language, cancellationToken) .ConfigureAwait(false); - return new Tuple(outputPath, "srt"); + return new Tuple(outputPath, "srt", false); } - return new Tuple(subtitleStream.Path, currentFormat); + return new Tuple(subtitleStream.Path, currentFormat, false); } private async Task GetTrackInfo(Stream stream, @@ -647,7 +647,10 @@ namespace MediaBrowser.MediaEncoding.Subtitles _logger.Info(msg); } - await SetAssFont(outputPath).ConfigureAwait(false); + if (string.Equals(outputCodec, "ass", StringComparison.OrdinalIgnoreCase)) + { + await SetAssFont(outputPath).ConfigureAwait(false); + } } /// diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index 62f2a7425f..c6e8adb166 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -341,6 +341,9 @@ Dto\RecommendationType.cs + + Dto\StreamOptions.cs + Dto\StudioDto.cs diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index a9d0f480cd..7dec2fa383 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -1265,5 +1265,32 @@ namespace MediaBrowser.Model.ApiClient /// The query. /// Task<QueryResult<BaseItemDto>>. Task> GetPlaylistItems(PlaylistItemQuery query); + + /// + /// Gets the url needed to stream an audio file + /// + /// The options. + /// System.String. + /// options + [Obsolete] + string GetAudioStreamUrl(StreamOptions options); + + /// + /// Gets the url needed to stream a video file + /// + /// The options. + /// System.String. + /// options + [Obsolete] + string GetVideoStreamUrl(VideoStreamOptions options); + + /// + /// Formulates a url for streaming video using the HLS protocol + /// + /// The options. + /// System.String. + /// options + [Obsolete] + string GetHlsVideoStreamUrl(VideoStreamOptions options); } } \ No newline at end of file diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 0807951a7a..ab618dc5a2 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -160,7 +160,6 @@ namespace MediaBrowser.Model.Configuration public bool EnableAutomaticRestart { get; set; } public TvFileOrganizationOptions TvFileOrganizationOptions { get; set; } - public LiveTvOptions LiveTvOptions { get; set; } public bool EnableRealtimeMonitor { get; set; } public PathSubstitution[] PathSubstitutions { get; set; } @@ -178,7 +177,9 @@ namespace MediaBrowser.Model.Configuration public PeopleMetadataOptions PeopleMetadataOptions { get; set; } - public string[] SecureApps { get; set; } + public string[] SecureApps1 { get; set; } + + public bool SaveMetadataHidden { get; set; } /// /// Initializes a new instance of the class. @@ -205,7 +206,7 @@ namespace MediaBrowser.Model.Configuration RealtimeMonitorDelay = 30; - EnableInternetProviders = true; //initial installs will need these + EnableInternetProviders = true; PathSubstitutions = new PathSubstitution[] { }; @@ -224,14 +225,14 @@ namespace MediaBrowser.Model.Configuration PeopleMetadataOptions = new PeopleMetadataOptions(); - SecureApps = new[] + SecureApps1 = new[] { "Dashboard", - "Chrome Companion", "MBKinect", "NuVue", "Media Browser Theater", + //"Chrome Companion", //"MB-Classic" }; diff --git a/MediaBrowser.Model/Dto/StreamOptions.cs b/MediaBrowser.Model/Dto/StreamOptions.cs new file mode 100644 index 0000000000..d281148ff8 --- /dev/null +++ b/MediaBrowser.Model/Dto/StreamOptions.cs @@ -0,0 +1,165 @@ +using System; + +namespace MediaBrowser.Model.Dto +{ + /// + /// Class StreamOptions + /// + [Obsolete] + public class StreamOptions + { + /// + /// Gets or sets the audio bit rate. + /// + /// The audio bit rate. + public int? AudioBitRate { get; set; } + + /// + /// Gets or sets the audio codec. + /// Omit to copy the original stream + /// + /// The audio encoding format. + public string AudioCodec { get; set; } + + /// + /// Gets or sets the item id. + /// + /// The item id. + public string ItemId { get; set; } + + /// + /// Gets or sets the max audio channels. + /// + /// The max audio channels. + public int? MaxAudioChannels { get; set; } + + /// + /// Gets or sets the max audio sample rate. + /// + /// The max audio sample rate. + public int? MaxAudioSampleRate { get; set; } + + /// + /// Gets or sets the start time ticks. + /// + /// The start time ticks. + public long? StartTimeTicks { get; set; } + + /// + /// Gets or sets a value indicating whether the original media should be served statically + /// Only used with progressive streaming + /// + /// true if static; otherwise, false. + public bool? Static { get; set; } + + /// + /// Gets or sets the output file extension. + /// + /// The output file extension. + public string OutputFileExtension { get; set; } + + /// + /// Gets or sets the device id. + /// + /// The device id. + public string DeviceId { get; set; } + } + + /// + /// Class VideoStreamOptions + /// + [Obsolete] + public class VideoStreamOptions : StreamOptions + { + /// + /// Gets or sets the video codec. + /// Omit to copy + /// + /// The video codec. + public string VideoCodec { get; set; } + + /// + /// Gets or sets the video bit rate. + /// + /// The video bit rate. + public int? VideoBitRate { get; set; } + + /// + /// Gets or sets the width. + /// + /// The width. + public int? Width { get; set; } + + /// + /// Gets or sets the height. + /// + /// The height. + public int? Height { get; set; } + + /// + /// Gets or sets the width of the max. + /// + /// The width of the max. + public int? MaxWidth { get; set; } + + /// + /// Gets or sets the height of the max. + /// + /// The height of the max. + public int? MaxHeight { get; set; } + + /// + /// Gets or sets the frame rate. + /// + /// The frame rate. + public double? FrameRate { get; set; } + + /// + /// Gets or sets the index of the audio stream. + /// + /// The index of the audio stream. + public int? AudioStreamIndex { get; set; } + + /// + /// Gets or sets the index of the video stream. + /// + /// The index of the video stream. + public int? VideoStreamIndex { get; set; } + + /// + /// Gets or sets the index of the subtitle stream. + /// + /// The index of the subtitle stream. + public int? SubtitleStreamIndex { get; set; } + + /// + /// Gets or sets the profile. + /// + /// The profile. + public string Profile { get; set; } + + /// + /// Gets or sets the level. + /// + /// The level. + public string Level { get; set; } + + /// + /// Gets or sets the baseline stream audio bit rate. + /// + /// The baseline stream audio bit rate. + public int? BaselineStreamAudioBitRate { get; set; } + + /// + /// Gets or sets a value indicating whether [append baseline stream]. + /// + /// true if [append baseline stream]; otherwise, false. + public bool AppendBaselineStream { get; set; } + + /// + /// Gets or sets the time stamp offset ms. Only used with HLS. + /// + /// The time stamp offset ms. + public int? TimeStampOffsetMs { get; set; } + } +} diff --git a/MediaBrowser.Model/Entities/CollectionType.cs b/MediaBrowser.Model/Entities/CollectionType.cs index a8e32ac691..f55980430a 100644 --- a/MediaBrowser.Model/Entities/CollectionType.cs +++ b/MediaBrowser.Model/Entities/CollectionType.cs @@ -30,12 +30,13 @@ public const string LiveTvChannels = "LiveTvChannels"; public const string LiveTvRecordingGroups = "LiveTvRecordingGroups"; - public const string TvSeries = "TvSeries"; + public const string ViewTypeTvShowSeries = "ViewTypeTvShowSeries"; public const string TvGenres = "TvGenres"; public const string TvLatest = "TvLatest"; public const string TvNextUp = "TvNextUp"; public const string TvResume = "TvResume"; - public const string TvFavorites = "TvFavorites"; + public const string TvFavoriteSeries = "TvFavoriteSeries"; + public const string TvFavoriteEpisodes = "TvFavoriteEpisodes"; public const string MovieLatest = "MovieLatest"; public const string MovieResume = "MovieResume"; diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index a760cba05f..9223db80a2 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -82,6 +82,7 @@ + diff --git a/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs b/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs index 0f7e6d10a7..ce6694edc1 100644 --- a/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs +++ b/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs @@ -7,12 +7,13 @@ using MediaBrowser.Model.Providers; using MediaBrowser.Providers.Genres; using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Providers.FolderImages { - public class DefaultImageProvider : IRemoteImageProvider + public class DefaultImageProvider : IRemoteImageProvider, IHasChangeMonitor { private readonly IHttpClient _httpClient; @@ -130,5 +131,10 @@ namespace MediaBrowser.Providers.FolderImages ResourcePool = GenreImageProvider.ImageDownloadResourcePool }); } + + public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) + { + return GetSupportedImages(item).Any(i => !item.HasImage(i)); + } } } diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index d7110c1ec5..1acc1738c6 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -216,6 +216,14 @@ namespace MediaBrowser.Providers.Manager { await source.CopyToAsync(fs, StreamDefaults.DefaultCopyToBufferSize, cancellationToken).ConfigureAwait(false); } + + if (_config.Configuration.SaveMetadataHidden) + { + file.Refresh(); + + // Add back the attribute + file.Attributes |= FileAttributes.Hidden; + } } finally { diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs index f48707582c..31796aeb09 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs @@ -501,8 +501,7 @@ namespace MediaBrowser.Providers.MediaInfo var downloadedLanguages = await new SubtitleDownloader(_logger, _subtitleManager) .DownloadSubtitles(video, - currentStreams, - externalSubtitleStreams, + currentStreams.Concat(externalSubtitleStreams).ToList(), subtitleOptions.SkipIfGraphicalSubtitlesPresent, subtitleOptions.SkipIfAudioTrackMatches, subtitleOptions.DownloadLanguages, diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs b/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs index 9b9883ac1a..6230e73475 100644 --- a/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs +++ b/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs @@ -25,8 +25,7 @@ namespace MediaBrowser.Providers.MediaInfo } public async Task> DownloadSubtitles(Video video, - List internalMediaStreams, - List externalSubtitleStreams, + List mediaStreams, bool skipIfGraphicalSubtitlesPresent, bool skipIfAudioTrackMatches, IEnumerable languages, @@ -60,7 +59,7 @@ namespace MediaBrowser.Providers.MediaInfo { try { - var downloaded = await DownloadSubtitles(video, internalMediaStreams, externalSubtitleStreams, skipIfGraphicalSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken) + var downloaded = await DownloadSubtitles(video, mediaStreams, skipIfGraphicalSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken) .ConfigureAwait(false); if (downloaded) @@ -78,8 +77,7 @@ namespace MediaBrowser.Providers.MediaInfo } private async Task DownloadSubtitles(Video video, - List internalMediaStreams, - IEnumerable externalSubtitleStreams, + List mediaStreams, bool skipIfGraphicalSubtitlesPresent, bool skipIfAudioTrackMatches, string language, @@ -87,12 +85,12 @@ namespace MediaBrowser.Providers.MediaInfo CancellationToken cancellationToken) { // There's already subtitles for this language - if (externalSubtitleStreams.Any(i => string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase))) + if (mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && i.IsTextSubtitleStream && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase))) { return false; } - var audioStreams = internalMediaStreams.Where(i => i.Type == MediaStreamType.Audio).ToList(); + var audioStreams = mediaStreams.Where(i => i.Type == MediaStreamType.Audio).ToList(); var defaultAudioStreams = audioStreams.Where(i => i.IsDefault).ToList(); // If none are marked as default, just take a guess @@ -110,7 +108,7 @@ namespace MediaBrowser.Providers.MediaInfo // There's an internal subtitle stream for this language if (skipIfGraphicalSubtitlesPresent && - internalMediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && !i.IsTextSubtitleStream && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase))) + mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && !i.IsTextSubtitleStream && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase))) { return false; } diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs index 63df3f50d5..d913bd076e 100644 --- a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs +++ b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs @@ -105,14 +105,10 @@ namespace MediaBrowser.Providers.MediaInfo { var mediaStreams = video.GetMediaSources(false).First().MediaStreams; - var externalSubtitleStreams = mediaStreams.Where(i => i.Type == MediaStreamType.Subtitle && i.IsExternal).ToList(); - var currentStreams = mediaStreams.Except(externalSubtitleStreams).ToList(); - var downloadedLanguages = await new SubtitleDownloader(_logger, _subtitleManager) .DownloadSubtitles(video, - currentStreams, - externalSubtitleStreams, + mediaStreams, options.SkipIfGraphicalSubtitlesPresent, options.SkipIfAudioTrackMatches, options.DownloadLanguages, diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index dc03f14cbe..c406e48b9c 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -1,5 +1,4 @@ -using System.Net; -using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Net; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; @@ -12,6 +11,7 @@ using System; using System.Collections.Generic; using System.Globalization; using System.IO; +using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -77,7 +77,7 @@ namespace MediaBrowser.Server.Implementations.Connect { WanIpAddress = address; - UpdateConnectInfo(); + //UpdateConnectInfo(); } private async void UpdateConnectInfo() diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs index 855b26034e..1294368f1b 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs @@ -59,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security var auth = AuthorizationContext.GetAuthorizationInfo(req); if (!string.IsNullOrWhiteSpace(auth.Token) - || _config.Configuration.SecureApps.Contains(auth.Client ?? string.Empty, StringComparer.OrdinalIgnoreCase)) + || _config.Configuration.SecureApps1.Contains(auth.Client ?? string.Empty, StringComparer.OrdinalIgnoreCase)) { if (!allowLocal || !req.IsLocal) { diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index a3e86c6675..076da4352f 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -861,13 +861,7 @@ namespace MediaBrowser.Server.Implementations.Library if (!fileInfo.Exists) { - Directory.CreateDirectory(path); - fileInfo = new DirectoryInfo(path); - - if (!fileInfo.Exists) - { - throw new IOException("Path not created: " + path); - } + fileInfo = Directory.CreateDirectory(path); isNew = true; } @@ -1470,20 +1464,6 @@ namespace MediaBrowser.Server.Implementations.Library return collectionTypes.Count == 1 ? collectionTypes[0] : null; } - - public IEnumerable GetAllArtists() - { - return GetAllArtists(RootFolder.RecursiveChildren); - } - - public IEnumerable GetAllArtists(IEnumerable items) - { - return items - .OfType