mirror of
https://github.com/lidarr/Lidarr
synced 2025-03-12 06:53:24 +00:00
Fixed: Doki rss feed now uses correct url for torrent.
This commit is contained in:
parent
51155ba909
commit
3ad7673d69
6 changed files with 80 additions and 2 deletions
|
@ -123,5 +123,33 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
torrentInfo.Peers.Should().NotHaveValue();
|
torrentInfo.Peers.Should().NotHaveValue();
|
||||||
torrentInfo.Seeders.Should().NotHaveValue();
|
torrentInfo.Seeders.Should().NotHaveValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_parse_recent_feed_from_Doki()
|
||||||
|
{
|
||||||
|
Subject.Definition.Settings.As<TorrentRssIndexerSettings>().AllowZeroSize = true;
|
||||||
|
|
||||||
|
GivenRecentFeedResponse("TorrentRss/Doki.xml");
|
||||||
|
|
||||||
|
var releases = Subject.FetchRecent();
|
||||||
|
|
||||||
|
releases.Should().HaveCount(5);
|
||||||
|
releases.First().Should().BeOfType<TorrentInfo>();
|
||||||
|
|
||||||
|
var torrentInfo = releases.First() as TorrentInfo;
|
||||||
|
|
||||||
|
torrentInfo.Title.Should().Be("[Doki] PriPara 50 (848x480 h264 AAC) [6F0B49FD] mkv");
|
||||||
|
torrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
|
||||||
|
torrentInfo.DownloadUrl.Should().Be("http://tracker.anime-index.org/download.php?id=82d8ad84403e01a7786130905ca169a3429e657f&f=%5BDoki%5D+PriPara+-+50+%28848x480+h264+AAC%29+%5B6F0B49FD%5D.mkv.torrent");
|
||||||
|
torrentInfo.InfoUrl.Should().BeNullOrEmpty();
|
||||||
|
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
|
||||||
|
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
|
||||||
|
torrentInfo.PublishDate.Should().Be(DateTime.Parse("Thu, 02 Jul 2015 08:18:29 GMT").ToUniversalTime());
|
||||||
|
torrentInfo.Size.Should().Be(0);
|
||||||
|
torrentInfo.InfoHash.Should().BeNull();
|
||||||
|
torrentInfo.MagnetUrl.Should().BeNull();
|
||||||
|
torrentInfo.Peers.Should().NotHaveValue();
|
||||||
|
torrentInfo.Seeders.Should().NotHaveValue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
||||||
{
|
{
|
||||||
UseEZTVFormat = true,
|
UseEZTVFormat = true,
|
||||||
|
UseEnclosureUrl = false,
|
||||||
UseEnclosureLength = false,
|
UseEnclosureLength = false,
|
||||||
ParseSizeInDescription = false,
|
ParseSizeInDescription = false,
|
||||||
ParseSeedersInDescription = false,
|
ParseSeedersInDescription = false,
|
||||||
|
@ -60,6 +61,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
||||||
{
|
{
|
||||||
UseEZTVFormat = false,
|
UseEZTVFormat = false,
|
||||||
|
UseEnclosureUrl = false,
|
||||||
UseEnclosureLength = false,
|
UseEnclosureLength = false,
|
||||||
ParseSizeInDescription = true,
|
ParseSizeInDescription = true,
|
||||||
ParseSeedersInDescription = false,
|
ParseSeedersInDescription = false,
|
||||||
|
@ -77,6 +79,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
||||||
{
|
{
|
||||||
UseEZTVFormat = false,
|
UseEZTVFormat = false,
|
||||||
|
UseEnclosureUrl = false,
|
||||||
UseEnclosureLength = false,
|
UseEnclosureLength = false,
|
||||||
ParseSizeInDescription = true,
|
ParseSizeInDescription = true,
|
||||||
ParseSeedersInDescription = true,
|
ParseSeedersInDescription = true,
|
||||||
|
@ -96,6 +99,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
||||||
{
|
{
|
||||||
UseEZTVFormat = false,
|
UseEZTVFormat = false,
|
||||||
|
UseEnclosureUrl = true,
|
||||||
UseEnclosureLength = false,
|
UseEnclosureLength = false,
|
||||||
ParseSizeInDescription = false,
|
ParseSizeInDescription = false,
|
||||||
ParseSeedersInDescription = false,
|
ParseSeedersInDescription = false,
|
||||||
|
@ -113,6 +117,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
||||||
{
|
{
|
||||||
UseEZTVFormat = false,
|
UseEZTVFormat = false,
|
||||||
|
UseEnclosureUrl = true,
|
||||||
UseEnclosureLength = false,
|
UseEnclosureLength = false,
|
||||||
ParseSizeInDescription = true,
|
ParseSizeInDescription = true,
|
||||||
ParseSeedersInDescription = false,
|
ParseSeedersInDescription = false,
|
||||||
|
@ -130,6 +135,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
||||||
{
|
{
|
||||||
UseEZTVFormat = false,
|
UseEZTVFormat = false,
|
||||||
|
UseEnclosureUrl = false,
|
||||||
UseEnclosureLength = false,
|
UseEnclosureLength = false,
|
||||||
ParseSizeInDescription = false,
|
ParseSizeInDescription = false,
|
||||||
ParseSeedersInDescription = false,
|
ParseSeedersInDescription = false,
|
||||||
|
@ -137,6 +143,26 @@ namespace NzbDrone.Core.Test.IndexerTests.TorrentRssIndexerTests
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_detect_rss_settings_for_Doki()
|
||||||
|
{
|
||||||
|
_indexerSettings.AllowZeroSize = true;
|
||||||
|
|
||||||
|
GivenRecentFeedResponse("TorrentRss/Doki.xml");
|
||||||
|
|
||||||
|
var settings = Subject.Detect(_indexerSettings);
|
||||||
|
|
||||||
|
settings.ShouldBeEquivalentTo(new TorrentRssIndexerParserSettings
|
||||||
|
{
|
||||||
|
UseEZTVFormat = false,
|
||||||
|
UseEnclosureUrl = true,
|
||||||
|
UseEnclosureLength = false,
|
||||||
|
ParseSizeInDescription = false,
|
||||||
|
ParseSeedersInDescription = false,
|
||||||
|
SizeElementName = null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[Ignore("Cannot reliably reject unparseable titles")]
|
[Ignore("Cannot reliably reject unparseable titles")]
|
||||||
public void should_reject_rss_settings_for_AwesomeHD()
|
public void should_reject_rss_settings_for_AwesomeHD()
|
||||||
|
|
|
@ -6,6 +6,7 @@ namespace NzbDrone.Core.Indexers.TorrentRss
|
||||||
{
|
{
|
||||||
public bool UseEZTVFormat { get; set; }
|
public bool UseEZTVFormat { get; set; }
|
||||||
public bool ParseSeedersInDescription { get; set; }
|
public bool ParseSeedersInDescription { get; set; }
|
||||||
|
public bool UseEnclosureUrl { get; set; }
|
||||||
public bool UseEnclosureLength { get; set; }
|
public bool UseEnclosureLength { get; set; }
|
||||||
public bool ParseSizeInDescription { get; set; }
|
public bool ParseSizeInDescription { get; set; }
|
||||||
public string SizeElementName { get; set; }
|
public string SizeElementName { get; set; }
|
||||||
|
|
|
@ -42,6 +42,7 @@ namespace NzbDrone.Core.Indexers.TorrentRss
|
||||||
UseGuidInfoUrl = false,
|
UseGuidInfoUrl = false,
|
||||||
ParseSeedersInDescription = parserSettings.ParseSeedersInDescription,
|
ParseSeedersInDescription = parserSettings.ParseSeedersInDescription,
|
||||||
|
|
||||||
|
UseEnclosureUrl = parserSettings.UseEnclosureUrl,
|
||||||
UseEnclosureLength = parserSettings.UseEnclosureLength,
|
UseEnclosureLength = parserSettings.UseEnclosureLength,
|
||||||
ParseSizeInDescription = parserSettings.ParseSizeInDescription,
|
ParseSizeInDescription = parserSettings.ParseSizeInDescription,
|
||||||
SizeElementName = parserSettings.SizeElementName
|
SizeElementName = parserSettings.SizeElementName
|
||||||
|
|
|
@ -107,18 +107,31 @@ namespace NzbDrone.Core.Indexers.TorrentRss
|
||||||
|
|
||||||
private TorrentRssIndexerParserSettings GetGenericTorrentRssParserSettings(IndexerResponse response, TorrentRssIndexerSettings indexerSettings)
|
private TorrentRssIndexerParserSettings GetGenericTorrentRssParserSettings(IndexerResponse response, TorrentRssIndexerSettings indexerSettings)
|
||||||
{
|
{
|
||||||
var settings = new TorrentRssIndexerParserSettings
|
var parser = new TorrentRssParser
|
||||||
{
|
{
|
||||||
|
UseEnclosureUrl = true,
|
||||||
UseEnclosureLength = true,
|
UseEnclosureLength = true,
|
||||||
ParseSeedersInDescription = true
|
ParseSeedersInDescription = true
|
||||||
};
|
};
|
||||||
|
|
||||||
var parser = new TorrentRssParser
|
var item = parser.GetItems(response).FirstOrDefault();
|
||||||
|
if (item == null)
|
||||||
{
|
{
|
||||||
|
throw new UnsupportedFeedException("Empty feed, cannot check if feed is parsable.");
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = new TorrentRssIndexerParserSettings()
|
||||||
|
{
|
||||||
|
UseEnclosureUrl = true,
|
||||||
UseEnclosureLength = true,
|
UseEnclosureLength = true,
|
||||||
ParseSeedersInDescription = true
|
ParseSeedersInDescription = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (item.Element("enclosure") == null)
|
||||||
|
{
|
||||||
|
parser.UseEnclosureUrl = settings.UseEnclosureUrl = false;
|
||||||
|
}
|
||||||
|
|
||||||
var releases = ParseResponse(parser, response);
|
var releases = ParseResponse(parser, response);
|
||||||
ValidateReleases(releases, indexerSettings);
|
ValidateReleases(releases, indexerSettings);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
|
@ -19,6 +20,14 @@ namespace NzbDrone.Core.Indexers
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<XElement> GetItems(IndexerResponse indexerResponse)
|
||||||
|
{
|
||||||
|
var document = LoadXmlDocument(indexerResponse);
|
||||||
|
var items = GetItems(document);
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
protected override ReleaseInfo CreateNewReleaseInfo()
|
protected override ReleaseInfo CreateNewReleaseInfo()
|
||||||
{
|
{
|
||||||
return new TorrentInfo();
|
return new TorrentInfo();
|
||||||
|
|
Loading…
Add table
Reference in a new issue