diff options
Diffstat (limited to 'MediaBrowser.Controller/Providers/TV/EpisodeXmlParser.cs')
| -rw-r--r-- | MediaBrowser.Controller/Providers/TV/EpisodeXmlParser.cs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Providers/TV/EpisodeXmlParser.cs b/MediaBrowser.Controller/Providers/TV/EpisodeXmlParser.cs new file mode 100644 index 0000000000..1cb604a51c --- /dev/null +++ b/MediaBrowser.Controller/Providers/TV/EpisodeXmlParser.cs @@ -0,0 +1,60 @@ +using MediaBrowser.Controller.Entities.TV;
+using System.IO;
+using System.Xml;
+
+namespace MediaBrowser.Controller.Providers.TV
+{
+ public class EpisodeXmlParser : BaseItemXmlParser<Episode>
+ {
+ protected override void FetchDataFromXmlNode(XmlReader reader, Episode item)
+ {
+ switch (reader.Name)
+ {
+ case "filename":
+ {
+ string filename = reader.ReadElementContentAsString();
+
+ if (!string.IsNullOrWhiteSpace(filename))
+ {
+ // Strip off everything but the filename. Some metadata tools like MetaBrowser v1.0 will have an 'episodes' prefix
+ // even though it's actually using the metadata folder.
+ filename = Path.GetFileName(filename);
+
+ string seasonFolder = Path.GetDirectoryName(item.Path);
+ item.PrimaryImagePath = Path.Combine(seasonFolder, "metadata", filename);
+ }
+ break;
+ }
+ case "SeasonNumber":
+ {
+ string number = reader.ReadElementContentAsString();
+
+ if (!string.IsNullOrWhiteSpace(number))
+ {
+ item.ParentIndexNumber = int.Parse(number);
+ }
+ break;
+ }
+
+ case "EpisodeNumber":
+ {
+ string number = reader.ReadElementContentAsString();
+
+ if (!string.IsNullOrWhiteSpace(number))
+ {
+ item.IndexNumber = int.Parse(number);
+ }
+ break;
+ }
+
+ case "EpisodeName":
+ item.Name = reader.ReadElementContentAsString();
+ break;
+
+ default:
+ base.FetchDataFromXmlNode(reader, item);
+ break;
+ }
+ }
+ }
+}
|
