diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index ba1f73ff2b..f40c2fbf7f 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1387,6 +1387,13 @@ private void ParseParams(StreamRequest request) videoRequest.MaxVideoBitDepth = int.Parse(val, UsCulture); } } + else if (i == 19) + { + if (videoRequest != null) + { + videoRequest.Profile = val; + } + } } } diff --git a/MediaBrowser.Controller/Library/MetadataConfigurationStore.cs b/MediaBrowser.Controller/Library/MetadataConfigurationStore.cs new file mode 100644 index 0000000000..6fad786a26 --- /dev/null +++ b/MediaBrowser.Controller/Library/MetadataConfigurationStore.cs @@ -0,0 +1,29 @@ +using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.Configuration; +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Library +{ + public class MetadataConfigurationStore : IConfigurationFactory + { + public IEnumerable GetConfigurations() + { + return new List + { + new ConfigurationStore + { + Key = "metadata", + ConfigurationType = typeof(MetadataConfiguration) + } + }; + } + } + + public static class MetadataConfigurationExtensions + { + public static MetadataConfiguration GetMetadataConfiguration(this IConfigurationManager config) + { + return config.GetConfiguration("metadata"); + } + } +} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index e04cc20874..d966d4df56 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -174,6 +174,7 @@ + diff --git a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs index 4ddfa59790..7d9c9d8769 100644 --- a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs +++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs @@ -211,7 +211,7 @@ public static void EnsureDates(IFileSystem fileSystem, BaseItem item, ItemResolv { if (includeCreationTime) { - item.DateCreated = DateTime.UtcNow; + SetDateCreated(item, fileSystem, childData); } item.DateModified = fileSystem.GetLastWriteTimeUtc(childData); @@ -224,7 +224,7 @@ public static void EnsureDates(IFileSystem fileSystem, BaseItem item, ItemResolv { if (includeCreationTime) { - item.DateCreated = DateTime.UtcNow; + SetDateCreated(item, fileSystem, fileData); } item.DateModified = fileSystem.GetLastWriteTimeUtc(fileData); } @@ -234,10 +234,24 @@ public static void EnsureDates(IFileSystem fileSystem, BaseItem item, ItemResolv { if (includeCreationTime) { - item.DateCreated = DateTime.UtcNow; + SetDateCreated(item, fileSystem, args.FileInfo); } item.DateModified = fileSystem.GetLastWriteTimeUtc(args.FileInfo); } } + + private static void SetDateCreated(BaseItem item, IFileSystem fileSystem, FileSystemInfo info) + { + var config = BaseItem.ConfigurationManager.GetMetadataConfiguration(); + + if (config.UseFileCreationTimeForDateAdded) + { + item.DateModified = fileSystem.GetCreationTimeUtc(info); + } + else + { + item.DateCreated = DateTime.UtcNow; + } + } } } diff --git a/MediaBrowser.MediaInfo/MediaBrowser.MediaInfo.csproj b/MediaBrowser.MediaInfo/MediaBrowser.MediaInfo.csproj index 715f4d311e..fb02623b33 100644 --- a/MediaBrowser.MediaInfo/MediaBrowser.MediaInfo.csproj +++ b/MediaBrowser.MediaInfo/MediaBrowser.MediaInfo.csproj @@ -39,6 +39,9 @@ + + Properties\SharedVersion.cs + diff --git a/MediaBrowser.MediaInfo/Properties/AssemblyInfo.cs b/MediaBrowser.MediaInfo/Properties/AssemblyInfo.cs index 5debd4f611..8249bd33cc 100644 --- a/MediaBrowser.MediaInfo/Properties/AssemblyInfo.cs +++ b/MediaBrowser.MediaInfo/Properties/AssemblyInfo.cs @@ -28,9 +28,4 @@ // Minor Version // Build Number // Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +// \ No newline at end of file diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index 78aae83751..e74ab9b7a6 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -173,6 +173,9 @@ Configuration\ImageSavingConvention.cs + + Configuration\MetadataConfiguration.cs + Configuration\MetadataOptions.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index d25245782f..e9f79a5031 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -145,6 +145,9 @@ Configuration\ImageSavingConvention.cs + + Configuration\MetadataConfiguration.cs + Configuration\MetadataOptions.cs diff --git a/MediaBrowser.Model/Configuration/CinemaModeConfiguration.cs b/MediaBrowser.Model/Configuration/CinemaModeConfiguration.cs index 94d9ebabcb..bd20713de4 100644 --- a/MediaBrowser.Model/Configuration/CinemaModeConfiguration.cs +++ b/MediaBrowser.Model/Configuration/CinemaModeConfiguration.cs @@ -14,9 +14,12 @@ public class CinemaModeConfiguration public bool EnableIntrosFromUpcomingDvdMovies { get; set; } public bool EnableIntrosFromUpcomingStreamingMovies { get; set; } + public int TrailerLimit { get; set; } + public CinemaModeConfiguration() { EnableIntrosParentalControl = true; + TrailerLimit = 2; } } } diff --git a/MediaBrowser.Model/Configuration/MetadataConfiguration.cs b/MediaBrowser.Model/Configuration/MetadataConfiguration.cs new file mode 100644 index 0000000000..082c61c972 --- /dev/null +++ b/MediaBrowser.Model/Configuration/MetadataConfiguration.cs @@ -0,0 +1,8 @@ + +namespace MediaBrowser.Model.Configuration +{ + public class MetadataConfiguration + { + public bool UseFileCreationTimeForDateAdded { get; set; } + } +} diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 27818e5ed8..1325a1833f 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -1,6 +1,4 @@ using MediaBrowser.Model.Entities; -using MediaBrowser.Model.FileOrganization; -using MediaBrowser.Model.LiveTv; namespace MediaBrowser.Model.Configuration { @@ -15,6 +13,12 @@ public class ServerConfiguration : BaseApplicationConfiguration /// true if [enable u pn p]; otherwise, false. public bool EnableUPnP { get; set; } + /// + /// Gets or sets the public mapped port. + /// + /// The public mapped port. + public int PublicPort { get; set; } + /// /// Gets or sets the HTTP server port number. /// @@ -167,20 +171,15 @@ public class ServerConfiguration : BaseApplicationConfiguration public string UICulture { get; set; } - public DlnaOptions DlnaOptions { get; set; } - public double DownMixAudioBoost { get; set; } - public bool DefaultMetadataSettingsApplied { get; set; } - public PeopleMetadataOptions PeopleMetadataOptions { get; set; } + public bool FindInternetTrailers { get; set; } public string[] InsecureApps { get; set; } public bool SaveMetadataHidden { get; set; } - public bool FindInternetTrailers { get; set; } - /// /// Initializes a new instance of the class. /// @@ -189,6 +188,7 @@ public ServerConfiguration() { MediaEncodingQuality = EncodingQuality.Auto; ImageSavingConvention = ImageSavingConvention.Compatible; + PublicPort = 8096; HttpServerPortNumber = 8096; EnableDashboardResponseCaching = true; diff --git a/MediaBrowser.Model/Dlna/ConditionProcessor.cs b/MediaBrowser.Model/Dlna/ConditionProcessor.cs index dd9a49ec40..4fedb36d6e 100644 --- a/MediaBrowser.Model/Dlna/ConditionProcessor.cs +++ b/MediaBrowser.Model/Dlna/ConditionProcessor.cs @@ -145,8 +145,10 @@ private bool IsConditionSatisfied(ProfileCondition condition, string currentValu switch (condition.Condition) { - case ProfileConditionType.SubstringOf: - return StringHelper.IndexOfIgnoreCase(currentValue, expected) != -1; + case ProfileConditionType.EqualsAny: + { + return ListHelper.ContainsIgnoreCase(expected.Split('|'), currentValue); + } case ProfileConditionType.Equals: return StringHelper.EqualsIgnoreCase(currentValue, expected); case ProfileConditionType.NotEquals: diff --git a/MediaBrowser.Model/Dlna/ProfileConditionType.cs b/MediaBrowser.Model/Dlna/ProfileConditionType.cs index bfbd31f02b..b0a94c5b30 100644 --- a/MediaBrowser.Model/Dlna/ProfileConditionType.cs +++ b/MediaBrowser.Model/Dlna/ProfileConditionType.cs @@ -6,6 +6,6 @@ public enum ProfileConditionType NotEquals = 1, LessThanEqual = 2, GreaterThanEqual = 3, - SubstringOf = 4 + EqualsAny = 4 } } \ No newline at end of file diff --git a/MediaBrowser.Model/Dlna/Profiles/AndroidProfile.cs b/MediaBrowser.Model/Dlna/Profiles/AndroidProfile.cs index 1f0b9a2620..dfe14f1c74 100644 --- a/MediaBrowser.Model/Dlna/Profiles/AndroidProfile.cs +++ b/MediaBrowser.Model/Dlna/Profiles/AndroidProfile.cs @@ -32,7 +32,7 @@ public AndroidProfile(bool supportsHls, bool supportsMpegDash) VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video, - VideoProfile = "Baseline", + VideoProfile = "baseline", Context = EncodingContext.Streaming }); } @@ -42,7 +42,7 @@ public AndroidProfile(bool supportsHls, bool supportsMpegDash) VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video, - VideoProfile = "Baseline", + VideoProfile = "baseline", Context = EncodingContext.Static }); @@ -102,7 +102,7 @@ public AndroidProfile(bool supportsHls, bool supportsMpegDash) Conditions = new [] { - new ProfileCondition(ProfileConditionType.SubstringOf, ProfileConditionValue.VideoProfile, "baseline"), + new ProfileCondition(ProfileConditionType.EqualsAny, ProfileConditionValue.VideoProfile, "baseline|constrained baseline"), new ProfileCondition(ProfileConditionType.LessThanEqual, ProfileConditionValue.Width, "1920"), new ProfileCondition(ProfileConditionType.LessThanEqual, ProfileConditionValue.Height, "1080"), new ProfileCondition(ProfileConditionType.LessThanEqual, ProfileConditionValue.VideoBitDepth, "8"), diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 8debb4edb5..2c49198b7f 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -291,6 +291,7 @@ private StreamInfo BuildVideoItem(MediaSourceInfo item, VideoOptions options) playlistItem.VideoCodec = transcodingProfile.VideoCodec; playlistItem.Protocol = transcodingProfile.Protocol; playlistItem.AudioStreamIndex = audioStreamIndex; + playlistItem.VideoProfile = transcodingProfile.VideoProfile; List videoTranscodingConditions = new List(); foreach (CodecProfile i in options.Profile.CodecProfiles) diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 6231d99a4a..9abf446165 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -142,6 +142,7 @@ private static string BuildDlnaParam(StreamInfo item) list.Add(item.IsDirectStream ? string.Empty : DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture)); list.Add(item.MaxRefFrames.HasValue ? StringHelper.ToStringCultureInvariant(item.MaxRefFrames.Value) : string.Empty); list.Add(item.MaxVideoBitDepth.HasValue ? StringHelper.ToStringCultureInvariant(item.MaxVideoBitDepth.Value) : string.Empty); + list.Add(item.VideoProfile ?? string.Empty); return string.Format("Params={0}", string.Join(";", list.ToArray())); } diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index dc8b3d5196..ae71f29878 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -90,6 +90,7 @@ + diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs index f09890c40f..2c19c33123 100644 --- a/MediaBrowser.Providers/Manager/ProviderUtils.cs +++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs @@ -43,6 +43,10 @@ public static void MergeBaseItemData(BaseItem source, BaseItem target, List> GetIntros(BaseItem item, User user) GetCustomIntros(item) : new List(); - var trailerLimit = 2; + var trailerLimit = config.TrailerLimit; if (customIntros.Count > 0) { trailerLimit--; diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json index 46d015b446..96082abda7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json @@ -340,8 +340,8 @@ "HeaderRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b", "HeaderCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", "HeaderParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b", - "HeaderReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b", - "HeaderDateAdded": "\u04ae\u0441\u0442\u0435\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b", + "HeaderReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", + "HeaderDateAdded": "\u04ae\u0441\u0442\u0435\u0443 \u043a\u04af\u043d\u0456", "HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b", "HeaderSeason": "\u041c\u0430\u0443\u0441\u044b\u043c", "HeaderSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456", @@ -383,19 +383,19 @@ "PersonTypePerson": "\u0422\u04b1\u043b\u0493\u0430", "LabelTitleDisplayOrder": "\u0422\u0443\u044b\u043d\u0434\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u0440\u0435\u0442\u0456:", "OptionSortName": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0430\u0442\u044b", - "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b", + "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", "LabelSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelDiscNumber": "\u0414\u0438\u0441\u043a\u0456 \u043d\u04e9\u043c\u0456\u0440\u0456", "LabelParentNumber": "\u0422\u0435\u043a\u0442\u0456\u043a \u043d\u04e9\u043c\u0456\u0440:", "LabelEpisodeNumber": "\u042d\u043f\u0438\u0437\u043e\u0434 \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelTrackNumber": "\u0416\u043e\u043b\u0448\u044b\u049b \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelNumber": "\u041d\u04e9\u043c\u0456\u0440\u0456:", - "LabelReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b:", - "LabelEndDate": "\u0410\u044f\u049b\u0442\u0430\u043b\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b:", + "LabelReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456:", + "LabelEndDate": "\u0410\u044f\u049b\u0442\u0430\u043b\u0443 \u043a\u04af\u043d\u0456:", "LabelYear": "\u0416\u044b\u043b\u044b:", - "LabelDateOfBirth": "\u0422\u0443\u0493\u0430\u043d \u043a\u04af\u043d-\u0430\u0439\u044b:", + "LabelDateOfBirth": "\u0422\u0443\u0493\u0430\u043d \u043a\u04af\u043d\u0456:", "LabelBirthYear": "\u0422\u0443\u0493\u0430\u043d \u0436\u044b\u043b\u044b:", - "LabelDeathDate": "\u04e8\u043b\u0433\u0435\u043d \u043a\u04af\u043d-\u0430\u0439\u044b:", + "LabelDeathDate": "\u04e8\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456:", "HeaderRemoveMediaLocation": "\u0422\u0430\u0441\u0443\u0448\u044b\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0443\u044b\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443", "MessageConfirmRemoveMediaLocation": "\u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043e\u0441\u044b \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0443\u0434\u044b \u0430\u043b\u0430\u0441\u0442\u0430\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "HeaderRenameMediaFolder": "\u0422\u0430\u0441\u0443\u0448\u044b \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d \u049b\u0430\u0439\u0442\u0430 \u0430\u0442\u0430\u0443", @@ -454,7 +454,7 @@ "TooltipLinkedToMediaBrowserConnect": "Media Browser Connect \u04af\u0448\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u049b\u0430\u043d", "HeaderUnrated": "\u0411\u0430\u0493\u0430\u043b\u0430\u043d\u0431\u0430\u0493\u0430\u043d", "ValueDiscNumber": "{0}-\u0434\u0438\u0441\u043a\u0456", - "HeaderUnknownDate": "\u041a\u04af\u043d-\u0430\u0439\u044b \u0431\u0435\u043b\u0433\u0456\u0441\u0456\u0437", + "HeaderUnknownDate": "\u041a\u04af\u043d\u0456 \u0431\u0435\u043b\u0433\u0456\u0441\u0456\u0437", "HeaderUnknownYear": "\u0416\u044b\u043b\u044b \u0431\u0435\u043b\u0433\u0456\u0441\u0456\u0437", "ValueMinutes": "{0} \u043c\u0438\u043d", "ButtonPlayExternalPlayer": "\u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u043f\u0435\u043d \u043e\u0439\u043d\u0430\u0442\u0443", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json index c4e8cf78c6..c8e59b774d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -149,14 +149,14 @@ "LabelOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443:", "ButtonAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", "LabelShortOverview": "\u049a\u044b\u0441\u049b\u0430\u0448\u0430 \u0448\u043e\u043b\u0443:", - "LabelReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b:", + "LabelReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456:", "ButtonAddLocalUser": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", "LabelYear": "\u0416\u044b\u043b\u044b:", "ButtonInviteMediaBrowserUser": "Media Browser \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0441\u044b\u043d \u0448\u0430\u049b\u044b\u0440\u0443", "ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443", "LabelPlaceOfBirth": "\u0422\u0443\u0493\u0430\u043d \u0436\u0435\u0440\u0456:", "ButtonResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443", - "LabelEndDate": "\u0410\u044f\u049b\u0442\u0430\u043b\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b:", + "LabelEndDate": "\u0410\u044f\u049b\u0442\u0430\u043b\u0443 \u043a\u04af\u043d\u0456:", "LabelNewPassword": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", "LabelAirDate": "\u042d\u0444\u0438\u0440 \u043a\u04af\u043d\u0434\u0435\u0440\u0456:", "LabelNewPasswordConfirm": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0440\u0430\u0441\u0442\u0430\u0443:", @@ -263,13 +263,13 @@ "HeaderPhotoInfo": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442 \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0456", "OptionRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b", "HeaderInstall": "\u041e\u0440\u043d\u0430\u0442\u0443", - "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b", + "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", "LabelSelectVersionToInstall": "\u041e\u0440\u043d\u0430\u0442\u044b\u043c \u043d\u04b1\u0441\u049b\u0430\u0441\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u0443:", "OptionPlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0435\u0441\u0435\u0431\u0456", "LinkSupporterMembership": "\u049a\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456 \u0442\u0443\u0440\u0430\u043b\u044b \u0442\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437", - "OptionDatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d-\u0430\u0439\u044b", + "OptionDatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d\u0456", "MessageSupporterPluginRequiresMembership": "\u0411\u04b1\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0433\u0435 14 \u043a\u04af\u043d\u0434\u0456\u043a \u0442\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u0443 \u043a\u0435\u0437\u0435\u04a3\u0456\u043d\u0435\u043d \u043a\u0435\u0439\u0456\u043d \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043d \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.", - "OptionDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d-\u0430\u0439\u044b", + "OptionDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", "MessagePremiumPluginRequiresMembership": "\u0411\u04b1\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0456 \u0441\u0430\u0442\u044b\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d 14 \u043a\u04af\u043d\u0434\u0456\u043a \u0442\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u0443 \u043a\u0435\u0437\u0435\u04a3\u0456\u043d\u0435\u043d \u043a\u0435\u0439\u0456\u043d \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043d \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.", "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u0441\u044b", "HeaderReviews": "\u041f\u0456\u043a\u0456\u0440\u043b\u0435\u0440", @@ -490,7 +490,7 @@ "LabelPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", "ButtonManualLogin": "\u049a\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443", "PasswordLocalhostMessage": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 (localhost) \u043e\u0440\u044b\u043d\u0434\u0430\u043d \u043a\u0456\u0440\u0433\u0435\u043d\u0434\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440 \u049b\u0430\u0436\u0435\u0442 \u0435\u043c\u0435\u0441.", - "TabGuide": "\u0422\u0414 \u043a\u0435\u0441\u0442\u0435\u0441\u0456", + "TabGuide": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448", "TabChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", "TabCollections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", "HeaderChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", @@ -509,7 +509,7 @@ "HeaderUpcomingTV": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0422\u0414", "TabStatus": "\u041a\u04af\u0439", "TabSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440", - "ButtonRefreshGuideData": "\u0422\u0414 \u043a\u0435\u0441\u0442\u0435\u0441\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u043a\u04e9\u043a\u0435\u0439\u0442\u0435\u0441\u0442\u0456 \u0435\u0442\u0443", + "ButtonRefreshGuideData": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u043a\u04e9\u043a\u0435\u0439\u0442\u0435\u0441\u0442\u0456 \u0435\u0442\u0443", "ButtonRefresh": "\u041a\u04e9\u043a\u0435\u0439\u0442\u0435\u0441\u0442\u0456 \u0435\u0442\u0443", "ButtonAdvancedRefresh": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u043a\u04e9\u043a\u0435\u0439\u0442\u0435\u0441\u0442\u0456 \u0435\u0442\u0443", "OptionPriority": "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442", @@ -528,8 +528,8 @@ "OptionRecordSeries": "\u0421\u0435\u0440\u0438\u0430\u043b\u0434\u044b \u0436\u0430\u0437\u0443", "HeaderDetails": "\u041c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440", "TitleLiveTV": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414", - "LabelNumberOfGuideDays": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0422\u0414 \u043a\u0435\u0441\u0442\u0435\u0441\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d\u0434\u0435\u0433\u0456 \u043a\u04af\u043d \u0441\u0430\u043d\u044b:", - "LabelNumberOfGuideDaysHelp": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u043a\u04af\u043d\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u0422\u0414 \u043a\u0435\u0441\u0442\u0435\u0441\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d\u0456\u04a3 \u049b\u04b1\u043d\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u043a\u04e9\u0442\u0435\u0440\u0435\u0434\u0456 \u0434\u0435 \u0430\u043b\u0434\u044b\u043d-\u0430\u043b\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0431\u0456\u043b\u0435\u0442\u0456\u043d \u0436\u04d9\u043d\u0435 \u043a\u04e9\u0431\u0456\u0440\u0435\u043a \u0442\u0456\u0437\u0431\u0435\u043b\u0435\u0440 \u043a\u04e9\u0440\u0443\u0434\u0456 \u049b\u0430\u043c\u0442\u0430\u043c\u0430\u0441\u044b\u0437 \u0435\u0442\u0435\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u0431\u04b1\u043b \u0436\u04af\u043a\u0442\u0435\u0443 \u0443\u0430\u049b\u044b\u0442\u044b\u043d \u0434\u0430 \u0441\u043e\u0437\u0434\u044b\u0440\u0430\u0434\u044b. \u0410\u0432\u0442\u043e\u0442\u0430\u04a3\u0434\u0430\u0443 \u0430\u0440\u043d\u0430 \u0441\u0430\u043d\u044b\u043d\u0430 \u043d\u0435\u0433\u0456\u0437\u0434\u0435\u043b\u0456\u043d\u0435\u0434\u0456.", + "LabelNumberOfGuideDays": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d\u0434\u0435\u0433\u0456 \u043a\u04af\u043d \u0441\u0430\u043d\u044b:", + "LabelNumberOfGuideDaysHelp": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u043a\u04af\u043d\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d\u0456\u04a3 \u049b\u04b1\u043d\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u043a\u04e9\u0442\u0435\u0440\u0435\u0434\u0456 \u0434\u0435 \u0430\u043b\u0434\u044b\u043d-\u0430\u043b\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0431\u0456\u043b\u0435\u0442\u0456\u043d \u0436\u04d9\u043d\u0435 \u043a\u04e9\u0431\u0456\u0440\u0435\u043a \u0442\u0456\u0437\u0431\u0435\u043b\u0435\u0440 \u043a\u04e9\u0440\u0443\u0434\u0456 \u049b\u0430\u043c\u0442\u0430\u043c\u0430\u0441\u044b\u0437 \u0435\u0442\u0435\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u0431\u04b1\u043b \u0436\u04af\u043a\u0442\u0435\u0443 \u0443\u0430\u049b\u044b\u0442\u044b\u043d \u0434\u0430 \u0441\u043e\u0437\u0434\u044b\u0440\u0430\u0434\u044b. \u0410\u0432\u0442\u043e\u0442\u0430\u04a3\u0434\u0430\u0443 \u0430\u0440\u043d\u0430 \u0441\u0430\u043d\u044b\u043d\u0430 \u043d\u0435\u0433\u0456\u0437\u0434\u0435\u043b\u0456\u043d\u0435\u0434\u0456.", "LabelActiveService": "\u0411\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u049b\u044b\u0437\u043c\u0435\u0442:", "LabelActiveServiceHelp": "\u0411\u0456\u0440\u043d\u0435\u0448\u0435 \u0422\u0414 \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d, \u0431\u0456\u0440\u0430\u049b \u0441\u043e\u043b \u043a\u0435\u0437\u0434\u0435 \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0431\u0456\u0440\u0435\u0443\u0456 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", "OptionAutomatic": "\u0410\u0432\u0442\u043e\u0442\u0430\u04a3\u0434\u0430\u0443", @@ -672,7 +672,7 @@ "TitleAutoOrganize": "\u0410\u0432\u0442\u043e\u04b1\u0439\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0440\u0443", "TabActivityLog": "\u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0440 \u0436\u04b1\u0440\u043d\u0430\u043b\u044b", "HeaderName": "\u0410\u0442\u044b", - "HeaderDate": "\u041a\u04af\u043d-\u0430\u0439\u044b", + "HeaderDate": "\u041a\u04af\u043d\u0456", "HeaderSource": "\u041a\u04e9\u0437\u0456", "HeaderDestination": "\u0422\u0430\u0493\u0430\u0439\u044b\u043d\u0434\u0430\u0443", "HeaderProgram": "\u0411\u0435\u0440\u0456\u043b\u0456\u043c", @@ -1071,8 +1071,8 @@ "HeaderKodiMetadataHelp": "Media Browser \u0431\u0430\u0493\u0434\u0430\u0440\u043b\u0430\u043c\u0430\u0441\u044b Xbmc NFO \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0442\u0435\u0440\u0456\u043d\u0456\u04a3 \u0436\u04d9\u043d\u0435 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d\u0456\u04a3 \u043a\u0456\u0440\u0456\u043a\u0442\u0456\u0440\u043c\u0435 \u049b\u043e\u043b\u0434\u0430\u0443\u044b\u043d \u049b\u0430\u043c\u0442\u0438\u0434\u044b. Xbmc \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443 \u043d\u0435\u043c\u0435\u0441\u0435 \u04e9\u0448\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u049b\u043e\u0439\u044b\u043d\u0434\u044b\u0441\u044b\u043d\u0434\u0430\u0493\u044b \u0442\u0430\u0441\u0443\u0448\u044b \u0442\u04af\u0440\u043b\u0435\u0440\u0456\u043d\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.", "LabelKodiMetadataUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b\u04a3 \u049b\u0430\u0440\u0430\u0443 \u043a\u04af\u0439\u0456\u043d NFO-\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u04af\u0448\u0456\u043d \u043c\u044b\u043d\u0430\u0493\u0430\u043d \u049b\u043e\u0441\u0443:", "LabelKodiMetadataUserHelp": "\u041a\u04e9\u0440\u0456\u043b\u0433\u0435\u043d \u043a\u04af\u0439\u0434\u0456 Media Browser \u0436\u04d9\u043d\u0435 Kodi \u0430\u0440\u0430\u0441\u044b\u043d\u0434\u0430 \u04af\u0439\u043b\u0435\u0441\u0442\u0456\u0440\u0456\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d \u0431\u04b1\u043d\u044b \u049b\u043e\u0441\u044b\u04a3\u044b\u0437.", - "LabelKodiMetadataDateFormat": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b\u043d\u044b\u04a3 \u043f\u0456\u0448\u0456\u043c\u0456:", - "LabelKodiMetadataDateFormatHelp": "\u041e\u0441\u044b \u043f\u0456\u0448\u0456\u043c\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f nfo \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u0431\u0430\u0440\u043b\u044b\u049b \u043a\u04af\u043d-\u0430\u0439\u043b\u0430\u0440 \u043e\u049b\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0436\u0430\u0437\u044b\u043b\u0430\u0434\u044b.", + "LabelKodiMetadataDateFormat": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456\u043d\u0456\u04a3 \u043f\u0456\u0448\u0456\u043c\u0456:", + "LabelKodiMetadataDateFormatHelp": "\u041e\u0441\u044b \u043f\u0456\u0448\u0456\u043c\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f nfo \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u0431\u0430\u0440\u043b\u044b\u049b \u043a\u04af\u043d\u0434\u0435\u0440\u0456 \u043e\u049b\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0436\u0430\u0437\u044b\u043b\u0430\u0434\u044b.", "LabelKodiMetadataSaveImagePaths": "\u0421\u0443\u0440\u0435\u0442 \u0436\u043e\u043b\u0434\u0430\u0440\u044b\u043d NFO-\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b\u043d\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u0443", "LabelKodiMetadataSaveImagePathsHelp": "\u0415\u0433\u0435\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456\u04a3 Kodi \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u044b\u049b \u04b1\u0441\u0442\u0430\u043d\u044b\u043c\u0434\u0430\u0440\u044b\u043d\u0430 \u0441\u0430\u0439 \u043a\u0435\u043b\u043c\u0435\u0433\u0435\u043d \u0430\u0442\u0430\u0443\u043b\u0430\u0440\u044b \u0431\u043e\u043b\u0441\u0430, \u0431\u04b1\u043b \u04b1\u0441\u044b\u043d\u044b\u043b\u0430\u0434\u044b.", "LabelKodiMetadataEnablePathSubstitution": "\u0416\u043e\u043b \u0430\u043b\u043c\u0430\u0441\u0442\u044b\u0440\u0443\u0434\u044b \u049b\u043e\u0441\u0443", @@ -1108,7 +1108,7 @@ "HeaderApp": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430", "HeaderDevice": "\u0416\u0430\u0431\u0434\u044b\u049b", "HeaderUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b", - "HeaderDateIssued": "\u0411\u0435\u0440\u0456\u043b\u0433\u0435\u043d \u043a\u04af\u043d-\u0430\u0439\u044b", + "HeaderDateIssued": "\u0411\u0435\u0440\u0456\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", "LabelChapterName": "{0}-\u0441\u0430\u0445\u043d\u0430", "HeaderNewApiKey": "\u0416\u0430\u04a3\u0430 API \u043a\u0456\u043b\u0442\u0456", "LabelAppName": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0430\u0442\u044b", @@ -1130,7 +1130,7 @@ "LabelView": "\u041a\u04e9\u0440\u0456\u043d\u0456\u0441:", "TabUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", "LabelSortName": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0430\u0442\u044b:", - "LabelDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d-\u0430\u0439\u044b", + "LabelDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", "HeaderFeatures": "\u041c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440", "HeaderAdvanced": "\u049a\u043e\u0441\u044b\u043c\u0448\u0430", "ButtonSync": "\u0421\u0438\u043d\u0445\u0440\u043e", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 5f044b28ea..ceea000def 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -464,10 +464,13 @@ "NewCollectionNameExample": "Example: Star Wars Collection", "OptionSearchForInternetMetadata": "Search the internet for artwork and metadata", "ButtonCreate": "Create", - "LabelHttpServerPortNumber": "Http server port number:", + "LabelLocalHttpServerPortNumber": "Local port number:", + "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Media Browser's http server should bind to.", + "LabelPublicPort": "Public port number:", + "LabelPublicPortHelp": "The public port number that should be mapped to the local port.", "LabelWebSocketPortNumber": "Web socket port number:", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortHelp": "UPnP allows automated router configuration for remote access. This may not work with some router models.", + "LabelEnableAutomaticPortMap": "Enable automatic port mapping", + "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", "LabelExternalDDNS": "External DDNS:", "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Media Browser apps will use it when connecting remotely.", "TabResume": "Resume", @@ -1207,5 +1210,10 @@ "CinemaModeConfigurationHelp2": "Individual users will have the ability to disable cinema mode within their own preferences.", "LabelEnableCinemaMode": "Enable cinema mode", "HeaderCinemaMode": "Cinema Mode", - "HeaderWelcomeToMediaBrowserServerDashboard": "Welcome to the Media Browser Dashboard" + "HeaderWelcomeToMediaBrowserServerDashboard": "Welcome to the Media Browser Dashboard", + "LabelDateAddedBehavior": "Date added behavior for new content:", + "OptionDateAddedImportTime": "Use date scanned into the library", + "OptionDateAddedFileTime": "Use file creation date", + "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", + "LabelNumberTrailerToPlay": "Number of trailers to play:" } diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index 29c01b02c4..8cf64517d8 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -143,31 +143,31 @@ - + libwebp\linux\lib\libwebp.so PreserveNewest - + libwebp\linux\lib64\libwebp.so PreserveNewest - + libwebp\osx\libwebp.5.dylib PreserveNewest - + MediaInfo\osx\libmediainfo.dylib PreserveNewest - + sqlite3\linux\lib\libsqlite3.so.0.8.6 PreserveNewest - + sqlite3\linux\lib64\libsqlite3.so.0.8.6 PreserveNewest - + sqlite3\mac\libsqlite3.0.dylib PreserveNewest diff --git a/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html b/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html index ace11163f3..405ab4f9d4 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html @@ -48,6 +48,10 @@
${LabelTheseFeaturesRequireSupporterHelpAndTrailers}
+
  • + + +
  • diff --git a/MediaBrowser.WebDashboard/dashboard-ui/css/mediaplayer-video.css b/MediaBrowser.WebDashboard/dashboard-ui/css/mediaplayer-video.css index 3c972cb618..6e470c85a9 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/css/mediaplayer-video.css +++ b/MediaBrowser.WebDashboard/dashboard-ui/css/mediaplayer-video.css @@ -133,6 +133,10 @@ display: none!important; } +.idlePlayer video { + cursor: none; +} + #mediaPlayer .sliderContainer { position: relative; top: 5px; diff --git a/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html b/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html index d8762ddc42..30e71a1668 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html @@ -43,13 +43,19 @@

    ${HeaderAdvanced}


    • - + +
      ${LabelLocalHttpServerPortNumberHelp}
    • - + + +
      ${LabelPublicPortHelp}
      +
    • +
    • + -
      ${LabelEnableAutomaticPortHelp}
      +
      ${LabelEnableAutomaticPortMapHelp}
    • diff --git a/MediaBrowser.WebDashboard/dashboard-ui/metadataadvanced.html b/MediaBrowser.WebDashboard/dashboard-ui/metadataadvanced.html index 2af38ac29e..56ca68eea3 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/metadataadvanced.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/metadataadvanced.html @@ -32,6 +32,14 @@
    • +
    • + + +
      ${LabelDateAddedBehaviorHelp}
      +
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/cinemamodeconfiguration.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/cinemamodeconfiguration.js index 1e1987041c..6b356c816c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/cinemamodeconfiguration.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/cinemamodeconfiguration.js @@ -15,6 +15,7 @@ $('#chkEnableParentalControl', page).checked(config.EnableIntrosParentalControl).checkboxradio('refresh'); $('#txtCustomIntrosPath', page).val(config.CustomIntroPath || ''); + $('#txtNumTrailers', page).val(config.TrailerLimit); Dashboard.hideLoadingMsg(); } @@ -69,6 +70,7 @@ ApiClient.getNamedConfiguration("cinemamode").done(function (config) { config.CustomIntroPath = $('#txtCustomIntrosPath', page).val(); + config.TrailerLimit = $('#txtNumTrailers', page).val(); config.EnableIntrosForMovies = $('#chkMovies', page).checked(); config.EnableIntrosForEpisodes = $('#chkEpisodes', page).checked(); diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardgeneral.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardgeneral.js index 35bc112a6d..b92dc78284 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardgeneral.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardgeneral.js @@ -13,6 +13,7 @@ })).val(config.UICulture).selectmenu('refresh'); $('#txtPortNumber', page).val(config.HttpServerPortNumber); + $('#txtPublicPort', page).val(config.PublicPort); $('#txtDdns', page).val(config.WanDdns || ''); @@ -81,6 +82,8 @@ config.UICulture = $('#selectLocalizationLanguage', form).val(); config.HttpServerPortNumber = $('#txtPortNumber', form).val(); + config.PublicPort = $('#txtPublicPort', form).val(); + config.EnableUPnP = $('#chkEnableUpnp', form).checked(); config.WanDdns = $('#txtDdns', form).val(); diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer-video.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer-video.js index e585a88fa1..8352b8561a 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer-video.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer-video.js @@ -60,7 +60,7 @@ self.resetEnhancements = function () { $("#mediaPlayer").hide(); - $('#videoPlayer').removeClass('fullscreenVideo'); + $('#videoPlayer').removeClass('fullscreenVideo').removeClass('idlePlayer'); $('.hiddenOnIdle').removeClass("inactive"); $("video").remove(); }; @@ -497,6 +497,7 @@ if (idleState == true) { $('.hiddenOnIdle').removeClass("inactive"); + $('#videoPlayer').removeClass('idlePlayer'); } idleState = false; @@ -504,6 +505,7 @@ timeout = window.setTimeout(function () { idleState = true; $('.hiddenOnIdle').addClass("inactive"); + $('#videoPlayer').addClass('idlePlayer'); }, 4000); } diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/metadataadvanced.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/metadataadvanced.js index ae949dd4be..5386564e28 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/metadataadvanced.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/metadataadvanced.js @@ -22,6 +22,13 @@ Dashboard.hideLoadingMsg(); } + function loadMetadataConfig(page, config) { + + + $('#selectDateAdded', page).val((config.UseFileCreationTimeForDateAdded ? '1' : '0')).selectmenu("refresh"); + + } + function loadChapters(page, config, providers) { if (providers.length) { @@ -167,6 +174,12 @@ }); + ApiClient.getNamedConfiguration("metadata").done(function (metadata) { + + loadMetadataConfig(page, metadata); + + }); + var promise1 = ApiClient.getNamedConfiguration("chapters"); var promise2 = ApiClient.getJSON(ApiClient.getUrl("Providers/Chapters")); @@ -200,6 +213,16 @@ }); } + function saveMetadata(form) { + + ApiClient.getNamedConfiguration("metadata").done(function (config) { + + config.UseFileCreationTimeForDateAdded = $('#selectDateAdded', form).val() == '1'; + + ApiClient.updateNamedConfiguration("metadata", config); + }); + } + function saveChapters(form) { ApiClient.getNamedConfiguration("chapters").done(function (config) { @@ -237,6 +260,7 @@ saveAdvancedConfig(form); saveChapters(form); + saveMetadata(form); // Disable default form submission return false; diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index b95240dba5..b27b010d4c 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.466 + 3.0.467 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 0590378ef9..484beaf008 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.466 + 3.0.467 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index af83164339..904ec78962 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.466 + 3.0.467 MediaBrowser.Model - Signed Edition Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index d62d6f0a30..45d05c2824 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.466 + 3.0.467 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - + diff --git a/SharedVersion.cs b/SharedVersion.cs index 261ee6a4fa..594ca02193 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,7 @@ using System.Reflection; +#if (DEBUG) [assembly: AssemblyVersion("3.0.*")] +#else +[assembly: AssemblyVersion("3.0.5395.0")] +#endif