Parcourir la source

fix case sensitive file names

Luke Pulverenti il y a 10 ans
Parent
commit
74a8ca9c38
30 fichiers modifiés avec 155 ajouts et 68 suppressions
  1. 7 0
      MediaBrowser.Api/Playback/BaseStreamingService.cs
  2. 29 0
      MediaBrowser.Controller/Library/MetadataConfigurationStore.cs
  3. 1 0
      MediaBrowser.Controller/MediaBrowser.Controller.csproj
  4. 17 3
      MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
  5. 3 0
      MediaBrowser.MediaInfo/MediaBrowser.MediaInfo.csproj
  6. 1 6
      MediaBrowser.MediaInfo/Properties/AssemblyInfo.cs
  7. 3 0
      MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
  8. 3 0
      MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
  9. 3 0
      MediaBrowser.Model/Configuration/CinemaModeConfiguration.cs
  10. 8 0
      MediaBrowser.Model/Configuration/MetadataConfiguration.cs
  11. 8 8
      MediaBrowser.Model/Configuration/ServerConfiguration.cs
  12. 4 2
      MediaBrowser.Model/Dlna/ConditionProcessor.cs
  13. 1 1
      MediaBrowser.Model/Dlna/ProfileConditionType.cs
  14. 3 3
      MediaBrowser.Model/Dlna/Profiles/AndroidProfile.cs
  15. 1 0
      MediaBrowser.Model/Dlna/StreamBuilder.cs
  16. 1 0
      MediaBrowser.Model/Dlna/StreamInfo.cs
  17. 1 0
      MediaBrowser.Model/MediaBrowser.Model.csproj
  18. 4 0
      MediaBrowser.Providers/Manager/ProviderUtils.cs
  19. 1 1
      MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
  20. 4 4
      MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs
  21. 1 1
      MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs
  22. 8 8
      MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
  23. 14 14
      MediaBrowser.Server.Implementations/Localization/Server/kk.json
  24. 12 4
      MediaBrowser.Server.Implementations/Localization/Server/server.json
  25. 7 7
      MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
  26. 2 2
      Nuget/MediaBrowser.Common.Internal.nuspec
  27. 1 1
      Nuget/MediaBrowser.Common.nuspec
  28. 1 1
      Nuget/MediaBrowser.Model.Signed.nuspec
  29. 2 2
      Nuget/MediaBrowser.Server.Core.nuspec
  30. 4 0
      SharedVersion.cs

+ 7 - 0
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1387,6 +1387,13 @@ namespace MediaBrowser.Api.Playback
                         videoRequest.MaxVideoBitDepth = int.Parse(val, UsCulture);
                     }
                 }
+                else if (i == 19)
+                {
+                    if (videoRequest != null)
+                    {
+                        videoRequest.Profile = val;
+                    }
+                }
             }
         }
 

+ 29 - 0
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<ConfigurationStore> GetConfigurations()
+        {
+            return new List<ConfigurationStore>
+            {
+                new ConfigurationStore
+                {
+                     Key = "metadata",
+                     ConfigurationType = typeof(MetadataConfiguration)
+                }
+            };
+        }
+    }
+
+    public static class MetadataConfigurationExtensions
+    {
+        public static MetadataConfiguration GetMetadataConfiguration(this IConfigurationManager config)
+        {
+            return config.GetConfiguration<MetadataConfiguration>("metadata");
+        }
+    }
+}

+ 1 - 0
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -174,6 +174,7 @@
     <Compile Include="Library\IUserDataManager.cs" />
     <Compile Include="Library\IUserViewManager.cs" />
     <Compile Include="Library\LibraryManagerExtensions.cs" />
+    <Compile Include="Library\MetadataConfigurationStore.cs" />
     <Compile Include="Library\PlaybackStopEventArgs.cs" />
     <Compile Include="Library\UserDataSaveEventArgs.cs" />
     <Compile Include="LiveTv\RecordingGroup.cs" />

+ 17 - 3
MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs

