jellyfin/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs

65 lines
2.1 KiB
C#
Raw Normal View History

using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using System;
using System.ComponentModel.Composition;
2012-07-12 08:55:27 +02:00
using System.IO;
namespace MediaBrowser.Controller.Resolvers.TV
2012-07-12 08:55:27 +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
{
// 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)
{
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;
}
// 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))
2012-07-12 08:55:27 +02:00
{
return new Series();
}
}
return null;
}
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);
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
}
}