Radarr/NzbDrone.Core/Helpers/EpisodeSortingHelper.cs

131 lines
8.5 KiB
C#

using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Model;
namespace NzbDrone.Core.Helpers
{
public static class EpisodeSortingHelper
{
private static readonly List<EpisodeSortingType> SeparatorStyles = new List<EpisodeSortingType>
{
new EpisodeSortingType
{
Id = 0,
Name = "Dash",
Pattern = " - "
},
new EpisodeSortingType
{
Id = 1,
Name = "Space",
Pattern = " "
}
};
private static readonly List<EpisodeSortingType> NumberStyles = new List<EpisodeSortingType>
{
new EpisodeSortingType
{
Id = 0,
Name = "1x05",
Pattern = "%sx%0e",
EpisodeSeparator = "x"
},
new EpisodeSortingType
{
Id = 1,
Name = "01x05",
Pattern = "%0sx%0e",
EpisodeSeparator = "x"
},
new EpisodeSortingType
{
Id = 2,
Name = "S01E05",
Pattern = "S%0sE%0e",
EpisodeSeparator = "E"
},
new EpisodeSortingType
{
Id = 3,
Name = "s01e05",
Pattern = "s%0se%0e",
EpisodeSeparator = "e"
}
};
private static readonly List<EpisodeSortingType> MultiEpisodeStyles = new List<EpisodeSortingType>
{
new EpisodeSortingType
{
Id = 0,
Name = "Extend",
Pattern = "-%0e"
},
new EpisodeSortingType
{
Id = 1,
Name = "Duplicate",
Pattern = "%p%0s%x%0e"
},
new EpisodeSortingType
{
Id = 2,
Name = "Repeat",
Pattern = "%x%0e"
},
new EpisodeSortingType
{
Id = 3,
Name = "Scene",
Pattern = "-%x%0e"
}
};
public static List<EpisodeSortingType> GetSeparatorStyles()
{
return SeparatorStyles;
}
public static List<EpisodeSortingType> GetNumberStyles()
{
return NumberStyles;
}
public static List<EpisodeSortingType> GetMultiEpisodeStyles()
{
return MultiEpisodeStyles;
}
public static EpisodeSortingType GetSeparatorStyle(int id)
{
return SeparatorStyles.Single(s => s.Id == id);
}
public static EpisodeSortingType GetNumberStyle(int id)
{
return NumberStyles.Single(s => s.Id == id);
}
public static EpisodeSortingType GetMultiEpisodeStyle(int id)
{
return MultiEpisodeStyles.Single(s => s.Id == id);
}
public static EpisodeSortingType GetSeparatorStyle(string name)
{
return SeparatorStyles.Single(s => s.Name == name);
}
public static EpisodeSortingType GetNumberStyle(string name)
{
return NumberStyles.Single(s => s.Name == name);
}
public static EpisodeSortingType GetMultiEpisodeStyle(string name)
{
return MultiEpisodeStyles.Single(s => s.Name == name);
}
}
}