@@ -211,7 +211,7 @@ namespace MediaBrowser.Controller.Resolvers
                 {
                     if (includeCreationTime)
                     {
-                        item.DateCreated = DateTime.UtcNow;
+                        SetDateCreated(item, fileSystem, childData);
                     }
 
                     item.DateModified = fileSystem.GetLastWriteTimeUtc(childData);
@@ -224,7 +224,7 @@ namespace MediaBrowser.Controller.Resolvers
                     {
                         if (includeCreationTime)
                         {
-                            item.DateCreated = DateTime.UtcNow;
+                            SetDateCreated(item, fileSystem, fileData);
                         }
                         item.DateModified = fileSystem.GetLastWriteTimeUtc(fileData);
                     }
@@ -234,10 +234,24 @@ namespace MediaBrowser.Controller.Resolvers
             {
                 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;
+            }
+        }
     }
 }

+ 3 - 0
MediaBrowser.MediaInfo/MediaBrowser.MediaInfo.csproj

@@ -39,6 +39,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="..\SharedVersion.cs">
+      <Link>Properties\SharedVersion.cs</Link>
+    </Compile>
     <Compile Include="MediaInfoLib.cs" />
     <Compile Include="Native.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />

+ 1 - 6
MediaBrowser.MediaInfo/Properties/AssemblyInfo.cs

@@ -28,9 +28,4 @@ using System.Runtime.InteropServices;
 //      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")]
+//

+ 3 - 0
MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj

@@ -173,6 +173,9 @@
     <Compile Include="..\MediaBrowser.Model\Configuration\ImageSavingConvention.cs">
       <Link>Configuration\ImageSavingConvention.cs</Link>
     </Compile>
+    <Compile Include="..\MediaBrowser.Model\Configuration\MetadataConfiguration.cs">
+      <Link>Configuration\MetadataConfiguration.cs</Link>
+    </Compile>
     <Compile Include="..\MediaBrowser.Model\Configuration\MetadataOptions.cs">
       <Link>Configuration\MetadataOptions.cs</Link>
     </Compile>

+ 3 - 0
MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj

@@ -145,6 +145,9 @@
     <Compile Include="..\MediaBrowser.Model\Configuration\ImageSavingConvention.cs">
       <Link>Configuration\ImageSavingConvention.cs</Link>
     </Compile>
+    <Compile Include="..\MediaBrowser.Model\Configuration\MetadataConfiguration.cs">
+      <Link>Configuration\MetadataConfiguration.cs</Link>
+    </Compile>
     <Compile Include="..\MediaBrowser.Model\Configuration\MetadataOptions.cs">
       <Link>Configuration\MetadataOptions.cs</Link>
     </Compile>

+ 3 - 0
MediaBrowser.Model/Configuration/CinemaModeConfiguration.cs

@@ -14,9 +14,12 @@ namespace MediaBrowser.Model.Configuration
         public bool EnableIntrosFromUpcomingDvdMovies { get; set; }
         public bool EnableIntrosFromUpcomingStreamingMovies { get; set; }
 
+        public int TrailerLimit { get; set; }
+        
         public CinemaModeConfiguration()
         {
             EnableIntrosParentalControl = true;
+            TrailerLimit = 2;
         }
     }
 }

+ 8 - 0
MediaBrowser.Model/Configuration/MetadataConfiguration.cs

@@ -0,0 +1,8 @@
+
+namespace MediaBrowser.Model.Configuration
+{
+    public class MetadataConfiguration
+    {
+        public bool UseFileCreationTimeForDateAdded { get; set; }
+    }
+}

+ 8 - 8
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 @@ namespace MediaBrowser.Model.Configuration
         /// <value><c>true</c> if [enable u pn p]; otherwise, <c>false</c>.</value>
         public bool EnableUPnP { get; set; }
 
+        /// <summary>
+        /// Gets or sets the public mapped port.
+        /// </summary>
+        /// <value>The public mapped port.</value>
+        public int PublicPort { get; set; }
+
         /// <summary>
         /// Gets or sets the HTTP server port number.
         /// </summary>
@@ -167,20 +171,15 @@ namespace MediaBrowser.Model.Configuration
 
         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; }
-
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
         /// </summary>
@@ -189,6 +188,7 @@ namespace MediaBrowser.Model.Configuration
         {
             MediaEncodingQuality = EncodingQuality.Auto;
             ImageSavingConvention = ImageSavingConvention.Compatible;
+            PublicPort = 8096;
             HttpServerPortNumber = 8096;
             EnableDashboardResponseCaching = true;
 

+ 4 - 2
MediaBrowser.Model/Dlna/ConditionProcessor.cs

@@ -145,8 +145,10 @@ namespace MediaBrowser.Model.Dlna
 
             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:

+ 1 - 1
MediaBrowser.Model/Dlna/ProfileConditionType.cs

@@ -6,6 +6,6 @@
         NotEquals = 1,
         LessThanEqual = 2,
         GreaterThanEqual = 3,
-        SubstringOf = 4
+        EqualsAny = 4
     }
 }

