Progress on using T4 template for newznab category definitions

This commit is contained in:
unknown
2015-08-11 23:41:12 -06:00
parent 90f3e4f657
commit df5f799d46
4 changed files with 312 additions and 0 deletions

View File

@@ -232,6 +232,11 @@
<Compile Include="Models\TorznabCapabilities.cs" /> <Compile Include="Models\TorznabCapabilities.cs" />
<Compile Include="Models\Config\ServerConfig.cs" /> <Compile Include="Models\Config\ServerConfig.cs" />
<Compile Include="Models\TorznabCategory.cs" /> <Compile Include="Models\TorznabCategory.cs" />
<Compile Include="Models\TorznabCats.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>TorznabCats.tt</DependentUpon>
</Compile>
<Compile Include="Models\TorznabCatType.cs" /> <Compile Include="Models\TorznabCatType.cs" />
<Compile Include="Models\TrackerCache.cs" /> <Compile Include="Models\TrackerCache.cs" />
<Compile Include="Models\TrackerCacheResult.cs" /> <Compile Include="Models\TrackerCacheResult.cs" />
@@ -526,6 +531,10 @@
<Content Include="Content\setup_indexer.html"> <Content Include="Content\setup_indexer.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Models\TorznabCats.tt">
<Generator>TextTemplatingFileGenerator</Generator>
<LastGenOutput>TorznabCats.cs</LastGenOutput>
</Content>
<Content Include="Resources\validator_reply.xml" /> <Content Include="Resources\validator_reply.xml" />
<Content Include="Content\logos\alpharatio.png"> <Content Include="Content\logos\alpharatio.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -554,6 +563,9 @@
<Install>false</Install> <Install>false</Install>
</BootstrapperPackage> </BootstrapperPackage>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View File

