2012-09-11 03:34:02 +02:00
|
|
|
|
using MediaBrowser.Controller.Entities.TV;
|
|
|
|
|
using MediaBrowser.Controller.Library;
|
2012-09-08 21:05:18 +02:00
|
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
|
|
using System;
|
2012-07-26 04:33:11 +02:00
|
|
|
|
using System.ComponentModel.Composition;
|
2012-07-12 08:55:27 +02:00
|
|
|
|
using System.IO;
|
|
|
|
|
|
2012-09-08 21:05:18 +02:00
|
|
|
|
namespace MediaBrowser.Controller.Resolvers.TV
|
2012-07-12 08:55:27 +02:00
|
|
|
|
{
|
2012-07-26 04:33:11 +02:00
|
|
|
|
[Export(typeof(IBaseItemResolver))]
|
|
|
|
|
public class SeriesResolver : BaseFolderResolver<Series>
|
2012-07-12 08:55:27 +02:00
|
|
|
|
{
|
|
|
|
|
protected override Series Resolve(ItemResolveEventArgs args)
|
|
|
|
|
{
|
2012-08-27 14:18:59 +02:00
|
|
|
|
if (args.IsDirectory)
|
2012-07-12 08:55:27 +02:00
|
|
|
|
{
|
2012-08-28 18:36:31 +02:00
|
|
|
|
// Optimization to avoid running all these tests against VF's
|
2012-08-28 20:16:35 +02:00
|
|
|
|
if (args.Parent != null && args.Parent.IsRoot)
|
2012-08-28 18:36:31 +02:00
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2012-07-12 19:09:35 +02:00
|
|
|
|
// Optimization to avoid running these tests against Seasons
|
|
|
|
|
if (args.Parent is Series)
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2012-08-23 20:35:44 +02:00
|
|
|
|
// It's a Series if any of the following conditions are met:
|
|
|
|
|
// series.xml exists
|
|
|
|
|
// [tvdbid= is present in the path
|
|
|
|
|
// TVUtils.IsSeriesFolder returns true
|
2012-08-23 07:45:26 +02:00
|
|
|
|
if (args.ContainsFile("series.xml") || Path.GetFileName(args.Path).IndexOf("[tvdbid=", StringComparison.OrdinalIgnoreCase) != -1 || TVUtils.IsSeriesFolder(args.Path, args.FileSystemChildren))
|
2012-07-12 08:55:27 +02:00
|
|
|
|
{
|
|
|
|
|
return new Series();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2012-08-23 22:51:10 +02:00
|
|
|
|
|
|
|
|
|
protected override void SetInitialItemValues(Series item, ItemResolveEventArgs args)
|
|
|
|
|
{
|
|
|
|
|
base.SetInitialItemValues(item, args);
|
|
|
|
|
|
|
|
|
|
SetProviderIdFromPath(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SetProviderIdFromPath(Series item)
|
|
|
|
|
{
|
2012-09-11 20:20:12 +02:00
|
|
|
|
const string srch = "[tvdbid=";
|
|
|
|
|
int index = item.Path.IndexOf(srch, StringComparison.OrdinalIgnoreCase);
|
2012-08-23 22:51:10 +02:00
|
|
|
|
|
|
|
|
|
if (index != -1)
|
|
|
|
|
{
|
|
|
|
|
string id = item.Path.Substring(index + srch.Length);
|
|
|
|
|
|
|
|
|
|
id = id.Substring(0, id.IndexOf(']'));
|
|
|
|
|
|
|
|
|
|
item.SetProviderId(MetadataProviders.Tvdb, id);
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-07-12 08:55:27 +02:00
|
|
|
|
}
|
|
|
|
|
}
|