diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index dfd4694c36..d8f7cb57f4 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -15,6 +15,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Xml; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Model.IO; using MediaBrowser.Model.Xml; @@ -227,6 +228,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers } } + protected virtual string MovieDbParserSearchString + { + get { return "themoviedb.org/movie/"; } + } + private void ParseProviderLinks(T item, string xml) { //Look for a match for the Regex pattern "tt" followed by 7 digits @@ -238,7 +244,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers // Support Tmdb // http://www.themoviedb.org/movie/36557 - var srch = "themoviedb.org/movie/"; + var srch = MovieDbParserSearchString; var index = xml.IndexOf(srch, StringComparison.OrdinalIgnoreCase); if (index != -1) @@ -250,6 +256,23 @@ namespace MediaBrowser.XbmcMetadata.Parsers item.SetProviderId(MetadataProviders.Tmdb, tmdbId); } } + + if (item is Series) + { + srch = "thetvdb.com/?tab=series&id="; + + index = xml.IndexOf(srch, StringComparison.OrdinalIgnoreCase); + + if (index != -1) + { + var tvdbId = xml.Substring(index + srch.Length).TrimEnd('/'); + int value; + if (!string.IsNullOrWhiteSpace(tvdbId) && int.TryParse(tvdbId, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) + { + item.SetProviderId(MetadataProviders.Tvdb, tvdbId); + } + } + } } protected virtual void FetchDataFromXmlNode(XmlReader reader, MetadataResult itemResult) diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 98016f4f70..b0db4e6f38 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -13,6 +13,19 @@ namespace MediaBrowser.XbmcMetadata.Parsers { public class SeriesNfoParser : BaseNfoParser { + protected override bool SupportsUrlAfterClosingXmlTag + { + get + { + return true; + } + } + + protected override string MovieDbParserSearchString + { + get { return "themoviedb.org/tv/"; } + } + /// /// Fetches the data from XML node. ///