From c8dff6da7286ad81125fe4b305902e4ce71e2bc9 Mon Sep 17 00:00:00 2001 From: KZ Date: Tue, 11 Aug 2015 23:10:15 +0100 Subject: [PATCH] Implement filelist and disable browser caching --- README.md | 1 + src/Jackett/CacheControlAttribute.cs | 23 +++ src/Jackett/Content/logos/filelist.png | Bin 0 -> 20123 bytes src/Jackett/Controllers/AdminController.cs | 1 + .../Controllers/BlackholeController.cs | 1 + src/Jackett/Controllers/DownloadController.cs | 1 + src/Jackett/Controllers/PotatoController.cs | 1 + src/Jackett/Controllers/TorznabController.cs | 1 + src/Jackett/Indexers/AlphaRatio.cs | 6 +- src/Jackett/Indexers/FileList.cs | 146 ++++++++++++++++++ src/Jackett/Jackett.csproj | 6 + .../ConfigurationDataFileList.cs | 22 +++ src/Jackett/Models/TorznabCatType.cs | 88 ++++++++--- 13 files changed, 271 insertions(+), 26 deletions(-) create mode 100644 src/Jackett/CacheControlAttribute.cs create mode 100644 src/Jackett/Content/logos/filelist.png create mode 100644 src/Jackett/Indexers/FileList.cs create mode 100644 src/Jackett/Models/IndexerConfig/ConfigurationDataFileList.cs diff --git a/README.md b/README.md index 284f32621..ef97333bb 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Download in the [Releases page](https://github.com/zone117x/Jackett/releases) * [BIT-HDTV](https://www.bit-hdtv.com) * [BitMeTV](http://www.bitmetv.org/) * [Demonoid](http://www.demonoid.pw/) + * [FileList](http://filelist.ro/) * [FrenchTorrentDb](http://www.frenchtorrentdb.com/) * [Freshon](https://freshon.tv/) * [HD-Space](https://hd-space.org/) diff --git a/src/Jackett/CacheControlAttribute.cs b/src/Jackett/CacheControlAttribute.cs new file mode 100644 index 000000000..915d2f740 --- /dev/null +++ b/src/Jackett/CacheControlAttribute.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Http.Filters; + +namespace Jackett +{ + public class JackettAPINoCacheAttribute : System.Web.Http.Filters.ActionFilterAttribute + { + public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) + { + actionExecutedContext.Response.Headers.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue() + { + NoStore = true, + Private = true + }; + + base.OnActionExecuted(actionExecutedContext); + } + } +} diff --git a/src/Jackett/Content/logos/filelist.png b/src/Jackett/Content/logos/filelist.png new file mode 100644 index 0000000000000000000000000000000000000000..c271d9a35349c8265c5c7baaf88392b01d2a741f GIT binary patch literal 20123 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%0As#^lLLs013WeY^ zP54v)FhQsa0PZ(!+6?Zo?{V1Tl@S;eC=`frPsGgtcfgn~F}MMQhJ^`*W-ZN=jDnW) zV|SVLJ!sY=->l;nd8eJ~xD(pMVr^=vHmg!IxLTS~!RdF>JFMIKO`CASBjD6&Q)kVY z<>KPhPUzFxEWWj}Z)@`btt|$&vKrXRI;oXSQY%|lZ26*M{2H40Ar!E^1!B%W(Gq(nOYni?0$F;{V^R1K|EWnNUJ6=S>02b>gj z*=^)8zpb*9<+cNwg2&Ru*JaD^sP@*H=G+qp^tU*9U%T(VYUfLvvRCr5@7#dlT%npP zRPz2SDuIaxMI_Ohpoq016cepb?q?E^Zh554qWqOK_p)UAW%;UW(nTMQ9k*~z@HN

<@5gX`rrFtH~7@ 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 O0000 { + { "username", configData.Username.Value }, + { "password", configData.Password.Value } + }; + + var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); + await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () => + { + CQ dom = result.Content; + var errorMessage = dom[".main"].Text().Trim(); + throw new ExceptionWithConfigData(errorMessage, configData); + }); + } + + public async Task> PerformQuery(TorznabQuery query) + { + var releases = new List(); + var searchString = query.SanitizedSearchTerm + " " + query.GetEpisodeSearchString(); + var searchUrl = BrowseUrl; + + if (!string.IsNullOrWhiteSpace(searchString)) + searchUrl += string.Format("?search={0}&cat=0&searchin=0&sort=0", HttpUtility.UrlEncode(searchString)); + + var response = await RequestStringWithCookiesAndRetry(searchUrl, null, BrowseUrl); + var results = response.Content; + try + { + CQ dom = results; + var rows = dom[".torrentrow"]; + foreach (var row in rows) + { + var release = new ReleaseInfo(); + var qRow = row.Cq(); + var qTitleLink = qRow.Find(".torrenttable:eq(1) a").First(); + release.Title = qRow.Find(".torrenttable:eq(1) a b").Text().Trim(); + release.Description = release.Title; + release.Guid = new Uri(SiteLink + qTitleLink.Attr("href")); + release.Comments = release.Guid; + + //22:05:3716/02/2013 + var dateStr = qRow.Find(".torrenttable:eq(5)").Text().Trim(); + release.PublishDate = DateTime.ParseExact(dateStr, "H:mm:ssdd/MM/yyyy", CultureInfo.InvariantCulture); + + var qLink = qRow.Find(".torrenttable:eq(2) a").First(); + release.Link = new Uri(SiteLink + qLink.Attr("href")); + + var sizeStr = qRow.Find(".torrenttable:eq(6)").Text().Trim(); + release.Size = ReleaseInfo.GetBytes(sizeStr); + + release.Seeders = ParseUtil.CoerceInt(qRow.Find(".torrenttable:eq(8)").Text().Trim()); + release.Peers = ParseUtil.CoerceInt(qRow.Find(".torrenttable:eq(9)").Text().Trim()) + release.Seeders; + + var cat = qRow.Find(".torrenttable:eq(0) a").First().Attr("href").Substring(15); + release.Category = MapTrackerCatToNewznab(cat); + + // Skip other + if (release.Category != 0) + { + // Skip Romanian releases + if ((cat == "3" || cat == "19") && !configData.IncludeRomanianReleases.Value) + continue; + + releases.Add(release); + } + } + } + catch (Exception ex) + { + OnParseError(results, ex); + } + + return releases; + } + } +} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index aad1e0302..2671c5de8 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -172,6 +172,7 @@ + @@ -191,6 +192,7 @@ + @@ -214,6 +216,7 @@ + @@ -406,6 +409,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/src/Jackett/Models/IndexerConfig/ConfigurationDataFileList.cs b/src/Jackett/Models/IndexerConfig/ConfigurationDataFileList.cs new file mode 100644 index 000000000..db58b34d0 --- /dev/null +++ b/src/Jackett/Models/IndexerConfig/ConfigurationDataFileList.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Jackett.Models.IndexerConfig +{ + class ConfigurationDataFileList : ConfigurationDataBasicLogin + { + public BoolItem IncludeRomanianReleases { get; private set; } + public DisplayItem CatWarning { get; private set; } + + public ConfigurationDataFileList() + : base() + { + IncludeRomanianReleases = new BoolItem() { Name = "IncludeRomanianReleases", Value = false }; + CatWarning = new DisplayItem("When mapping TV ensure you add category 5000 in addition to 5030,5040.") { Name = "CatWarning" }; + } + } +} diff --git a/src/Jackett/Models/TorznabCatType.cs b/src/Jackett/Models/TorznabCatType.cs index f54d2c185..e498bd10f 100644 --- a/src/Jackett/Models/TorznabCatType.cs +++ b/src/Jackett/Models/TorznabCatType.cs @@ -12,27 +12,53 @@ namespace Jackett.Models static TorznabCatType() { - cats.Add(5000, "TV"); - cats.Add(5030, "TV/SD"); - cats.Add(5040, "TV/HD"); - cats.Add(5070, "TV/Anime"); - cats.Add(5080, "TV/Documentary"); - cats.Add(8000, "Books"); - cats.Add(8020, "Books/Comics"); - cats.Add(4000, "PC"); - cats.Add(4050, "PC/Games"); - cats.Add(3030, "Audio/Audiobook"); + cats.Add(1000, "Consoles"); + cats.Add(1010, "Consoles/DS"); + cats.Add(1020, "Consoles/PSP"); + cats.Add(1030, "Consoles/Wii"); + cats.Add(1040, "Consoles/Xbox"); + cats.Add(1050, "Consoles/360"); + cats.Add(1080, "Consoles/PS3"); + cats.Add(2000, "Movies"); + cats.Add(2010, "Movies/Foreign"); + cats.Add(2020, "Movies/Other"); cats.Add(2040, "Movies/HD"); cats.Add(2030, "Movies/SD"); - cats.Add(2010, "Movies/Foreign"); + cats.Add(2050, "Movies/3D"); + cats.Add(2060, "Movies/BluRay"); + cats.Add(3000, "Audio"); + cats.Add(3010, "Audio/Lossy"); + cats.Add(3020, "Audio/Video"); + cats.Add(3030, "Audio/Audiobook"); cats.Add(3040, "Audio/Lossless"); - cats.Add(3010, "Audio/MP3"); + + cats.Add(4000, "PC"); + cats.Add(4010, "PC/Apps"); + cats.Add(4020, "PC/ISO"); + cats.Add(4030, "PC/Mac"); + cats.Add(4040, "PC/Mobile"); + cats.Add(4050, "PC/Games"); + cats.Add(4060, "PC/Mobile/IOS"); + cats.Add(4070, "PC/Mobile/Android"); + + cats.Add(5000, "TV"); + cats.Add(5020, "TV/Foreign"); + cats.Add(5030, "TV/SD"); + cats.Add(5040, "TV/HD"); + cats.Add(5060, "TV/Sport"); + cats.Add(5070, "TV/Anime"); + cats.Add(5080, "TV/Documentary"); + cats.Add(6000, "XXX"); - cats.Add(6040, "XXX/x264"); cats.Add(6010, "XXX/DVD"); + cats.Add(6040, "XXX/x264"); cats.Add(6060, "XXX/Imageset"); + + cats.Add(8000, "Books"); + cats.Add(8010, "Books/Ebook"); + cats.Add(8020, "Books/Comics"); } public static bool QueryContainsParentCategory(int[] queryCats, int releaseCat) @@ -116,7 +142,7 @@ namespace Jackett.Models public static TorznabCategory EBooks { - get { return GetCat(7020); } + get { return GetCat(8020); } } public static TorznabCategory Comic @@ -126,7 +152,12 @@ namespace Jackett.Models public static TorznabCategory Apps { - get { return GetCat(4000); } + get { return GetCat(4010); } + } + + public static TorznabCategory AppsMobile + { + get { return GetCat(4040); } } public static TorznabCategory Movies @@ -156,12 +187,12 @@ namespace Jackett.Models public static TorznabCategory MoviesBlueRay { - get { return GetCat(2050); } + get { return GetCat(2060); } } public static TorznabCategory Movies3D { - get { return GetCat(2060); } + get { return GetCat(2050); } } public static TorznabCategory Audio @@ -184,6 +215,12 @@ namespace Jackett.Models get { return GetCat(3010); } } + + public static TorznabCategory AudioMusicVideos + { + get { return GetCat(3020); } + } + public static TorznabCategory XXX { get { return GetCat(6000); } @@ -244,32 +281,37 @@ namespace Jackett.Models get { return GetCat(4070); } } - public static TorznabCategory GameDNS + public static TorznabCategory Consoles + { + get { return GetCat(1000); } + } + + public static TorznabCategory ConsoleDS { get { return GetCat(1010); } } - public static TorznabCategory GamePSP + public static TorznabCategory ConsolePSP { get { return GetCat(1020); } } - public static TorznabCategory GameXbox + public static TorznabCategory ConsoleXbox { get { return GetCat(1040); } } - public static TorznabCategory GameXbox360 + public static TorznabCategory ConsoleXbox360 { get { return GetCat(1050); } } - public static TorznabCategory GameWii + public static TorznabCategory ConsoleWii { get { return GetCat(1030); } } - public static TorznabCategory GamePS3 + public static TorznabCategory ConsolePS3 { get { return GetCat(1080); } }