diff --git a/src/Jackett/Indexers/BitHdtv.cs b/src/Jackett/Indexers/BitHdtv.cs index 20e80cf52..a3669d8de 100644 --- a/src/Jackett/Indexers/BitHdtv.cs +++ b/src/Jackett/Indexers/BitHdtv.cs @@ -109,7 +109,6 @@ namespace Jackett.Indexers { List releases = new List(); - foreach (var title in query.ShowTitles ?? new string[] { string.Empty }) { var searchString = title + " " + query.GetEpisodeSearchString(); @@ -145,8 +144,8 @@ namespace Jackett.Indexers var sizeUnit = sizeCol.ChildNodes[2].NodeValue; release.Size = ReleaseInfo.GetBytes(sizeUnit, float.Parse(sizeVal)); - release.Seeders = int.Parse(qRow.Children().ElementAt(8).Cq().Text().Trim()); - release.Peers = int.Parse(qRow.Children().ElementAt(9).Cq().Text().Trim()) + release.Seeders; + release.Seeders = int.Parse(qRow.Children().ElementAt(8).Cq().Text().Trim(), NumberStyles.AllowThousands); + release.Peers = int.Parse(qRow.Children().ElementAt(9).Cq().Text().Trim(), NumberStyles.AllowThousands) + release.Seeders; releases.Add(release); } diff --git a/src/Jackett/Indexers/BitMeTV.cs b/src/Jackett/Indexers/BitMeTV.cs index ceba8dbc0..656b5fa15 100644 --- a/src/Jackett/Indexers/BitMeTV.cs +++ b/src/Jackett/Indexers/BitMeTV.cs @@ -172,8 +172,8 @@ namespace Jackett var sizeUnit = sizeCol.ChildNodes[2].NodeValue; release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal); - release.Seeders = int.Parse(row.ChildElements.ElementAt(8).Cq().Text()); - release.Peers = int.Parse(row.ChildElements.ElementAt(9).Cq().Text()) + release.Seeders; + release.Seeders = int.Parse(row.ChildElements.ElementAt(8).Cq().Text(), NumberStyles.AllowThousands); + release.Peers = int.Parse(row.ChildElements.ElementAt(9).Cq().Text(), NumberStyles.AllowThousands) + release.Seeders; if (!release.Title.ToLower().Contains(title.ToLower())) continue; diff --git a/src/Jackett/Indexers/Freshon.cs b/src/Jackett/Indexers/Freshon.cs index c8a2b46d3..be4cbda66 100644 --- a/src/Jackett/Indexers/Freshon.cs +++ b/src/Jackett/Indexers/Freshon.cs @@ -164,8 +164,8 @@ namespace Jackett pubDate = DateTime.ParseExact(dateString, "d-MMM-yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime(); release.PublishDate = pubDate; - release.Seeders = int.Parse(qRow.Find("td.table_seeders").Text().Trim()); - release.Peers = int.Parse(qRow.Find("td.table_leechers").Text().Trim()) + release.Seeders; + release.Seeders = int.Parse(qRow.Find("td.table_seeders").Text().Trim(), NumberStyles.AllowThousands); + release.Peers = int.Parse(qRow.Find("td.table_leechers").Text().Trim(), NumberStyles.AllowThousands) + release.Seeders; var sizeCol = qRow.Find("td.table_size")[0]; var sizeVal = float.Parse(sizeCol.ChildNodes[0].NodeValue.Trim()); diff --git a/src/Jackett/Indexers/IPTorrents.cs b/src/Jackett/Indexers/IPTorrents.cs index f1a2f1d2d..450f29e51 100644 --- a/src/Jackett/Indexers/IPTorrents.cs +++ b/src/Jackett/Indexers/IPTorrents.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Net; using System.Net.Http; @@ -27,7 +28,6 @@ namespace Jackett.Indexers static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; - static string BaseUrl = "https://iptorrents.com"; string SearchUrl = BaseUrl + "/t?q="; @@ -177,8 +177,8 @@ namespace Jackett.Indexers var sizeUnit = sizeStr.Split(' ')[1]; release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal); - release.Seeders = int.Parse(qRow.Find(".t_seeders").Text().Trim()); - release.Peers = int.Parse(qRow.Find(".t_leechers").Text().Trim()) + release.Seeders; + release.Seeders = int.Parse(qRow.Find(".t_seeders").Text().Trim(), NumberStyles.AllowThousands); + release.Peers = int.Parse(qRow.Find(".t_leechers").Text().Trim(), NumberStyles.AllowThousands) + release.Seeders; releases.Add(release); } diff --git a/src/Jackett/Indexers/Strike.cs b/src/Jackett/Indexers/Strike.cs index 24a141e4d..abb62a942 100644 --- a/src/Jackett/Indexers/Strike.cs +++ b/src/Jackett/Indexers/Strike.cs @@ -14,22 +14,6 @@ namespace Jackett.Indexers public class Strike : IndexerInterface { - class StrikeConfig : ConfigurationData - { - public StringItem Url { get; private set; } - - public StrikeConfig() - { - Url = new StringItem { Name = "Url", Value = DefaultUrl }; - } - - public override Item[] GetItems() - { - return new Item[] { Url }; - } - } - - public event Action OnSaveConfigurationRequested; public event Action OnResultParsingError; @@ -75,17 +59,16 @@ namespace Jackett.Indexers public Task GetConfigurationForSetup() { - var config = new StrikeConfig(); + var config = new ConfigurationDataUrl(DefaultUrl); return Task.FromResult(config); } public async Task ApplyConfiguration(JToken configJson) { - var config = new StrikeConfig(); + var config = new ConfigurationDataUrl(DefaultUrl); config.LoadValuesFromJson(configJson); - var uri = new Uri(config.Url.Value); - var formattedUrl = string.Format("{0}://{1}", uri.Scheme, uri.Host); + var formattedUrl = config.GetFormattedHostUrl(); var releases = await PerformQuery(new TorznabQuery(), formattedUrl); if (releases.Length == 0) throw new Exception("Could not find releases from this URL"); diff --git a/src/Jackett/Indexers/ThePirateBay.cs b/src/Jackett/Indexers/ThePirateBay.cs index c0b433f7e..eced6213c 100644 --- a/src/Jackett/Indexers/ThePirateBay.cs +++ b/src/Jackett/Indexers/ThePirateBay.cs @@ -16,21 +16,6 @@ namespace Jackett.Indexers public class ThePirateBay : IndexerInterface { - class ThePirateBayConfig : ConfigurationData - { - public StringItem Url { get; private set; } - - public ThePirateBayConfig() - { - Url = new StringItem { Name = "Url", Value = DefaultUrl }; - } - - public override Item[] GetItems() - { - return new Item[] { Url }; - } - } - public event Action OnSaveConfigurationRequested; public event Action OnResultParsingError; @@ -54,7 +39,6 @@ namespace Jackett.Indexers HttpClientHandler handler; HttpClient client; - public ThePirateBay() { IsConfigured = false; @@ -70,17 +54,16 @@ namespace Jackett.Indexers public Task GetConfigurationForSetup() { - var config = new ThePirateBayConfig(); + var config = new ConfigurationDataUrl(DefaultUrl); return Task.FromResult(config); } public async Task ApplyConfiguration(JToken configJson) { - var config = new ThePirateBayConfig(); + var config = new ConfigurationDataUrl(DefaultUrl); config.LoadValuesFromJson(configJson); - var uri = new Uri(config.Url.Value); - var formattedUrl = string.Format("{0}://{1}", uri.Scheme, uri.Host); + var formattedUrl = config.GetFormattedHostUrl(); var releases = await PerformQuery(new TorznabQuery(), formattedUrl); if (releases.Length == 0) throw new Exception("Could not find releases from this URL"); @@ -94,7 +77,6 @@ namespace Jackett.Indexers OnSaveConfigurationRequested(this, configSaveData); IsConfigured = true; - } public void LoadFromSavedConfiguration(JToken jsonConfig) diff --git a/src/Jackett/Indexers/TorrentDay.cs b/src/Jackett/Indexers/TorrentDay.cs index a82cba2fe..71a19df3f 100644 --- a/src/Jackett/Indexers/TorrentDay.cs +++ b/src/Jackett/Indexers/TorrentDay.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Net; using System.Net.Http; @@ -125,6 +126,7 @@ namespace Jackett.Indexers release.MinimumRatio = 1; release.MinimumSeedTime = 172800; release.Title = qRow.Find(".torrentName").Text(); + release.Description = release.Title; release.Guid = new Uri(BaseUrl + "/" + qRow.Find(".torrentName").Attr("href")); release.Comments = release.Guid; release.Link = new Uri(BaseUrl + "/" + qRow.Find(".dlLinksInfo > a").Attr("href")); @@ -153,8 +155,8 @@ namespace Jackett.Indexers ts = TimeSpan.FromDays(dateValue * 365); release.PublishDate = DateTime.Now - ts; - release.Seeders = int.Parse(qRow.Find(".seedersInfo").Text()); - release.Peers = int.Parse(qRow.Find(".leechersInfo").Text()) + release.Seeders; + release.Seeders = int.Parse(qRow.Find(".seedersInfo").Text(), NumberStyles.AllowThousands); + release.Peers = int.Parse(qRow.Find(".leechersInfo").Text(), NumberStyles.AllowThousands) + release.Seeders; releases.Add(release); } diff --git a/src/Jackett/Indexers/TorrentShack.cs b/src/Jackett/Indexers/TorrentShack.cs index 8886fdfe9..d4ced5277 100644 --- a/src/Jackett/Indexers/TorrentShack.cs +++ b/src/Jackett/Indexers/TorrentShack.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Net; using System.Net.Http; @@ -127,6 +128,7 @@ namespace Jackett.Indexers release.MinimumRatio = 1; release.MinimumSeedTime = 172800; release.Title = qRow.Find(".torrent_name_link").Text(); + release.Description = release.Title; release.Guid = new Uri(BaseUrl + "/" + qRow.Find(".torrent_name_link").Parent().Attr("href")); release.Comments = release.Guid; release.Link = new Uri(BaseUrl + "/" + qRow.Find(".torrent_handle_links > a").First().Attr("href")); @@ -154,8 +156,8 @@ namespace Jackett.Indexers var sizeStr = qRow.Find(".size")[0].ChildNodes[0].NodeValue.Trim(); var sizeParts = sizeStr.Split(' '); release.Size = ReleaseInfo.GetBytes(sizeParts[1], float.Parse(sizeParts[0])); - release.Seeders = int.Parse(qRow.Children().ElementAt(6).InnerText.Trim()); - release.Peers = int.Parse(qRow.Children().ElementAt(7).InnerText.Trim()) + release.Seeders; + release.Seeders = int.Parse(qRow.Children().ElementAt(6).InnerText.Trim(), NumberStyles.AllowThousands); + release.Peers = int.Parse(qRow.Children().ElementAt(7).InnerText.Trim(), NumberStyles.AllowThousands) + release.Seeders; releases.Add(release); } diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 7943e1e35..2f71054f6 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -84,6 +84,7 @@ + @@ -94,6 +95,7 @@ + diff --git a/src/Jackett/ResultPage.cs b/src/Jackett/ResultPage.cs index 9514e036c..f9d4b9b2e 100644 --- a/src/Jackett/ResultPage.cs +++ b/src/Jackett/ResultPage.cs @@ -69,16 +69,16 @@ namespace Jackett select new XElement("item", new XElement("title", r.Title), new XElement("guid", r.Guid), - new XElement("comments", r.Comments.ToString()), - new XElement("pubDate", xmlDateFormat(r.PublishDate)), - new XElement("size", r.Size), + r.Comments == null ? null : new XElement("comments", r.Comments.ToString()), + r.PublishDate == DateTime.MinValue ? null : new XElement("pubDate", xmlDateFormat(r.PublishDate)), + r.Size == null ? null : new XElement("size", r.Size), new XElement("description", r.Description), new XElement("link", r.Link ?? r.MagnetUri), r.Category == null ? null : new XElement("category", r.Category), new XElement( "enclosure", new XAttribute("url", r.Link ?? r.MagnetUri), - new XAttribute("length", r.Size), + r.Size == null ? null : new XAttribute("length", r.Size), new XAttribute("type", "application/x-bittorrent") ), getTorznabElement("magneturl", r.MagnetUri),