You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
66 lines
2.2 KiB
using System;
|
|
using System.ComponentModel.Composition;
|
|
using System.IO;
|
|
using MediaBrowser.Controller.Library;
|
|
using MediaBrowser.Controller.Resolvers;
|
|
using MediaBrowser.Model.Entities;
|
|
using MediaBrowser.TV.Entities;
|
|
|
|
namespace MediaBrowser.TV.Resolvers
|
|
{
|
|
[Export(typeof(IBaseItemResolver))]
|
|
public class SeriesResolver : BaseFolderResolver<Series>
|
|
{
|
|
protected override Series Resolve(ItemResolveEventArgs args)
|
|
{
|
|
if (args.IsDirectory)
|
|
{
|
|
// Optimization to avoid running all these tests against VF's
|
|
if (args.Parent != null && args.Parent.IsRoot)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
// Optimization to avoid running these tests against Seasons
|
|
if (args.Parent is Series)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
// 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
|
|
if (args.ContainsFile("series.xml") || Path.GetFileName(args.Path).IndexOf("[tvdbid=", StringComparison.OrdinalIgnoreCase) != -1 || TVUtils.IsSeriesFolder(args.Path, args.FileSystemChildren))
|
|
{
|
|
return new Series();
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
protected override void SetInitialItemValues(Series item, ItemResolveEventArgs args)
|
|
{
|
|
base.SetInitialItemValues(item, args);
|
|
|
|
SetProviderIdFromPath(item);
|
|
}
|
|
|
|
private void SetProviderIdFromPath(Series item)
|
|
{
|
|
string srch = "[tvdbid=";
|
|
int index = item.Path.IndexOf(srch, System.StringComparison.OrdinalIgnoreCase);
|
|
|
|
if (index != -1)
|
|
{
|
|
string id = item.Path.Substring(index + srch.Length);
|
|
|
|
id = id.Substring(0, id.IndexOf(']'));
|
|
|
|
item.SetProviderId(MetadataProviders.Tvdb, id);
|
|
}
|
|
}
|
|
}
|
|
}
|