From 28d3f22fef611f2afff559bb93e7a9955f3cd038 Mon Sep 17 00:00:00 2001 From: kaso17 Date: Sun, 18 Sep 2016 16:22:59 +0200 Subject: [PATCH] Add FunFile Tracker --- README.md | 1 + src/Jackett/Content/logos/funfile.png | Bin 0 -> 15785 bytes src/Jackett/Indexers/FunFile.cs | 142 ++++++++++++++++++++++++++ src/Jackett/Jackett.csproj | 4 + 4 files changed, 147 insertions(+) create mode 100644 src/Jackett/Content/logos/funfile.png create mode 100644 src/Jackett/Indexers/FunFile.cs diff --git a/README.md b/README.md index 88a8f370c..2b61847c6 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/ * EuTorrents * FileList * Freshon + * FunFile * Fuzer * Ghost City * HD-Space diff --git a/src/Jackett/Content/logos/funfile.png b/src/Jackett/Content/logos/funfile.png new file mode 100644 index 0000000000000000000000000000000000000000..a6a595bcd8e2bc50776b6b2fb986fa466cfdc0c2 GIT binary patch literal 15785 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 literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/FunFile.cs b/src/Jackett/Indexers/FunFile.cs new file mode 100644 index 000000000..f15faec5f --- /dev/null +++ b/src/Jackett/Indexers/FunFile.cs @@ -0,0 +1,142 @@ +using CsQuery; +using Jackett.Models; +using Jackett.Services; +using Jackett.Utils; +using Jackett.Utils.Clients; +using Newtonsoft.Json.Linq; +using NLog; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Jackett.Models.IndexerConfig; +using System.Collections.Specialized; + +namespace Jackett.Indexers +{ + public class FunFile : BaseIndexer, IIndexer + { + private string SearchUrl { get { return SiteLink + "browse.php"; } } + private string LoginUrl { get { return SiteLink + "takelogin.php"; } } + + new ConfigurationDataBasicLoginWithRSSAndDisplay configData + { + get { return (ConfigurationDataBasicLoginWithRSSAndDisplay)base.configData; } + set { base.configData = value; } + } + + public FunFile(IIndexerManagerService i, Logger l, IWebClient w, IProtectionService ps) + : base(name: "FunFile", + description: "A general tracker", + link: "https://www.funfile.org/", + caps: new TorznabCapabilities(), + manager: i, + client: w, + logger: l, + p: ps, + configData: new ConfigurationDataBasicLoginWithRSSAndDisplay()) + { + AddCategoryMapping(44, TorznabCatType.TVAnime); // Anime + AddCategoryMapping(22, TorznabCatType.PC); // Applications + AddCategoryMapping(43, TorznabCatType.AudioAudiobook); // Audio Books + AddCategoryMapping(27, TorznabCatType.Books); // Ebook + AddCategoryMapping(4, TorznabCatType.PCGames); // Games + AddCategoryMapping(40, TorznabCatType.OtherMisc); // Miscellaneous + AddCategoryMapping(19, TorznabCatType.Movies); // Movies + AddCategoryMapping(6, TorznabCatType.Audio); // Music + AddCategoryMapping(31, TorznabCatType.PCPhoneOther); // Portable + AddCategoryMapping(7, TorznabCatType.TV); // TV + } + + public async Task ApplyConfiguration(JToken configJson) + { + configData.LoadValuesFromJson(configJson); + var pairs = new Dictionary { + { "username", configData.Username.Value }, + { "password", configData.Password.Value }, + { "login", "Login" }, + }; + + var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); + await ConfigureIfOK(result.Cookies, result.Content.Contains("logout.php"), () => + { + CQ dom = result.Content; + var errorMessage = dom["td.mf_content"].Html(); + throw new ExceptionWithConfigData(errorMessage, configData); + }); + return IndexerConfigurationStatus.RequiresTesting; + } + + public async Task> PerformQuery(TorznabQuery query) + { + List releases = new List(); + + var searchString = query.GetQueryString(); + var searchUrl = SearchUrl; + var queryCollection = new NameValueCollection(); + queryCollection.Add("incldead", "1"); + queryCollection.Add("showspam", "1"); + + if (!string.IsNullOrWhiteSpace(searchString)) + { + queryCollection.Add("search", searchString); + } + + var cats = MapTorznabCapsToTrackers(query); + string cat = "0"; + if (cats.Count == 1) + { + cat = cats[0]; + } + queryCollection.Add("cat", cat); + + searchUrl += "?" + queryCollection.GetQueryString(); + + var results = await RequestStringWithCookiesAndRetry(searchUrl); + try + { + CQ dom = results.Content; + var rows = dom["table[cellpadding=2] > tbody > tr:has(td.row3)"]; + foreach (var row in rows) + { + var release = new ReleaseInfo(); + release.MinimumRatio = 1; + release.MinimumSeedTime = 48 * 60 * 60; + + var qRow = row.Cq(); + var qCatLink = qRow.Find("a[href^=browse.php?cat=]").First(); + var qDetailsLink = qRow.Find("a[href^=details.php?id=]").First(); + var qSeeders = qRow.Find("td:eq(9)"); + var qLeechers = qRow.Find("td:eq(10)"); + var qDownloadLink = qRow.Find("a[href^=download.php]").First(); + var qTimeAgo = qRow.Find("td:eq(5)"); + var qSize = qRow.Find("td:eq(7)"); + + var catStr = qCatLink.Attr("href").Split('=')[1].Split('&')[0]; + release.Category = MapTrackerCatToNewznab(catStr); + + release.Link = new Uri(SiteLink + qDownloadLink.Attr("href")); + release.Title = qDetailsLink.Attr("title").Trim(); + release.Comments = new Uri(SiteLink + qDetailsLink.Attr("href")); + release.Guid = release.Link; + + var sizeStr = qSize.Text(); + release.Size = ReleaseInfo.GetBytes(sizeStr); + + release.Seeders = ParseUtil.CoerceInt(qSeeders.Text()); + release.Peers = ParseUtil.CoerceInt(qLeechers.Text()) + release.Seeders; + + var dateStr = qTimeAgo.Text(); + release.PublishDate = DateTimeUtil.FromTimeAgo(dateStr); + + releases.Add(release); + } + } + catch (Exception ex) + { + OnParseError(results.Content, ex); + } + + return releases; + } + } +} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 7a341ff80..97c76434b 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -157,6 +157,7 @@ + @@ -423,6 +424,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest