From bc1dd0e9e84308150001392e59def943af141453 Mon Sep 17 00:00:00 2001 From: twistedroutes <garreth.jeremiah@gmail.com> Date: Mon, 21 Dec 2015 22:12:43 -0500 Subject: [PATCH] Added Bitsoup tracker. For multi-category searches will perform multiple searches as the tracker search didn't support multiple categories. Recommend to the user to search for "all" instead. Consider changing this approach later. --- src/Jackett/Content/logos/bitsoup.png | Bin 0 -> 9481 bytes src/Jackett/Indexers/BitSoup.cs | 245 ++++++++++++++++++++++++++ src/Jackett/Jackett.csproj | 2 + 3 files changed, 247 insertions(+) create mode 100644 src/Jackett/Content/logos/bitsoup.png create mode 100644 src/Jackett/Indexers/BitSoup.cs diff --git a/src/Jackett/Content/logos/bitsoup.png b/src/Jackett/Content/logos/bitsoup.png new file mode 100644 index 0000000000000000000000000000000000000000..65c0459e16a2347b5af52d88523a7536e7e1b2d1 GIT binary patch literal 9481 zcmeAS@N?(olHy`uVBq!ia0y~yU|7Mxz+l6{#K6E%doOJp0|NtNage(c!@6@aFBupZ zSkfJR9T^xl_H+M9WMyDr;4JWnEM{QfI}E~%$MaXDFfgdh^K@|xsfc?T%^ngGzI~r( zU6L!SYggBoa}1ZO<(C;68}KkYPmf!|qp-J}Q7~X*gJ^&tqbT>cI3aJ7vVe_8?k(DQ z)a?D49>W%uJ@RLxv(M~)9ew}S_cz7oZ~m_PJ*U`xnt+V+rIH2zuPi!te=9%N^twOd zKir>RN^#(j37zclQ~0|%TY^Ko{pWb*bx-!!Y};?hP=9m3eSKnsK*g>9!VG&E=Uj9V z-%!)oyPWUEhyPpxlTQ3GXI#p{{XzcrR9y}x=Dx)ncjTG%d9ci5Y)~<1c-?RNe?Nnh zVC;WY1xAL(NDih8K`Tw9w$zje#x`CuP>B>1={puYcjJOrFBcU5x6_KgyXaB>x_V^= zlh)7rj5B+cHa9-$D==Yt!j_`E`FEw|0)?Ep1`9oR>dZSK=-S5ou<^$J@&s-71qHGb zQ$##1r)+w<_<KCNf(^g(!&)Q$M^Zwo4HvLV{EhxM=_*?r7mr@R>1(Y4hQ-U4DtqmG z;hDqJ${mxX-*m!g<A&4G`(#^HtrR@<EUZq%zYMiI$2w{837KdM$45_D4_|8J&2oJ! zYZ1PGTL1RH(f|A_1+Gt!ICSaGKiLBpemLk>TWBh%T~*h(Bk1co!9s#7{;g~9&je`$ z!|mL&@4l0tnUL6Da?tpo_Kz2?lPkY@WF6R2u+e{lu$!ulsLk((AM526WSmzd3jDno zcK=&`$m8VS?Bdh(T!MD^S+Gg@NAB95e(1<a4<Uj6_NCg^2^mZ*6La$tgRj=wnJhkZ zgzH&TGGk_8iK1A=%RCRG^EXeXzFjD%oa}9JP&9|(f#8F;=11Qb|1JAH{o8a#j^icQ zH6HxG@+scAWznaHEYnVge4hFHU3Fz;q_uEBioza&p3a5bjUR%2&%XY4@00hLV6Ogj zroDwe{2vtB^bEE(KEI;J?W47!ARv#;W5b=sSIo<Q$j%pB?#6Ivchx`d147IzAE=xY z;covD*)8pFvvtdsHsPBNArB52xESaN_a4->`B?R=>#W-`v2zvSCM!5Uh+Jm&dy-Vx za?P77THBjl<m%Jy%Rj8S&;Gxm|8niah7UO>r?WEM=04BVCVoy-;*<=>DYvEE9vupw zbrK?G<~y8~bS-h3wNh5d@0qo*g@+Kge;Sv|qi4<L(@NgV&B;pSRbQOp^ns&Ik7;Yr z&ZN_aa?_9ZnU@^7AgCgjaeTMd^PoPSdm_<IX-rpDEm9X3ee3^Nv#^0f=A}5xqDgx{ z%4o{ToOvJ-7RoS>_txIdnEZsr8A|LXbKR75_pXR2`_Q&=rRwCzZORvO-#jS$c0x0F zP46-3zKhpdl?zyec)imsAKmySvFyU#;?Vg@CRT~7c$wOgn;fT1D&9M_c%{}EDaWr< zPQ{$aOVE43RLslqrkmO2$*-D7g#v~peidb*XJbCReCP9sIk&;dOZ+<f;SU9hMO%;i zzOeY3ak!s9_NL5X&uMIK%S6m;9JqA%xrj~HpW3oB$~vN7a&dlI=J}`GYjfZ3*54af z`z_pEeaBYrz@2Z6k0v;nUhwfRt}e-rR-bhwNcR_iaqY_nkDC4Z+%EI<=RM{PTexuM z<z2GXwo4qt3Zz!BDTOa9+37V=q;X!Sv#V?C!iQ7x{}~5~oy@nNy#Hz4x3<?e-`1{_ z4Zm!5=gf^N{r!pMUCNgde{jgAtN%FH?LRHg((2-gD~!(WO;7ojJpCzDX~c5%?ls1H zg+C^lC|uz?%M{9LCVjz9VTrz=faintoC>QKnEkq6m-912`0k&BtB-F|;h1⪙G7p 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 literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/BitSoup.cs b/src/Jackett/Indexers/BitSoup.cs new file mode 100644 index 00000000..a0229f56 --- /dev/null +++ b/src/Jackett/Indexers/BitSoup.cs @@ -0,0 +1,245 @@ +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.Collections.Specialized; +using System.Globalization; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using Jackett.Models.IndexerConfig; + +namespace Jackett.Indexers +{ + public class BitSoup : BaseIndexer, IIndexer + { + private string BrowseUrl { get { return SiteLink + "browse.php"; } } + private string LoginUrl { get { return SiteLink + "takelogin.php"; } } + + new ConfigurationDataBasicLogin configData + { + get { return (ConfigurationDataBasicLogin)base.configData; } + set { base.configData = value; } + } + + public BitSoup(IIndexerManagerService i, IWebClient wc, Logger l, IProtectionService ps) + : base(name: "BitSoup", + description: "SoupieBits", + link: "https://www.bitsoup.me/", + caps: TorznabUtil.CreateDefaultTorznabTVCaps(), + manager: i, + client: wc, + logger: l, + p: ps, + configData: new ConfigurationDataBasicLogin()) + { + + //AddCategoryMapping("624", TorznabCatType.Console); + //AddCategoryMapping("307", TorznabCatType.ConsoleNDS); + //AddCategoryMapping("308", TorznabCatType.ConsolePSP); + AddCategoryMapping("35", TorznabCatType.ConsoleWii); + //AddCategoryMapping("309", TorznabCatType.ConsoleXbox); + AddCategoryMapping("12", TorznabCatType.ConsoleXbox360); + //AddCategoryMapping("305", TorznabCatType.ConsoleWiiwareVC); + //AddCategoryMapping("309", TorznabCatType.ConsoleXBOX360DLC); + AddCategoryMapping("38", TorznabCatType.ConsolePS3); + //AddCategoryMapping("239", TorznabCatType.ConsoleOther); + //AddCategoryMapping("245", TorznabCatType.ConsoleOther); + //AddCategoryMapping("246", TorznabCatType.ConsoleOther); + //AddCategoryMapping("626", TorznabCatType.ConsoleOther); + //AddCategoryMapping("628", TorznabCatType.ConsoleOther); + //AddCategoryMapping("630", TorznabCatType.ConsoleOther); + //AddCategoryMapping("307", TorznabCatType.Console3DS); + //AddCategoryMapping("308", TorznabCatType.ConsolePSVita); + //AddCategoryMapping("307", TorznabCatType.ConsoleWiiU); + //AddCategoryMapping("309", TorznabCatType.ConsoleXboxOne); + //AddCategoryMapping("308", TorznabCatType.ConsolePS4); + //AddCategoryMapping("631", TorznabCatType.Movies); + //AddCategoryMapping("631", TorznabCatType.MoviesForeign); + //AddCategoryMapping("455", TorznabCatType.MoviesOther); + //AddCategoryMapping("633", TorznabCatType.MoviesOther); + AddCategoryMapping("19", TorznabCatType.MoviesSD); + AddCategoryMapping("41", TorznabCatType.MoviesHD); + AddCategoryMapping("17", TorznabCatType.Movies3D); + AddCategoryMapping("80", TorznabCatType.MoviesBluRay); + AddCategoryMapping("20", TorznabCatType.MoviesDVD); + //AddCategoryMapping("631", TorznabCatType.MoviesWEBDL); + AddCategoryMapping("6", TorznabCatType.Audio); + //AddCategoryMapping("623", TorznabCatType.AudioMP3); + AddCategoryMapping("29", TorznabCatType.AudioVideo); + //AddCategoryMapping("402", TorznabCatType.AudioVideo); + AddCategoryMapping("5", TorznabCatType.AudioAudiobook); + //AddCategoryMapping("1", TorznabCatType.AudioLossless); + //AddCategoryMapping("403", TorznabCatType.AudioOther); + //AddCategoryMapping("642", TorznabCatType.AudioOther); + //AddCategoryMapping("1", TorznabCatType.AudioForeign); + //AddCategoryMapping("233", TorznabCatType.PC); + //AddCategoryMapping("236", TorznabCatType.PC); + //AddCategoryMapping("1", TorznabCatType.PC0day); + AddCategoryMapping("1", TorznabCatType.PCISO); + //AddCategoryMapping("235", TorznabCatType.PCMac); + //AddCategoryMapping("627", TorznabCatType.PCPhoneOther); + AddCategoryMapping("21", TorznabCatType.PCGames); + AddCategoryMapping("4", TorznabCatType.PCGames); + //AddCategoryMapping("625", TorznabCatType.PCPhoneIOS); + //AddCategoryMapping("625", TorznabCatType.PCPhoneAndroid); + AddCategoryMapping("45", TorznabCatType.TV); + //AddCategoryMapping("433", TorznabCatType.TV); + //AddCategoryMapping("639", TorznabCatType.TVWEBDL); + //AddCategoryMapping("433", TorznabCatType.TVWEBDL); + //AddCategoryMapping("639", TorznabCatType.TVFOREIGN); + //AddCategoryMapping("433", TorznabCatType.TVFOREIGN); + AddCategoryMapping("7", TorznabCatType.TVSD); + AddCategoryMapping("49", TorznabCatType.TVSD); + AddCategoryMapping("42", TorznabCatType.TVHD); + //AddCategoryMapping("433", TorznabCatType.TVHD); + //AddCategoryMapping("635", TorznabCatType.TVOTHER); + //AddCategoryMapping("636", TorznabCatType.TVSport); + AddCategoryMapping("23", TorznabCatType.TVAnime); + //AddCategoryMapping("634", TorznabCatType.TVDocumentary); + AddCategoryMapping("9", TorznabCatType.XXX); + //AddCategoryMapping("1", TorznabCatType.XXXDVD); + //AddCategoryMapping("1", TorznabCatType.XXXWMV); + //AddCategoryMapping("1", TorznabCatType.XXXXviD); + //AddCategoryMapping("1", TorznabCatType.XXXx264); + //AddCategoryMapping("1", TorznabCatType.XXXOther); + //AddCategoryMapping("1", TorznabCatType.XXXImageset); + //AddCategoryMapping("1", TorznabCatType.XXXPacks); + //AddCategoryMapping("340", TorznabCatType.Other); + //AddCategoryMapping("342", TorznabCatType.Other); + //AddCategoryMapping("344", TorznabCatType.Other); + //AddCategoryMapping("391", TorznabCatType.Other); + //AddCategoryMapping("392", TorznabCatType.Other); + //AddCategoryMapping("393", TorznabCatType.Other); + //AddCategoryMapping("394", TorznabCatType.Other); + //AddCategoryMapping("234", TorznabCatType.Other); + //AddCategoryMapping("638", TorznabCatType.Other); + //AddCategoryMapping("629", TorznabCatType.Other); + //AddCategoryMapping("1", TorznabCatType.OtherMisc); + //AddCategoryMapping("1", TorznabCatType.OtherHashed); + //AddCategoryMapping("408", TorznabCatType.Books); + AddCategoryMapping("24", TorznabCatType.BooksEbook); + //AddCategoryMapping("406", TorznabCatType.BooksComics); + //AddCategoryMapping("407", TorznabCatType.BooksComics); + //AddCategoryMapping("409", TorznabCatType.BooksComics); + //AddCategoryMapping("410", TorznabCatType.BooksMagazines); + //AddCategoryMapping("1", TorznabCatType.BooksTechnical); + //AddCategoryMapping("1", TorznabCatType.BooksOther); + //AddCategoryMapping("1", TorznabCatType.BooksForeign); + } + + public async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson) + { + configData.LoadValuesFromJson(configJson); + var pairs = new Dictionary<string, string> { + { "username", configData.Username.Value }, + { "password", configData.Password.Value }, + { "returnto", "/" }, + { "login", "Log in!" } + }; + + var loginPage = await RequestStringWithCookies(SiteLink, string.Empty); + + var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, SiteLink, true); + await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () => + { + CQ dom = result.Content; + var messageEl = dom["body > div"].First(); + var errorMessage = messageEl.Text().Trim(); + throw new ExceptionWithConfigData(errorMessage, configData); + }); + return IndexerConfigurationStatus.RequiresTesting; + } + + public async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query) + { + var releases = new List<ReleaseInfo>(); + var searchString = query.GetQueryString(); + var searchUrl = BrowseUrl; + var trackerCats = MapTorznabCapsToTrackers(query); + var queryCollection = new NameValueCollection(); + + + + if (!string.IsNullOrWhiteSpace(searchString)) + { + queryCollection.Add("search", searchString); + queryCollection.Add("incldead", "0"); + queryCollection.Add("cat", "0"); + // Tracker cannot search multi categories + // so we either search "all" + // or do multiple searches + if (trackerCats.Count == 0) + { + searchUrl += "?" + queryCollection.GetQueryString(); + await ProcessPage(releases, searchUrl); + } else + { + foreach (var cat in trackerCats) + { + queryCollection.Remove("cat"); + queryCollection.Add("cat", cat); + searchUrl += "?" + queryCollection.GetQueryString(); + await ProcessPage(releases, searchUrl); + } + } + + } + else + { + queryCollection.Add("search", ""); + queryCollection.Add("cat", "0"); + searchUrl += "?" + queryCollection.GetQueryString(); + await ProcessPage(releases, searchUrl); + } + + return releases; + } + + private async Task ProcessPage(List<ReleaseInfo> releases, string searchUrl) + { + var response = await RequestStringWithCookiesAndRetry(searchUrl, null, BrowseUrl); + var results = response.Content; + try + { + CQ dom = results; + + var rows = dom["table.koptekst tr"]; + foreach (var row in rows.Skip(1)) + { + var release = new ReleaseInfo(); + + release.Title = row.Cq().Find("td:eq(1) a").First().Text().Trim(); + + release.Link = new Uri(SiteLink + row.Cq().Find("td:eq(1) a").First().Attr("href")); + release.Description = release.Title; + var cat = row.Cq().Find("td:eq(0) a").First().Attr("href").Substring(15); + release.Category = MapTrackerCatToNewznab(cat); + + var added = row.Cq().Find("td:eq(7)").First().Text().Trim(); + release.PublishDate = DateTime.ParseExact(added, "yyyy-MM-ddH:mm:ss", CultureInfo.InvariantCulture); + + var sizeStr = row.Cq().Find("td:eq(8)").First().Text().Trim(); + release.Size = ReleaseInfo.GetBytes(sizeStr); + + release.Seeders = ParseUtil.CoerceInt(row.Cq().Find("td:eq(10)").First().Text().Trim()); + release.Peers = ParseUtil.CoerceInt(row.Cq().Find("td:eq(11)").First().Text().Trim()) + release.Seeders; + + releases.Add(release); + } + } + catch (Exception ex) + { + OnParseError(results, ex); + } + } + } +} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 4ed37bc9..ef02e8c3 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -187,6 +187,7 @@ <Compile Include="Controllers\DownloadController.cs" /> <Compile Include="Engine.cs" /> <Compile Include="Indexers\AlphaRatio.cs" /> + <Compile Include="Indexers\BitSoup.cs" /> <Compile Include="Indexers\BlueTigers.cs" /> <Compile Include="Indexers\EuTorrents.cs" /> <Compile Include="Indexers\Avistaz.cs" /> @@ -438,6 +439,7 @@ <Content Include="Content\logos\beyondhd.png"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="Content\logos\bitsoup.png" /> <Content Include="Content\logos\bluetigers.png"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> -- GitLab