diff --git a/src/Jackett/Indexers/TorrentShack.cs b/src/Jackett/Indexers/TorrentShack.cs index 3a53246ce..cdd145fa5 100644 --- a/src/Jackett/Indexers/TorrentShack.cs +++ b/src/Jackett/Indexers/TorrentShack.cs @@ -15,13 +15,14 @@ using System.Text; using System.Threading.Tasks; using System.Web; using Jackett.Models.IndexerConfig; - +using System.Collections.Specialized; + namespace Jackett.Indexers { public class TorrentShack : BaseIndexer, IIndexer { private string LoginUrl { get { return SiteLink + "login.php"; } } - private string SearchUrl { get { return SiteLink + "torrents.php?searchstr={0}&release_type=both&searchtags=&tags_type=0&order_by=s3&order_way=desc&torrent_preset=all&filter_cat%5B600%5D=1&filter_cat%5B620%5D=1&filter_cat%5B700%5D=1&filter_cat%5B981%5D=1&filter_cat%5B980%5D=1"; } } + private string SearchUrl { get { return SiteLink + "torrents.php"; } } new ConfigurationDataBasicLogin configData { @@ -39,7 +40,36 @@ namespace Jackett.Indexers logger: l, p: ps, configData: new ConfigurationDataBasicLogin()) - { + { + AddCategoryMapping(600, TorznabCatType.TVHD); // TV/HD + AddCategoryMapping(960, TorznabCatType.MoviesForeign); // Foreign + AddCategoryMapping(300, TorznabCatType.MoviesHD); // Movies/HD + AddCategoryMapping(200, TorznabCatType.PCGames); // Games/PC + AddCategoryMapping(100, TorznabCatType.PC0day); // Apps/PC + AddCategoryMapping(450, TorznabCatType.AudioMP3); // Music/MP3 + AddCategoryMapping(280, TorznabCatType.PCPhoneOther); // HandHeld + AddCategoryMapping(620, TorznabCatType.TVSD); // TV/SD + AddCategoryMapping(320, TorznabCatType.MoviesOther); // REMUX + AddCategoryMapping(400, TorznabCatType.MoviesSD); // Movies/SD + AddCategoryMapping(240, TorznabCatType.ConsolePS3); // Games/PS3 + AddCategoryMapping(150, TorznabCatType.PC0day); // Apps/misc + AddCategoryMapping(480, TorznabCatType.AudioLossless); // Music/FLAC + AddCategoryMapping(180, TorznabCatType.BooksEbook); // eBooks + AddCategoryMapping(700, TorznabCatType.TVOTHER); // TV/DVDrip + AddCategoryMapping(970, TorznabCatType.MoviesBluRay); // Full Blu-ray + AddCategoryMapping(350, TorznabCatType.MoviesDVD); // Movies/DVD-R + AddCategoryMapping(260, TorznabCatType.ConsoleXbox360); // Games/Xbox360 + AddCategoryMapping(500, TorznabCatType.AudioVideo); // Music/Videos + AddCategoryMapping(181, TorznabCatType.AudioAudiobook); // AudioBooks + AddCategoryMapping(981, TorznabCatType.TVHD); // TV-HD Pack + AddCategoryMapping(850, TorznabCatType.TVAnime); // Anime + AddCategoryMapping(982, TorznabCatType.MoviesHD); // Movies-HD Pack + AddCategoryMapping(986, TorznabCatType.PCGames); // Games Pack + AddCategoryMapping(984, TorznabCatType.AudioMP3); // MP3 Pack + AddCategoryMapping(800, TorznabCatType.Other); // Misc + AddCategoryMapping(980, TorznabCatType.TVSD); // TV-SD Pack + AddCategoryMapping(983, TorznabCatType.TVSD); // Movies-SD Pack + AddCategoryMapping(985, TorznabCatType.AudioLossless); // FLAC Pack } public async Task ApplyConfiguration(JToken configJson) @@ -69,8 +99,29 @@ namespace Jackett.Indexers { var releases = new List(); var searchString = query.GetQueryString(); - var episodeSearchUrl = string.Format(SearchUrl, HttpUtility.UrlEncode(searchString)); - var results = await RequestStringWithCookiesAndRetry(episodeSearchUrl); + + var searchUrl = SearchUrl; + var queryCollection = new NameValueCollection(); + queryCollection.Add("release_type", "both"); + queryCollection.Add("searchtags", ""); + queryCollection.Add("tags_type", "0"); + queryCollection.Add("order_by", "s3"); + queryCollection.Add("order_way", "desc"); + queryCollection.Add("torrent_preset", "all"); + + if (!string.IsNullOrWhiteSpace(searchString)) + { + queryCollection.Add("searchstr", searchString); + } + + foreach (var cat in MapTorznabCapsToTrackers(query)) + { + queryCollection.Add("filter_cat["+cat+"]", "1"); + } + + searchUrl += "?" + queryCollection.GetQueryString(); + + var results = await RequestStringWithCookiesAndRetry(searchUrl); try { CQ dom = results.Content; @@ -102,6 +153,10 @@ namespace Jackett.Indexers release.DownloadVolumeFactor = 0; // ratioless release.UploadVolumeFactor = 1; + var qCat = qRow.Find("a[href^=\"torrents.php?filter_cat\"]"); + var cat = qCat.Attr("href").Split('[')[1].Split(']')[0]; + release.Category = MapTrackerCatToNewznab(cat); + releases.Add(release); } }