elitetracker: add imdb search and fix categories (#7657)

This commit is contained in:
Diego Heras 2020-03-15 00:18:42 +01:00 committed by GitHub
parent 5b6c9fee49
commit d27ab11d8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 155 additions and 168 deletions

View File

@ -16,21 +16,15 @@ using NLog;
namespace Jackett.Common.Indexers namespace Jackett.Common.Indexers
{ {
// ReSharper disable once UnusedType.Global
internal class EliteTracker : BaseWebIndexer internal class EliteTracker : BaseWebIndexer
{ {
private string LoginUrl => SiteLink + "takelogin.php"; private string LoginUrl => SiteLink + "takelogin.php";
private string BrowseUrl => SiteLink + "browse.php"; private string BrowseUrl => SiteLink + "browse.php";
private bool TorrentHTTPSMode => configData.TorrentHTTPSMode.Value; private new ConfigurationDataEliteTracker configData => (ConfigurationDataEliteTracker)base.configData;
private string ReplaceMulti => configData.ReplaceMulti.Value;
private new ConfigurationDataEliteTracker configData
{
get => (ConfigurationDataEliteTracker)base.configData;
set => base.configData = value;
}
public EliteTracker(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService) public EliteTracker(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
: base(name: "Elite-Tracker", : base("Elite-Tracker",
description: "French Torrent Tracker", description: "French Torrent Tracker",
link: "https://elite-tracker.net/", link: "https://elite-tracker.net/",
caps: new TorznabCapabilities(), caps: new TorznabCapabilities(),
@ -45,97 +39,99 @@ namespace Jackett.Common.Indexers
Language = "fr-fr"; Language = "fr-fr";
Type = "private"; Type = "private";
// Clean capabilities TorznabCaps.SupportsImdbMovieSearch = true;
TorznabCaps.Categories.Clear();
AddCategoryMapping(27, TorznabCatType.TVAnime, "Animation/Animes"); AddCategoryMapping(27, TorznabCatType.TVAnime, "Animation/Animes");
AddCategoryMapping(63, TorznabCatType.TVAnime, "Animes DVD"); AddCategoryMapping(90, TorznabCatType.TVAnime, "Animes - 3D");
AddCategoryMapping(56, TorznabCatType.TVAnime, "Animes HD"); AddCategoryMapping(99, TorznabCatType.TVAnime, "Animes - 4K");
AddCategoryMapping(59, TorznabCatType.TVAnime, "Animes Serie"); AddCategoryMapping(63, TorznabCatType.TVAnime, "Animes - DVD");
AddCategoryMapping(89, TorznabCatType.TVAnime, "Animes HDLight"); AddCategoryMapping(56, TorznabCatType.TVAnime, "Animes - HD");
AddCategoryMapping(87, TorznabCatType.TVAnime, "Animes Pack"); AddCategoryMapping(89, TorznabCatType.TVAnime, "Animes - HDRip");
AddCategoryMapping(88, TorznabCatType.TVAnime, "Animes SD"); AddCategoryMapping(87, TorznabCatType.TVAnime, "Animes - Pack");
AddCategoryMapping(90, TorznabCatType.TVAnime, "Animes 3D"); AddCategoryMapping(88, TorznabCatType.TVAnime, "Animes - SD");
AddCategoryMapping(59, TorznabCatType.TVAnime, "Animes - Serie");
AddCategoryMapping(3, TorznabCatType.PC0day, "APPLICATION"); AddCategoryMapping(3, TorznabCatType.PC0day, "APPLICATION");
AddCategoryMapping(74, TorznabCatType.PCPhoneAndroid, "ANDROID"); AddCategoryMapping(74, TorznabCatType.PCPhoneAndroid, "APPLICATION - ANDROID");
AddCategoryMapping(57, TorznabCatType.PCPhoneIOS, "IPHONE"); AddCategoryMapping(57, TorznabCatType.PCPhoneIOS, "APPLICATION - IPHONE");
AddCategoryMapping(6, TorznabCatType.PC0day, "LINUX"); AddCategoryMapping(6, TorznabCatType.PC0day, "APPLICATION - LINUX");
AddCategoryMapping(5, TorznabCatType.PCMac, "MAC"); AddCategoryMapping(5, TorznabCatType.PCMac, "APPLICATION - MAC");
AddCategoryMapping(4, TorznabCatType.PC0day, "WINDOWS"); AddCategoryMapping(4, TorznabCatType.PC0day, "APPLICATION - WINDOWS");
AddCategoryMapping(38, TorznabCatType.TVDocumentary, "DOCUMENTAIRES"); AddCategoryMapping(38, TorznabCatType.TVDocumentary, "DOCUMENTAIRES");
AddCategoryMapping(97, TorznabCatType.TVDocumentary, "DOCUMENTAIRES PACK"); AddCategoryMapping(97, TorznabCatType.TVDocumentary, "DOCUMENTAIRES - PACK");
AddCategoryMapping(34, TorznabCatType.Books, "EBOOKS"); AddCategoryMapping(34, TorznabCatType.Books, "EBOOKS");
AddCategoryMapping(86, TorznabCatType.Books, "ABOOKS"); AddCategoryMapping(86, TorznabCatType.Books, "EBOOKS - ABOOKS");
AddCategoryMapping(7, TorznabCatType.Movies, "FILMS"); AddCategoryMapping(48, TorznabCatType.MoviesHD, "FiLMS HD");
AddCategoryMapping(11, TorznabCatType.MoviesDVD, "DVD"); AddCategoryMapping(51, TorznabCatType.MoviesHD, "FiLMS HD - 1080p");
AddCategoryMapping(10, TorznabCatType.MoviesSD, "DVD-RIP/BD-RIP"); AddCategoryMapping(98, TorznabCatType.MoviesUHD, "FiLMS HD - 2160p");
AddCategoryMapping(53, TorznabCatType.MoviesSD, "DVD-SCREENER"); AddCategoryMapping(70, TorznabCatType.Movies3D, "FiLMS HD - 3D");
AddCategoryMapping(9, TorznabCatType.MoviesDVD, "R5"); AddCategoryMapping(84, TorznabCatType.MoviesUHD, "FiLMS HD - 4K");
AddCategoryMapping(8, TorznabCatType.MoviesSD, "SCREENER"); AddCategoryMapping(50, TorznabCatType.MoviesHD, "FiLMS HD - 720P");
AddCategoryMapping(40, TorznabCatType.Movies, "VO"); AddCategoryMapping(49, TorznabCatType.MoviesBluRay, "FiLMS HD - BluRay");
AddCategoryMapping(39, TorznabCatType.Movies, "VOSTFR"); AddCategoryMapping(78, TorznabCatType.MoviesHD, "FiLMS HD - HDRip");
AddCategoryMapping(48, TorznabCatType.MoviesHD, "HD"); AddCategoryMapping(95, TorznabCatType.Movies, "FiLMS HD - VOSTFR");
AddCategoryMapping(51, TorznabCatType.MoviesHD, "1080P"); AddCategoryMapping(85, TorznabCatType.MoviesHD, "FiLMS HD - x265");
AddCategoryMapping(70, TorznabCatType.Movies3D, "3D");
AddCategoryMapping(50, TorznabCatType.MoviesHD, "720P"); AddCategoryMapping(7, TorznabCatType.Movies, "FiLMS SD");
AddCategoryMapping(84, TorznabCatType.MoviesUHD, "4K"); AddCategoryMapping(91, TorznabCatType.Movies3D, "FiLMS SD - 3D");
AddCategoryMapping(49, TorznabCatType.MoviesBluRay, "BluRay"); AddCategoryMapping(11, TorznabCatType.MoviesDVD, "FiLMS SD - DVD");
AddCategoryMapping(78, TorznabCatType.MoviesHD, "HDLight"); AddCategoryMapping(53, TorznabCatType.MoviesSD, "FiLMS SD - DVD-SCREENER");
AddCategoryMapping(85, TorznabCatType.MoviesHD, "x265"); AddCategoryMapping(9, TorznabCatType.MoviesDVD, "FiLMS SD - R5");
AddCategoryMapping(91, TorznabCatType.Movies3D, "3D"); AddCategoryMapping(8, TorznabCatType.MoviesSD, "FiLMS SD - SCREENER");
AddCategoryMapping(95, TorznabCatType.Movies, "VOSTFR"); AddCategoryMapping(10, TorznabCatType.MoviesSD, "FiLMS SD - SDRip");
AddCategoryMapping(40, TorznabCatType.Movies, "FiLMS SD - VO");
AddCategoryMapping(39, TorznabCatType.Movies, "FiLMS SD - VOSTFR");
AddCategoryMapping(15, TorznabCatType.Console, "JEUX VIDEO"); AddCategoryMapping(15, TorznabCatType.Console, "JEUX VIDEO");
AddCategoryMapping(76, TorznabCatType.Console3DS, "3DS"); AddCategoryMapping(76, TorznabCatType.Console3DS, "JEUX VIDEO - 3DS");
AddCategoryMapping(18, TorznabCatType.ConsoleNDS, "DS"); AddCategoryMapping(18, TorznabCatType.ConsoleNDS, "JEUX VIDEO - DS");
AddCategoryMapping(55, TorznabCatType.PCPhoneIOS, "IPHONE"); AddCategoryMapping(55, TorznabCatType.PCPhoneIOS, "JEUX VIDEO - IPHONE");
AddCategoryMapping(80, TorznabCatType.PCGames, "LINUX"); AddCategoryMapping(80, TorznabCatType.PCGames, "JEUX VIDEO - LINUX");
AddCategoryMapping(79, TorznabCatType.PCMac, "OSX"); AddCategoryMapping(96, TorznabCatType.ConsoleOther, "JEUX VIDEO - NSW");
AddCategoryMapping(22, TorznabCatType.PCGames, "PC"); AddCategoryMapping(79, TorznabCatType.PCMac, "JEUX VIDEO - OSX");
AddCategoryMapping(66, TorznabCatType.ConsolePS3, "PS2"); AddCategoryMapping(22, TorznabCatType.PCGames, "JEUX VIDEO - PC");
AddCategoryMapping(58, TorznabCatType.ConsolePS3, "PS3"); AddCategoryMapping(66, TorznabCatType.ConsolePS3, "JEUX VIDEO - PS2");
AddCategoryMapping(81, TorznabCatType.ConsolePS4, "PS4"); AddCategoryMapping(58, TorznabCatType.ConsolePS3, "JEUX VIDEO - PS3");
AddCategoryMapping(20, TorznabCatType.ConsolePSP, "PSP"); AddCategoryMapping(81, TorznabCatType.ConsolePS4, "JEUX VIDEO - PS4");
AddCategoryMapping(75, TorznabCatType.ConsolePS3, "PSX"); AddCategoryMapping(20, TorznabCatType.ConsolePSP, "JEUX VIDEO - PSP");
AddCategoryMapping(19, TorznabCatType.ConsoleWii, "WII"); AddCategoryMapping(75, TorznabCatType.ConsolePS3, "JEUX VIDEO - PSX");
AddCategoryMapping(83, TorznabCatType.ConsoleWiiU, "WiiU"); AddCategoryMapping(19, TorznabCatType.ConsoleWii, "JEUX VIDEO - WII");
AddCategoryMapping(16, TorznabCatType.ConsoleXbox, "XBOX"); AddCategoryMapping(83, TorznabCatType.ConsoleWiiU, "JEUX VIDEO - WiiU");
AddCategoryMapping(82, TorznabCatType.ConsoleXboxOne, "XBOX ONE"); AddCategoryMapping(16, TorznabCatType.ConsoleXbox, "JEUX VIDEO - XBOX");
AddCategoryMapping(17, TorznabCatType.ConsoleXbox360, "XBOX360"); AddCategoryMapping(82, TorznabCatType.ConsoleXboxOne, "JEUX VIDEO - XBOX ONE");
AddCategoryMapping(44, TorznabCatType.ConsoleXbox360, "XBOX360.E"); AddCategoryMapping(17, TorznabCatType.ConsoleXbox360, "JEUX VIDEO - XBOX360");
AddCategoryMapping(54, TorznabCatType.ConsoleXbox360, "XBOX360.JTAG");
AddCategoryMapping(43, TorznabCatType.ConsoleXbox360, "XBOX360.NTSC");
AddCategoryMapping(96, TorznabCatType.Console, "NSW");
AddCategoryMapping(23, TorznabCatType.Audio, "MUSIQUES"); AddCategoryMapping(23, TorznabCatType.Audio, "MUSIQUES");
AddCategoryMapping(26, TorznabCatType.Audio, "CLIP/CONCERT"); AddCategoryMapping(26, TorznabCatType.Audio, "MUSIQUES - CLIP/CONCERT");
AddCategoryMapping(61, TorznabCatType.AudioLossless, "FLAC"); AddCategoryMapping(61, TorznabCatType.AudioLossless, "MUSIQUES - FLAC");
AddCategoryMapping(60, TorznabCatType.AudioMP3, "MP3"); AddCategoryMapping(60, TorznabCatType.AudioMP3, "MUSIQUES - MP3");
AddCategoryMapping(30, TorznabCatType.TV, "SERIES"); AddCategoryMapping(30, TorznabCatType.TV, "SERIES");
AddCategoryMapping(73, TorznabCatType.TVSD, "Series Pack FR SD"); AddCategoryMapping(77, TorznabCatType.TVSD, "SERIES - DVD");
AddCategoryMapping(92, TorznabCatType.TVHD, "Series Pack FR HD"); AddCategoryMapping(100, TorznabCatType.TVUHD, "SERIES - 4k");
AddCategoryMapping(93, TorznabCatType.TVSD, "Series Pack VOSTFR SD"); AddCategoryMapping(67, TorznabCatType.TVHD, "SERIES - FR HD");
AddCategoryMapping(94, TorznabCatType.TVHD, "Series Pack VOSTFR HD"); AddCategoryMapping(31, TorznabCatType.TVSD, "SERIES - FR SD");
AddCategoryMapping(31, TorznabCatType.TVSD, "Series FR SD"); AddCategoryMapping(102, TorznabCatType.TVUHD, "SERIES - Pack 4k");
AddCategoryMapping(32, TorznabCatType.TVSD, "Series VO SD"); AddCategoryMapping(92, TorznabCatType.TVHD, "SERIES - Pack FR HD");
AddCategoryMapping(33, TorznabCatType.TVSD, "Series VOSTFR SD"); AddCategoryMapping(73, TorznabCatType.TVSD, "SERIES - Pack FR SD");
AddCategoryMapping(77, TorznabCatType.TVSD, "Series DVD"); AddCategoryMapping(94, TorznabCatType.TVHD, "SERIES - Pack VOSTFR HD");
AddCategoryMapping(67, TorznabCatType.TVHD, "Series.FR HD"); AddCategoryMapping(93, TorznabCatType.TVSD, "SERIES - Pack VOSTFR SD");
AddCategoryMapping(68, TorznabCatType.TVHD, "Series VO HD"); AddCategoryMapping(68, TorznabCatType.TVHD, "SERIES - VO HD");
AddCategoryMapping(69, TorznabCatType.TVHD, "Series VOSTFR HD"); AddCategoryMapping(32, TorznabCatType.TVSD, "SERIES - VO SD");
AddCategoryMapping(101, TorznabCatType.TVUHD, "SERIES - 4k");
AddCategoryMapping(69, TorznabCatType.TVHD, "SERIES - VOSTFR HD");
AddCategoryMapping(33, TorznabCatType.TVSD, "SERIES - VOSTFR SD");
AddCategoryMapping(47, TorznabCatType.TV, "SPECTACLES/EMISSIONS"); AddCategoryMapping(47, TorznabCatType.TV, "SPECTACLES/EMISSIONS");
AddCategoryMapping(71, TorznabCatType.TV, "Emissions"); AddCategoryMapping(71, TorznabCatType.TV, "SPECTACLES/EMISSIONS - Emissions");
AddCategoryMapping(72, TorznabCatType.TV, "Spectacles"); AddCategoryMapping(72, TorznabCatType.TV, "SPECTACLES/EMISSIONS - Spectacles");
AddCategoryMapping(35, TorznabCatType.TVSport, "SPORT"); AddCategoryMapping(35, TorznabCatType.TVSport, "SPORT");
AddCategoryMapping(36, TorznabCatType.TVSport, "CATCH"); AddCategoryMapping(36, TorznabCatType.TVSport, "SPORT - CATCH");
AddCategoryMapping(65, TorznabCatType.TVSport, "UFC"); AddCategoryMapping(65, TorznabCatType.TVSport, "SPORT - UFC");
AddCategoryMapping(37, TorznabCatType.XXX, "XXX"); AddCategoryMapping(37, TorznabCatType.XXX, "XXX");
} }
@ -164,126 +160,116 @@ namespace Jackett.Common.Indexers
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query) protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{ {
var releases = new List<ReleaseInfo>(); var releases = new List<ReleaseInfo>();
var searchString = query.GetQueryString();
var queryCollection = new Dictionary<string, string>(); var pairs = new Dictionary<string, string>
queryCollection.Add("search_type", "t_name"); {
queryCollection.Add("do", "search"); {"do", "search"},
queryCollection.Add("keywords", searchString); {"search_type", !string.IsNullOrWhiteSpace(query.ImdbID) ? "t_genre" : "t_name"},
queryCollection.Add("category", "0"); // multi cat search not supported {"keywords", !string.IsNullOrWhiteSpace(query.ImdbID) ? query.ImdbID : query.GetQueryString()},
{"category", "0"} // multi cat search not supported
};
var results = await PostDataWithCookies(BrowseUrl, queryCollection); var results = await PostDataWithCookies(BrowseUrl, pairs);
if (results.IsRedirect) if (results.IsRedirect)
{ {
// re-login // re-login
await ApplyConfiguration(null); await ApplyConfiguration(null);
results = await PostDataWithCookies(BrowseUrl, queryCollection); results = await PostDataWithCookies(BrowseUrl, pairs);
} }
try try
{ {
var RowsSelector = "table[id='sortabletable'] > tbody > tr";
var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results.Content);
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
var lastDate = DateTime.Now; var lastDate = DateTime.Now;
foreach (var Row in Rows.Skip(1)) var parser = new HtmlParser();
var doc = parser.ParseDocument(results.Content);
var rows = doc.QuerySelectorAll("table[id='sortabletable'] > tbody > tr");
foreach (var row in rows.Skip(1))
{ {
var release = new ReleaseInfo(); var qTags = row.Children[1].QuerySelector("div:has(span[style=\"float: right;\"])");
release.MinimumRatio = 1; if (qTags == null)
release.MinimumSeedTime = 0; continue; // not a torrent line
var category = Row.QuerySelector("td:nth-child(1) > a"); var cat = row.Children[0].QuerySelector("a").GetAttribute("href").Split('=')[1];
var title = Row.QuerySelector("td:nth-child(2) a"); var title = row.Children[1].QuerySelector("a").TextContent;
var added = Row.QuerySelector("td:nth-child(2) > div:has(span[style=\"float: right;\"])"); var qLinks = row.Children[2].QuerySelectorAll("a");
if (added == null) // not a torrent line var link = configData.TorrentHTTPSMode.Value ? qLinks[1].GetAttribute("href") : qLinks[0].GetAttribute("href");
continue; var comments = row.Children[1].QuerySelector("a").GetAttribute("href");
var pretime = added.QuerySelector("font.mkprettytime"); var size = row.Children[4].TextContent;
var tooltip = Row.QuerySelector("td:nth-child(2) > div.tooltip-content"); var grabs = row.Children[5].QuerySelector("a").TextContent;
var seeders = row.Children[6].QuerySelector("a").TextContent;
var leechers = row.Children[7].QuerySelector("a").TextContent;
var link = Row.QuerySelector("td:nth-child(3)").QuerySelector("a"); var dlVolumeFactor = 1.0;
var comments = Row.QuerySelector("td:nth-child(2)").QuerySelector("a"); if (qTags.QuerySelector("img[alt^=\"TORRENT GRATUIT\"]") != null)
var Size = Row.QuerySelector("td:nth-child(5)"); dlVolumeFactor = 0.0;
var Grabs = Row.QuerySelector("td:nth-child(6)").QuerySelector("a"); else if (qTags.QuerySelector("img[alt^=\"TORRENT SILVER\"]") != null)
var Seeders = Row.QuerySelector("td:nth-child(7)").QuerySelector("a"); dlVolumeFactor = 0.5;
var Leechers = Row.QuerySelector("td:nth-child(8)").QuerySelector("a");
var categoryId = category.GetAttribute("href").Split('=')[1]; var upVolumeFactor = qTags.QuerySelector("img[alt^=\"TORRENT X2\"]") != null ? 2.0 : 1.0;
release.Category = MapTrackerCatToNewznab(categoryId);
release.Title = title.TextContent; var release = new ReleaseInfo
release.Category = MapTrackerCatToNewznab(categoryId); {
release.Link = new Uri(link.GetAttribute("href")); MinimumRatio = 1,
release.Comments = new Uri(comments.GetAttribute("href")); MinimumSeedTime = 0,
Category = MapTrackerCatToNewznab(cat),
Title = title,
Link = new Uri(link),
Comments = new Uri(comments),
Size = ReleaseInfo.GetBytes(size),
Seeders = ParseUtil.CoerceInt(seeders),
Grabs = ParseUtil.CoerceLong(grabs),
DownloadVolumeFactor = dlVolumeFactor,
UploadVolumeFactor = upVolumeFactor
};
release.Peers = ParseUtil.CoerceInt(leechers) + release.Seeders;
release.Guid = release.Link; release.Guid = release.Link;
release.Size = ReleaseInfo.GetBytes(Size.TextContent);
release.Seeders = ParseUtil.CoerceInt(Seeders.TextContent);
release.Peers = ParseUtil.CoerceInt(Leechers.TextContent) + release.Seeders;
release.Grabs = ParseUtil.CoerceLong(Grabs.TextContent);
if (TorrentHTTPSMode) var qTooltip = row.Children[1].QuerySelector("div.tooltip-content");
if (qTooltip != null)
{ {
var linkHttps = Row.QuerySelector("td:nth-child(4)").QuerySelector("a").GetAttribute("href"); var banner = qTooltip.QuerySelector("img");
var idTorrent = ParseUtil.GetArgumentFromQueryString(linkHttps, "id");
release.Link = new Uri($"{SiteLink}download.php?id={idTorrent}&type=ssl");
}
if (added.QuerySelector("img[alt^=\"TORRENT GRATUIT\"]") != null)
release.DownloadVolumeFactor = 0;
else if (added.QuerySelector("img[alt^=\"TORRENT SILVER\"]") != null)
release.DownloadVolumeFactor = 0.5;
else
release.DownloadVolumeFactor = 1;
if (added.QuerySelector("img[alt^=\"TORRENT X2\"]") != null)
release.UploadVolumeFactor = 2;
else
release.UploadVolumeFactor = 1;
if (tooltip != null)
{
var banner = tooltip.QuerySelector("img");
if (banner != null) if (banner != null)
{ {
release.BannerUrl = new Uri(banner.GetAttribute("src")); release.BannerUrl = new Uri(banner.GetAttribute("src"));
banner.Remove(); banner.Remove();
} }
tooltip.QuerySelector("div:contains(\"Total Hits\")").Remove(); qTooltip.QuerySelector("div:contains(\"Total Hits\")").Remove();
var longtitle = tooltip.QuerySelectorAll("div").First(); var qLongTitle = qTooltip.QuerySelector("div");
release.Title = longtitle.TextContent; release.Title = qLongTitle.TextContent;
longtitle.Remove(); qLongTitle.Remove();
var desc = tooltip.TextContent.Trim(); var description = qTooltip.TextContent.Trim();
if (!string.IsNullOrWhiteSpace(desc)) if (!string.IsNullOrWhiteSpace(description))
release.Description = desc; release.Description = description;
} }
//issue #5064 replace multi keyword // issue #5064 replace multi keyword
if (!string.IsNullOrEmpty(ReplaceMulti)) if (!string.IsNullOrEmpty(configData.ReplaceMulti.Value))
{ {
var regex = new Regex("(?i)([\\.\\- ])MULTI([\\.\\- ])"); var regex = new Regex("(?i)([\\.\\- ])MULTI([\\.\\- ])");
release.Title = regex.Replace(release.Title, "$1" + ReplaceMulti + "$2"); release.Title = regex.Replace(release.Title, "$1" + configData.ReplaceMulti.Value + "$2");
}
// issue #6855 Replace VOSTFR with ENGLISH
if (configData.Vostfr.Value)
{
release.Title = release.Title.Replace("VOSTFR", "ENGLISH");
} }
if (pretime != null) // issue #6855 Replace VOSTFR with ENGLISH
if (configData.Vostfr.Value)
release.Title = release.Title.Replace("VOSTFR", "ENGLISH");
var qPretime = qTags.QuerySelector("font.mkprettytime");
if (qPretime != null)
{ {
if (release.Description == null) if (release.Description == null)
release.Description = pretime.TextContent; release.Description = qPretime.TextContent;
else else
release.Description += "<br>\n" + pretime.TextContent; release.Description += "<br>\n" + qPretime.TextContent;
release.PublishDate = lastDate; release.PublishDate = lastDate;
} }
else else
{ {
release.PublishDate = DateTime.ParseExact(added.TextContent.Trim(), "dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture); release.PublishDate = DateTime.ParseExact(qTags.TextContent.Trim(), "dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
lastDate = release.PublishDate; lastDate = release.PublishDate;
} }

View File

@ -2,18 +2,19 @@ namespace Jackett.Common.Models.IndexerConfig.Bespoke
{ {
internal class ConfigurationDataEliteTracker : ConfigurationDataBasicLogin internal class ConfigurationDataEliteTracker : ConfigurationDataBasicLogin
{ {
public BoolItem TorrentHTTPSMode { get; private set; } public BoolItem TorrentHTTPSMode { get; }
public DisplayItem PagesWarning { get; private set; } // ReSharper disable once MemberCanBePrivate.Global
public StringItem ReplaceMulti { get; private set; } // ReSharper disable once UnusedAutoPropertyAccessor.Global
public BoolItem Vostfr { get; private set; } public DisplayItem PagesWarning { get; }
public StringItem ReplaceMulti { get; }
public BoolItem Vostfr { get; }
public ConfigurationDataEliteTracker() public ConfigurationDataEliteTracker()
: base()
{ {
TorrentHTTPSMode = new BoolItem { Name = "Use https for tracker URL", Value = false }; TorrentHTTPSMode = new BoolItem { Name = "Use HTTPS for tracker URL", Value = false };
PagesWarning = new DisplayItem("<b>Preferences Configuration</b> (<i>Tweak your search settings</i>),<br /><br /> <ul><li><b>Replace MULTI</b>, replace multi keyword in the resultset (leave empty to deactivate)</li><li><b>Replace VOSTFR with ENGLISH</b> lets you change the titles by replacing VOSTFR with ENGLISH.</li></ul>") { Name = "Preferences" }; PagesWarning = new DisplayItem("<b>Preferences Configuration</b> (<i>Tweak your search settings</i>),<br /><br /> <ul><li><b>Replace MULTI</b>, replace multi keyword in the resultset (leave empty to deactivate)</li><li><b>Replace VOSTFR with ENGLISH</b> lets you change the titles by replacing VOSTFR with ENGLISH.</li></ul>") { Name = "Preferences" };
ReplaceMulti = new StringItem() { Name = "Replace MULTI", Value = "MULTI.FRENCH" }; ReplaceMulti = new StringItem { Name = "Replace MULTI", Value = "MULTI.FRENCH" };
Vostfr = new BoolItem() { Name = "Replace VOSTFR with ENGLISH", Value = false }; Vostfr = new BoolItem { Name = "Replace VOSTFR with ENGLISH", Value = false };
} }
} }
} }