+ 3 - 3
MediaBrowser.Model/Dlna/Profiles/AndroidProfile.cs

@@ -32,7 +32,7 @@ namespace MediaBrowser.Model.Dlna.Profiles
                     VideoCodec = "h264",
                     AudioCodec = "aac",
                     Type = DlnaProfileType.Video,
-                    VideoProfile = "Baseline",
+                    VideoProfile = "baseline",
                     Context = EncodingContext.Streaming
                 });
             }
@@ -42,7 +42,7 @@ namespace MediaBrowser.Model.Dlna.Profiles
                 VideoCodec = "h264",
                 AudioCodec = "aac",
                 Type = DlnaProfileType.Video,
-                VideoProfile = "Baseline",
+                VideoProfile = "baseline",
                 Context = EncodingContext.Static
             });
 
@@ -102,7 +102,7 @@ namespace MediaBrowser.Model.Dlna.Profiles
 
                     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"),

+ 1 - 0
MediaBrowser.Model/Dlna/StreamBuilder.cs

@@ -291,6 +291,7 @@ namespace MediaBrowser.Model.Dlna
                 playlistItem.VideoCodec = transcodingProfile.VideoCodec;
                 playlistItem.Protocol = transcodingProfile.Protocol;
                 playlistItem.AudioStreamIndex = audioStreamIndex;
+                playlistItem.VideoProfile = transcodingProfile.VideoProfile;
 
                 List<ProfileCondition> videoTranscodingConditions = new List<ProfileCondition>();
                 foreach (CodecProfile i in options.Profile.CodecProfiles)

+ 1 - 0
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -142,6 +142,7 @@ namespace MediaBrowser.Model.Dlna
             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()));
         }

+ 1 - 0
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -90,6 +90,7 @@
     <Compile Include="Configuration\ChannelOptions.cs" />
     <Compile Include="Configuration\ChapterOptions.cs" />
     <Compile Include="Configuration\CinemaModeConfiguration.cs" />
+    <Compile Include="Configuration\MetadataConfiguration.cs" />
     <Compile Include="Configuration\PeopleMetadataOptions.cs" />
     <Compile Include="Configuration\XbmcMetadataOptions.cs" />
     <Compile Include="Configuration\SubtitlePlaybackMode.cs" />

+ 4 - 0
MediaBrowser.Providers/Manager/ProviderUtils.cs

@@ -43,6 +43,10 @@ namespace MediaBrowser.Providers.Manager
             if (replaceData || string.IsNullOrEmpty(target.HomePageUrl))
             {
                 target.HomePageUrl = source.HomePageUrl;
+                if (!string.IsNullOrWhiteSpace(target.HomePageUrl) && target.HomePageUrl.IndexOf("http", StringComparison.OrdinalIgnoreCase) != 0)
+                {
+                    target.HomePageUrl = "http://" + target.HomePageUrl;
+                }
             }
 
             if (replaceData || !target.IndexNumber.HasValue)

+ 1 - 1
MediaBrowser.Server.Implementations/Connect/ConnectManager.cs

@@ -74,7 +74,7 @@ namespace MediaBrowser.Server.Implementations.Connect
                         ip = "http://" + ip;
                     }
 
-                    return ip + ":" + _config.Configuration.HttpServerPortNumber.ToString(CultureInfo.InvariantCulture);
+                    return ip + ":" + _config.Configuration.PublicPort.ToString(CultureInfo.InvariantCulture);
                 }
 
                 return null;

+ 4 - 4
MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs

@@ -126,15 +126,15 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
 
                 var info = _appHost.GetSystemInfo();
 
-                CreatePortMap(device, info.HttpServerPortNumber);
+                CreatePortMap(device, info.HttpServerPortNumber, _config.Configuration.PublicPort);
             }
         }
 
-        private void CreatePortMap(INatDevice device, int port)
+        private void CreatePortMap(INatDevice device, int privatePort, int publicPort)
         {
-            _logger.Debug("Creating port map on port {0}", port);
+            _logger.Debug("Creating port map on port {0}", privatePort);
 
-            device.CreatePortMap(new Mapping(Protocol.Tcp, port, port)
+            device.CreatePortMap(new Mapping(Protocol.Tcp, privatePort, publicPort)
             {
                 Description = "Media Browser Server"
             });

+ 1 - 1
MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs

@@ -148,7 +148,7 @@ namespace MediaBrowser.Server.Implementations.Intros
                 GetCustomIntros(item) :
                 new List<IntroInfo>();
 
-            var trailerLimit = 2;
+            var trailerLimit = config.TrailerLimit;
             if (customIntros.Count > 0)
             {
                 trailerLimit--;

+ 8 - 8
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",

+ 14 - 14
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",

+ 12 - 4
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:"
 }

+ 7 - 7
MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj

@@ -143,31 +143,31 @@
   </ItemGroup>
   <ItemGroup />
   <ItemGroup>
-    <None Include="..\thirdparty\libwebp\linux\x86\libwebp.so">
+    <None Include="..\ThirdParty\libwebp\linux\x86\libwebp.so">
       <Link>libwebp\linux\lib\libwebp.so</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="..\thirdparty\libwebp\linux\x86_64\libwebp.so">
+    <None Include="..\ThirdParty\libwebp\linux\x86_64\libwebp.so">
       <Link>libwebp\linux\lib64\libwebp.so</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="..\thirdparty\libwebp\osx\libwebp.5.dylib">
+    <None Include="..\ThirdParty\libwebp\osx\libwebp.5.dylib">
       <Link>libwebp\osx\libwebp.5.dylib</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="..\thirdparty\mediainfo\osx\libmediainfo.dylib">
+    <None Include="..\ThirdParty\MediaInfo\osx\libmediainfo.dylib">
       <Link>MediaInfo\osx\libmediainfo.dylib</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="..\thirdparty\sqlite3\linux\x86\3.8.2\libsqlite3.so.0.8.6">
+    <None Include="..\ThirdParty\SQLite3\linux\x86\3.8.2\libsqlite3.so.0.8.6">
       <Link>sqlite3\linux\lib\libsqlite3.so.0.8.6</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="..\thirdparty\sqlite3\linux\x86_64\3.8.2\libsqlite3.so.0.8.6">
+    <None Include="..\ThirdParty\SQLite3\linux\x86_64\3.8.2\libsqlite3.so.0.8.6">
       <Link>sqlite3\linux\lib64\libsqlite3.so.0.8.6</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="..\thirdparty\sqlite3\mac\universal\3.8.2\libsqlite3.0.dylib">
+    <None Include="..\ThirdParty\SQLite3\mac\universal\3.8.2\libsqlite3.0.dylib">
       <Link>sqlite3\mac\libsqlite3.0.dylib</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>

+ 2 - 2
Nuget/MediaBrowser.Common.Internal.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common.Internal</id>
-        <version>3.0.466</version>
+        <version>3.0.467</version>
         <title>MediaBrowser.Common.Internal</title>
         <authors>Luke</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.466" />
+            <dependency id="MediaBrowser.Common" version="3.0.467" />
             <dependency id="NLog" version="3.1.0.0" />
             <dependency id="SimpleInjector" version="2.5.2" />
             <dependency id="sharpcompress" version="0.10.2" />

+ 1 - 1
Nuget/MediaBrowser.Common.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common</id>
-        <version>3.0.466</version>
+        <version>3.0.467</version>
         <title>MediaBrowser.Common</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 1 - 1
Nuget/MediaBrowser.Model.Signed.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Model.Signed</id>
-        <version>3.0.466</version>
+        <version>3.0.467</version>
         <title>MediaBrowser.Model - Signed Edition</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 2 - 2
Nuget/MediaBrowser.Server.Core.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Server.Core</id>
-        <version>3.0.466</version>
+        <version>3.0.467</version>
         <title>Media Browser.Server.Core</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains core components required to build plugins for Media Browser Server.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.466" />
+            <dependency id="MediaBrowser.Common" version="3.0.467" />
         </dependencies>
     </metadata>
     <files>

+ 4 - 0
SharedVersion.cs

@@ -1,3 +1,7 @@
 using System.Reflection;
 
+#if (DEBUG)
 [assembly: AssemblyVersion("3.0.*")]
+#else
+[assembly: AssemblyVersion("3.0.5395.0")]
+#endif