@@ -19,6 +19,13 @@ namespace Jackett.Models
SubCategories = new List<TorznabCategory>(); SubCategories = new List<TorznabCategory>();
} }
public TorznabCategory(int id, string name)
{
ID = id;
Name = name;
SubCategories = new List<TorznabCategory>();
}
public JToken ToJson() public JToken ToJson()
{ {
var t = new JObject(); var t = new JObject();

View File

@@ -0,0 +1,162 @@
using System.Collections.Generic;
using Jackett.Models;
public static class TorznabCats
{
public static readonly TorznabCategory Console = new TorznabCategory(1000, "Console");
public static readonly TorznabCategory ConsoleNDS = new TorznabCategory(1010, "Console/NDS");
public static readonly TorznabCategory ConsolePSP = new TorznabCategory(1020, "Console/PSP");
public static readonly TorznabCategory ConsoleWii = new TorznabCategory(1030, "Console/Wii");
public static readonly TorznabCategory ConsoleXbox = new TorznabCategory(1040, "Console/Xbox");
public static readonly TorznabCategory ConsoleXbox360 = new TorznabCategory(1050, "Console/Xbox 360");
public static readonly TorznabCategory ConsoleWiiwareVC = new TorznabCategory(1060, "Console/Wiiware/VC");
public static readonly TorznabCategory ConsoleXBOX360DLC = new TorznabCategory(1070, "Console/XBOX 360 DLC");
public static readonly TorznabCategory ConsolePS3 = new TorznabCategory(1080, "Console/PS3");
public static readonly TorznabCategory ConsoleOther = new TorznabCategory(1090, "Console/Other");
public static readonly TorznabCategory Console3DS = new TorznabCategory(1110, "Console/3DS");
public static readonly TorznabCategory ConsolePSVita = new TorznabCategory(1120, "Console/PS Vita");
public static readonly TorznabCategory ConsoleWiiU = new TorznabCategory(1130, "Console/WiiU");
public static readonly TorznabCategory ConsoleXboxOne = new TorznabCategory(1140, "Console/Xbox One");
public static readonly TorznabCategory ConsolePS4 = new TorznabCategory(1180, "Console/PS4");
public static readonly TorznabCategory Movies = new TorznabCategory(2000, "Movies");
public static readonly TorznabCategory MoviesForeign = new TorznabCategory(2010, "Movies/Foreign");
public static readonly TorznabCategory MoviesOther = new TorznabCategory(2020, "Movies/Other");
public static readonly TorznabCategory MoviesSD = new TorznabCategory(2030, "Movies/SD");
public static readonly TorznabCategory MoviesHD = new TorznabCategory(2040, "Movies/HD");
public static readonly TorznabCategory Movies3D = new TorznabCategory(2050, "Movies/3D");
public static readonly TorznabCategory MoviesBluRay = new TorznabCategory(2060, "Movies/BluRay");
public static readonly TorznabCategory MoviesDVD = new TorznabCategory(2070, "Movies/DVD");
public static readonly TorznabCategory MoviesWEBDL = new TorznabCategory(2080, "Movies/WEBDL");
public static readonly TorznabCategory Audio = new TorznabCategory(3000, "Audio");
public static readonly TorznabCategory AudioMP3 = new TorznabCategory(3010, "Audio/MP3");
public static readonly TorznabCategory AudioVideo = new TorznabCategory(3020, "Audio/Video");
public static readonly TorznabCategory AudioAudiobook = new TorznabCategory(3030, "Audio/Audiobook");
public static readonly TorznabCategory AudioLossless = new TorznabCategory(3040, "Audio/Lossless");
public static readonly TorznabCategory AudioOther = new TorznabCategory(3050, "Audio/Other");
public static readonly TorznabCategory AudioForeign = new TorznabCategory(3060, "Audio/Foreign");
public static readonly TorznabCategory PC = new TorznabCategory(4000, "PC");
public static readonly TorznabCategory PC0day = new TorznabCategory(4010, "PC/0day");
public static readonly TorznabCategory PCISO = new TorznabCategory(4020, "PC/ISO");
public static readonly TorznabCategory PCMac = new TorznabCategory(4030, "PC/Mac");
public static readonly TorznabCategory PCPhoneOther = new TorznabCategory(4040, "PC/Phone-Other");
public static readonly TorznabCategory PCGames = new TorznabCategory(4050, "PC/Games");
public static readonly TorznabCategory PCPhoneIOS = new TorznabCategory(4060, "PC/Phone-IOS");
public static readonly TorznabCategory PCPhoneAndroid = new TorznabCategory(4070, "PC/Phone-Android");
public static readonly TorznabCategory TV = new TorznabCategory(5000, "TV");
public static readonly TorznabCategory TVWEBDL = new TorznabCategory(5010, "TV/WEB-DL");
public static readonly TorznabCategory TVFOREIGN = new TorznabCategory(5020, "TV/FOREIGN");
public static readonly TorznabCategory TVSD = new TorznabCategory(5030, "TV/SD");
public static readonly TorznabCategory TVHD = new TorznabCategory(5040, "TV/HD");
public static readonly TorznabCategory TVOTHER = new TorznabCategory(5050, "TV/OTHER");
public static readonly TorznabCategory TVSport = new TorznabCategory(5060, "TV/Sport");
public static readonly TorznabCategory TVAnime = new TorznabCategory(5070, "TV/Anime");
public static readonly TorznabCategory TVDocumentary = new TorznabCategory(5080, "TV/Documentary");
public static readonly TorznabCategory XXX = new TorznabCategory(6000, "XXX");
public static readonly TorznabCategory XXXDVD = new TorznabCategory(6010, "XXX/DVD");
public static readonly TorznabCategory XXXWMV = new TorznabCategory(6020, "XXX/WMV");
public static readonly TorznabCategory XXXXviD = new TorznabCategory(6030, "XXX/XviD");
public static readonly TorznabCategory XXXx264 = new TorznabCategory(6040, "XXX/x264");
public static readonly TorznabCategory XXXOther = new TorznabCategory(6050, "XXX/Other");
public static readonly TorznabCategory XXXImageset = new TorznabCategory(6060, "XXX/Imageset");
public static readonly TorznabCategory XXXPacks = new TorznabCategory(6070, "XXX/Packs");
public static readonly TorznabCategory Other = new TorznabCategory(7000, "Other");
public static readonly TorznabCategory OtherMisc = new TorznabCategory(7010, "Other/Misc");
public static readonly TorznabCategory OtherHashed = new TorznabCategory(7020, "Other/Hashed");
public static readonly TorznabCategory Books = new TorznabCategory(8000, "Books");
public static readonly TorznabCategory BooksEbook = new TorznabCategory(8010, "Books/Ebook");
public static readonly TorznabCategory BooksComics = new TorznabCategory(8020, "Books/Comics");
public static readonly TorznabCategory BooksMagazines = new TorznabCategory(8030, "Books/Magazines");
public static readonly TorznabCategory BooksTechnical = new TorznabCategory(8040, "Books/Technical");
public static readonly TorznabCategory BooksOther = new TorznabCategory(8050, "Books/Other");
public static readonly TorznabCategory BooksForeign = new TorznabCategory(8060, "Books/Foreign");
static TorznabCats()
{
Console.SubCategories.AddRange(new List<TorznabCategory> { ConsoleNDS, ConsolePSP, ConsoleWii, ConsoleXbox, ConsoleXbox360, ConsoleWiiwareVC, ConsoleXBOX360DLC, ConsolePS3, ConsoleOther, Console3DS, ConsolePSVita, ConsoleWiiU, ConsoleXboxOne, ConsolePS4 });
Movies.SubCategories.AddRange(new List<TorznabCategory> { MoviesForeign, MoviesOther, MoviesSD, MoviesHD, Movies3D, MoviesBluRay, MoviesDVD, MoviesWEBDL });
Audio.SubCategories.AddRange(new List<TorznabCategory> { AudioMP3, AudioVideo, AudioAudiobook, AudioLossless, AudioOther, AudioForeign });
PC.SubCategories.AddRange(new List<TorznabCategory> { PC0day, PCISO, PCMac, PCPhoneOther, PCGames, PCPhoneIOS, PCPhoneAndroid });
TV.SubCategories.AddRange(new List<TorznabCategory> { TVWEBDL, TVFOREIGN, TVSD, TVHD, TVOTHER, TVSport, TVAnime, TVDocumentary });
XXX.SubCategories.AddRange(new List<TorznabCategory> { XXXDVD, XXXWMV, XXXXviD, XXXx264, XXXOther, XXXImageset, XXXPacks });
Other.SubCategories.AddRange(new List<TorznabCategory> { OtherMisc, OtherHashed });
Books.SubCategories.AddRange(new List<TorznabCategory> { BooksEbook, BooksComics, BooksMagazines, BooksTechnical, BooksOther, BooksForeign });
}
}

View File

@@ -0,0 +1,131 @@
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
<# string data = @"
1000: Console
1010: Console/NDS
1020: Console/PSP
1030: Console/Wii
1040: Console/Xbox
1050: Console/Xbox 360
1060: Console/Wiiware/VC
1070: Console/XBOX 360 DLC
1080: Console/PS3
1090: Console/Other
1110: Console/3DS
1120: Console/PS Vita
1130: Console/WiiU
1140: Console/Xbox One
1180: Console/PS4
2000: Movies
2010: Movies/Foreign
2020: Movies/Other
2030: Movies/SD
2040: Movies/HD
2050: Movies/3D
2060: Movies/BluRay
2070: Movies/DVD
2080: Movies/WEBDL
3000: Audio
3010: Audio/MP3
3020: Audio/Video
3030: Audio/Audiobook
3040: Audio/Lossless
3050: Audio/Other
3060: Audio/Foreign
4000: PC
4010: PC/0day
4020: PC/ISO
4030: PC/Mac
4040: PC/Phone-Other
4050: PC/Games
4060: PC/Phone-IOS
4070: PC/Phone-Android
5000: TV
5010: TV/WEB-DL
5020: TV/FOREIGN
5030: TV/SD
5040: TV/HD
5050: TV/OTHER
5060: TV/Sport
5070: TV/Anime
5080: TV/Documentary
6000: XXX
6010: XXX/DVD
6020: XXX/WMV
6030: XXX/XviD
6040: XXX/x264
6050: XXX/Other
6060: XXX/Imageset
6070: XXX/Packs
7000: Other
7010: Other/Misc
7020: Other/Hashed
8000: Books
8010: Books/Ebook
8020: Books/Comics
8030: Books/Magazines
8040: Books/Technical
8050: Books/Other
8060: Books/Foreign
"; #>
using System.Collections.Generic;
using Jackett.Models;
public static class TorznabCats
{
<#
var items = data.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
var cats = new List<CatStub>();
foreach (var item in items)
{
var parts = item.Split(new string[] { ": " }, StringSplitOptions.RemoveEmptyEntries);
var num = int.Parse(parts[0]);
var memberName = parts[1].Replace("/", "").Replace(" ", "").Replace("-", "");
cats.Add(new CatStub { Number = num, MemberName = memberName, Name = parts[1] });
}
foreach(var cat in cats)
{ #>
public static readonly TorznabCategory <#= cat.MemberName #> = new TorznabCategory(<#= cat.Number #>, "<#= cat.Name #>");
<#
} #>
static TorznabCats()
{
<#
foreach (var cat in cats)
{
if (cat.Name.Contains("/"))
{
var parentName = cat.Name.Split('/')[0];
var parentCat = cats.FirstOrDefault<CatStub>(c => c.Name == parentName);
parentCat.Children.Add(cat);
}
}
foreach (var parentCat in cats.Where<CatStub>(c => c.Children.Count > 0))
{ #>
<#= parentCat.MemberName #>.SubCategories.AddRange(new List<TorznabCategory> { <#= string.Join(", ", parentCat.Children.Select(t => t.MemberName)) #> });
<# }
#>
}
}
<#+
class CatStub
{
public int Number;
public string Name;
public string MemberName;
public List<CatStub> Children = new List<CatStub>();
}
#>