Ver Fonte

add support to movie names with dot notation

Luis Miguel Almánzar há 11 anos atrás
pai
commit
d77122ba0f

+ 2 - 1
MediaBrowser.Providers/Movies/MovieDbProvider.cs

@@ -189,6 +189,7 @@ namespace MediaBrowser.Providers.Movies
 
         static readonly Regex[] NameMatches = new[] {
             new Regex(@"(?<name>.*)\((?<year>\d{4})\)"), // matches "My Movie (2001)" and gives us the name and the year
+            new Regex(@"(?<name>.*)(\.(?<year>\d{4})(\.|$)).*$"), 
             new Regex(@"(?<name>.*)") // last resort matches the whole string as the name
         };
 
@@ -320,7 +321,7 @@ namespace MediaBrowser.Providers.Movies
         /// <param name="name">The name.</param>
         /// <param name="justName">Name of the just.</param>
         /// <param name="year">The year.</param>
-        protected void ParseName(string name, out string justName, out int? year)
+        public static void ParseName(string name, out string justName, out int? year)
         {
             justName = null;
             year = null;

+ 5 - 0
MediaBrowser.Tests/MediaBrowser.Tests.csproj

@@ -50,6 +50,7 @@
     </Otherwise>
   </Choose>
   <ItemGroup>
+    <Compile Include="Providers\MovieDbProviderTests.cs" />
     <Compile Include="Resolvers\MovieResolverTests.cs" />
     <Compile Include="Resolvers\TvUtilTests.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -63,6 +64,10 @@
       <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
       <Name>MediaBrowser.Model</Name>
     </ProjectReference>
+    <ProjectReference Include="..\MediaBrowser.Providers\MediaBrowser.Providers.csproj">
+      <Project>{442B5058-DCAF-4263-BB6A-F21E31120A1B}</Project>
+      <Name>MediaBrowser.Providers</Name>
+    </ProjectReference>
   </ItemGroup>
   <Choose>
     <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">

+ 36 - 0
MediaBrowser.Tests/Providers/MovieDbProviderTests.cs

@@ -0,0 +1,36 @@
+using MediaBrowser.Providers.Movies;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace MediaBrowser.Tests.Providers {
+    [TestClass]
+    public class MovieDbProviderTests {
+        [TestMethod]
+        public void TestNameMatches() {
+            var name = string.Empty;
+            int? year = null;
+            MovieDbProvider.ParseName("My Movie (2013)", out name, out year);
+            Assert.AreEqual("My Movie", name);
+            Assert.AreEqual(2013, year);
+            name = string.Empty;
+            year = null;
+            MovieDbProvider.ParseName("My Movie 2 (2013)", out name, out year);
+            Assert.AreEqual("My Movie 2", name);
+            Assert.AreEqual(2013, year);
+            name = string.Empty;
+            year = null;
+            MovieDbProvider.ParseName("My Movie 2001 (2013)", out name, out year);
+            Assert.AreEqual("My Movie 2001", name);
+            Assert.AreEqual(2013, year);
+            name = string.Empty;
+            year = null;
+            MovieDbProvider.ParseName("My Movie - 2 (2013)", out name, out year);
+            Assert.AreEqual("My Movie - 2", name);
+            Assert.AreEqual(2013, year);
+            name = string.Empty;
+            year = null;
+            MovieDbProvider.ParseName("curse.of.chucky.2013.stv.unrated.multi.1080p.bluray.x264-rough", out name, out year);
+            Assert.AreEqual("curse.of.chucky", name);
+            Assert.AreEqual(2013, year);
+        }
+    }
+}