From a4c670df78d69295edd6b01d8b3585909225dbdd Mon Sep 17 00:00:00 2001 From: betamax2021 Date: Sun, 4 Sep 2016 04:25:33 -0400 Subject: [PATCH] Added Indexer BakaBT (#482) --- src/Jackett/Content/logos/bakabt.png | Bin 0 -> 7709 bytes src/Jackett/Indexers/BakaBT.cs | 198 +++++++++++++++++++++++++++ src/Jackett/Jackett.csproj | 194 +++++++++++--------------- 3 files changed, 280 insertions(+), 112 deletions(-) create mode 100644 src/Jackett/Content/logos/bakabt.png create mode 100644 src/Jackett/Indexers/BakaBT.cs diff --git a/src/Jackett/Content/logos/bakabt.png b/src/Jackett/Content/logos/bakabt.png new file mode 100644 index 0000000000000000000000000000000000000000..b0761f6250a519d12f59b711a6e54a90a1aa193d GIT binary patch literal 7709 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 literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/BakaBT.cs b/src/Jackett/Indexers/BakaBT.cs new file mode 100644 index 000000000..cdd7106ca --- /dev/null +++ b/src/Jackett/Indexers/BakaBT.cs @@ -0,0 +1,198 @@ +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.Globalization; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using Jackett.Models.IndexerConfig; + +namespace Jackett.Indexers +{ + public class BakaBT : BaseIndexer, IIndexer + { + public string SearchUrl { get { return SiteLink + "browse.php?only=0&incomplete=1&lossless=1&hd=1&multiaudio=1&bonus=1&reorder=1&q="; } } + public string LoginUrl { get { return SiteLink + "login.php"; } } + public string id = "bakabt"; + + new ConfigurationDataBasicLogin configData + { + get { return (ConfigurationDataBasicLogin)base.configData; } + set { base.configData = value; } + } + + public BakaBT(IIndexerManagerService i, IWebClient wc, Logger l, IProtectionService ps) + : base(name: "BakaBT", + description: "Anime Comunity", + link: "https://bakabt.me/", + caps: new TorznabCapabilities(TorznabCatType.TVAnime), + manager: i, + client: wc, + logger: l, + p: ps, + configData: new ConfigurationDataBasicLogin()) + { + } + + + public async Task ApplyConfiguration(JToken configJson) + { + configData.LoadValuesFromJson(configJson); + + var loginForm = await webclient.GetString(new Utils.Clients.WebRequest() + { + Url = LoginUrl, + Type = RequestType.GET + }); + + var pairs = new Dictionary { + { "username", configData.Username.Value }, + { "password", configData.Password.Value }, + { "returnto", "/index.php" } + }; + + var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginForm.Cookies, true, null, SiteLink); + var responseContent = response.Content; + await ConfigureIfOK(response.Cookies, responseContent.Contains("Logout"), () => + { + CQ dom = responseContent; + var messageEl = dom[".error"].First(); + var errorMessage = messageEl.Text().Trim(); + throw new ExceptionWithConfigData(errorMessage, configData); + }); + + return IndexerConfigurationStatus.RequiresTesting; + } + + public async Task> PerformQuery(TorznabQuery query) + { + + // This tracker only deals with full seasons so chop off the episode/season number if we have it D: + if (!string.IsNullOrWhiteSpace(query.SearchTerm)) + { + var splitindex = query.SearchTerm.LastIndexOf(' '); + if (splitindex > -1) + query.SearchTerm = query.SearchTerm.Substring(0, splitindex); + } + + var releases = new List(); + var searchString = query.SanitizedSearchTerm; + var episodeSearchUrl = SearchUrl + HttpUtility.UrlEncode(searchString); + var response = await RequestStringWithCookiesAndRetry(episodeSearchUrl); + + try + { + CQ dom = response.Content; + var rows = dom[".torrents tr.torrent"]; + + foreach (var row in rows) + { + + var qRow = row.Cq(); + var qTitleLink = qRow.Find("a.title").First(); + var title = qTitleLink.Text().Trim(); + + // Insert before the release info + var taidx = title.IndexOf('('); + var tbidx = title.IndexOf('['); + + if (taidx == -1) + taidx = title.Length; + + if (tbidx == -1) + tbidx = title.Length; + var titleSplit = Math.Min(taidx, tbidx); + var titleSeries = title.Substring(0, titleSplit); + var releaseInfo = title.Substring(titleSplit); + + // For each over each pipe deliminated name + foreach (var name in titleSeries.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)) + { + var release = new ReleaseInfo(); + + release.Title = (name + releaseInfo).Trim(); + // Ensure the season is defined as this tracker only deals with full seasons + if (release.Title.IndexOf("Season") == -1) + { + // Insert before the release info + var aidx = release.Title.IndexOf('('); + var bidx = release.Title.IndexOf('['); + + if (aidx == -1) + aidx = release.Title.Length; + + if (bidx == -1) + bidx = release.Title.Length; + + var insertPoint = Math.Min(aidx, bidx); + release.Title = release.Title.Substring(0, insertPoint) + "Season 1 " + release.Title.Substring(insertPoint); + } + + release.Description = release.Title; + release.Guid = new Uri(SiteLink + qTitleLink.Attr("href")); + release.Comments = release.Guid; + + release.Link = new Uri(SiteLink + qRow.Find(".peers a").First().Attr("href")); + + release.Seeders = int.Parse(qRow.Find(".peers a").Get(0).InnerText); + release.Peers = release.Seeders + int.Parse(qRow.Find(".peers a").Get(1).InnerText); + + release.MinimumRatio = 1; + + var size = qRow.Find(".size").First().Text(); + release.Size = ReleaseInfo.GetBytes(size); + + //22 Jul 15 + var dateStr = qRow.Find(".added").First().Text().Replace("'", string.Empty); + if (dateStr.Split(' ')[0].Length == 1) + dateStr = "0" + dateStr; + + if (string.Equals(dateStr, "yesterday", StringComparison.InvariantCultureIgnoreCase)) + { + release.PublishDate = DateTime.Now.AddDays(-1); + } + else if (string.Equals(dateStr, "today", StringComparison.InvariantCultureIgnoreCase)) + { + release.PublishDate = DateTime.Now; + } + else + { + release.PublishDate = DateTime.ParseExact(dateStr, "dd MMM yy", CultureInfo.InvariantCulture); + } + + releases.Add(release); + } + } + } + catch (Exception ex) + { + OnParseError(response.Content, ex); + } + + return releases; + } + + public override async Task Download(Uri link) + { + var downloadPage = await RequestStringWithCookies(link.ToString()); + CQ dom = downloadPage.Content; + var downloadLink = dom.Find(".download_link").First().Attr("href"); + + if (string.IsNullOrWhiteSpace(downloadLink)) + { + throw new Exception("Unable to find download link."); + } + + var response = await RequestBytesWithCookies(SiteLink + downloadLink); + return response.Content; + } + } +} \ No newline at end of file diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index f09eb64f7..8711c6d4b 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -49,134 +49,100 @@ prompt 4 - - - - - - - - - - ..\packages\AngleSharp.0.9.7\lib\net45\AngleSharp.dll - True - - - ..\packages\Autofac.3.5.2\lib\net40\Autofac.dll - True - - - ..\packages\Autofac.Owin.3.1.0\lib\net45\Autofac.Integration.Owin.dll - True - - - ..\packages\Autofac.WebApi2.3.4.0\lib\net45\Autofac.Integration.WebApi.dll - True - - - ..\packages\Autofac.WebApi2.Owin.3.3.0\lib\net45\Autofac.Integration.WebApi.Owin.dll - True - - - ..\packages\AutoMapper.4.1.1\lib\net45\AutoMapper.dll - True - - - ..\packages\CsQuery.1.3.4\lib\net40\CsQuery.dll - True - - - ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll - True - - - ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll - True - - - ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll - True - - - ..\packages\Microsoft.Owin.FileSystems.3.0.1\lib\net45\Microsoft.Owin.FileSystems.dll - True - - - ..\packages\Microsoft.Owin.Host.HttpListener.3.0.1\lib\net45\Microsoft.Owin.Host.HttpListener.dll - True - - - ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll - True - - - ..\packages\Microsoft.Owin.Hosting.3.0.1\lib\net45\Microsoft.Owin.Hosting.dll - True - - - ..\packages\Microsoft.Owin.StaticFiles.3.0.1\lib\net45\Microsoft.Owin.StaticFiles.dll - True - - - ..\packages\MonoTorrent.0.9.0\lib\net20\MonoTorrent.dll - True - - - ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - True - - - ..\packages\NLog.4.3.7\lib\net45\NLog.dll - True - - - ..\packages\NLog.Windows.Forms.4.2.3\lib\net35\NLog.Windows.Forms.dll - True - - - ..\packages\Owin.1.0\lib\net40\Owin.dll - True - - - ..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll - True - - - ..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.Tracing.5.2.3\lib\net45\System.Web.Http.Tracing.dll - True - + + ..\packages\AngleSharp.0.9.7\lib\net45\AngleSharp.dll + + + ..\packages\Autofac.3.5.2\lib\net40\Autofac.dll + + + ..\packages\Autofac.Owin.3.1.0\lib\net45\Autofac.Integration.Owin.dll + + + ..\packages\Autofac.WebApi2.3.4.0\lib\net45\Autofac.Integration.WebApi.dll + + + ..\packages\Autofac.WebApi2.Owin.3.3.0\lib\net45\Autofac.Integration.WebApi.Owin.dll + + + ..\packages\AutoMapper.4.1.1\lib\net45\AutoMapper.dll + + + ..\packages\CsQuery.1.3.4\lib\net40\CsQuery.dll + + + ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll + + + ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll + + + ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll + + + ..\packages\Microsoft.Owin.FileSystems.3.0.1\lib\net45\Microsoft.Owin.FileSystems.dll + + + ..\packages\Microsoft.Owin.Host.HttpListener.3.0.1\lib\net45\Microsoft.Owin.Host.HttpListener.dll + + + ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll + + + ..\packages\Microsoft.Owin.Hosting.3.0.1\lib\net45\Microsoft.Owin.Hosting.dll + + + ..\packages\Microsoft.Owin.StaticFiles.3.0.1\lib\net45\Microsoft.Owin.StaticFiles.dll + + + ..\packages\MonoTorrent.0.9.0\lib\net20\MonoTorrent.dll + + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + + + ..\packages\NLog.4.3.7\lib\net45\NLog.dll + + + ..\packages\NLog.Windows.Forms.4.2.3\lib\net35\NLog.Windows.Forms.dll + + + ..\packages\Owin.1.0\lib\net40\Owin.dll + + + ..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll + + + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll + + + ..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll + + + ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll + + + ..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll + + + ..\packages\Microsoft.AspNet.WebApi.Tracing.5.2.3\lib\net45\System.Web.Http.Tracing.dll + @@ -338,6 +304,7 @@ + @@ -629,6 +596,9 @@ PreserveNewest + + PreserveNewest +