mirror of https://github.com/Radarr/Radarr
Patch/onedr0p updates (#664)
* Remove button for require GP in PassThePopcorn * Fix AwesomeHD when search results yeild 1 torrent result * Add try/catch block
This commit is contained in:
parent
3170060f37
commit
0941247f63
|
@ -1,80 +0,0 @@
|
||||||
using System;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
using System.Xml.Serialization;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers.AwesomeHD
|
|
||||||
{
|
|
||||||
public class Torrent
|
|
||||||
{
|
|
||||||
[XmlElement(ElementName = "id")]
|
|
||||||
public string Id { get; set; }
|
|
||||||
[XmlElement(ElementName = "groupid")]
|
|
||||||
public string GroupId { get; set; }
|
|
||||||
[XmlElement(ElementName = "time")]
|
|
||||||
public DateTime Time { get; set; }
|
|
||||||
[XmlElement(ElementName = "userid")]
|
|
||||||
public string Userid { get; set; }
|
|
||||||
[XmlElement(ElementName = "size")]
|
|
||||||
public long Size { get; set; }
|
|
||||||
[XmlElement(ElementName = "snatched")]
|
|
||||||
public string Snatched { get; set; }
|
|
||||||
[XmlElement(ElementName = "seeders")]
|
|
||||||
public string Seeders { get; set; }
|
|
||||||
[XmlElement(ElementName = "leechers")]
|
|
||||||
public string Leechers { get; set; }
|
|
||||||
[XmlElement(ElementName = "releasegroup")]
|
|
||||||
public string Releasegroup { get; set; }
|
|
||||||
[XmlElement(ElementName = "resolution")]
|
|
||||||
public string Resolution { get; set; }
|
|
||||||
[XmlElement(ElementName = "media")]
|
|
||||||
public string Media { get; set; }
|
|
||||||
[XmlElement(ElementName = "format")]
|
|
||||||
public string Format { get; set; }
|
|
||||||
[XmlElement(ElementName = "encoding")]
|
|
||||||
public string Encoding { get; set; }
|
|
||||||
[XmlElement(ElementName = "audioformat")]
|
|
||||||
public string Audioformat { get; set; }
|
|
||||||
[XmlElement(ElementName = "audiobitrate")]
|
|
||||||
public string Audiobitrate { get; set; }
|
|
||||||
[XmlElement(ElementName = "audiochannels")]
|
|
||||||
public string Audiochannels { get; set; }
|
|
||||||
[XmlElement(ElementName = "subtitles")]
|
|
||||||
public string Subtitles { get; set; }
|
|
||||||
[XmlElement(ElementName = "encodestatus")]
|
|
||||||
public string Encodestatus { get; set; }
|
|
||||||
[XmlElement(ElementName = "freeleech")]
|
|
||||||
public string Freeleech { get; set; }
|
|
||||||
[XmlElement(ElementName = "cover")]
|
|
||||||
public string Cover { get; set; }
|
|
||||||
[XmlElement(ElementName = "smallcover")]
|
|
||||||
public string Smallcover { get; set; }
|
|
||||||
[XmlElement(ElementName = "year")]
|
|
||||||
public string Year { get; set; }
|
|
||||||
[XmlElement(ElementName = "name")]
|
|
||||||
public string Name { get; set; }
|
|
||||||
[XmlElement(ElementName = "imdb")]
|
|
||||||
public string Imdb { get; set; }
|
|
||||||
[XmlElement(ElementName = "type")]
|
|
||||||
public string Type { get; set; }
|
|
||||||
[XmlElement(ElementName = "plotoutline")]
|
|
||||||
public string Plotoutline { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SearchResults
|
|
||||||
{
|
|
||||||
[XmlElement(ElementName = "authkey")]
|
|
||||||
public string AuthKey { get; set; }
|
|
||||||
[XmlElement(ElementName = "torrent")]
|
|
||||||
public List<Torrent> Torrent { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AwesomeHDSearchResponse
|
|
||||||
{
|
|
||||||
[XmlElement(ElementName = "?xml")]
|
|
||||||
public string Xml { get; set; }
|
|
||||||
[XmlElement(ElementName = "searchresults")]
|
|
||||||
public SearchResults SearchResults { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -8,6 +8,7 @@ using NzbDrone.Core.Parser.Model;
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers.AwesomeHD
|
namespace NzbDrone.Core.Indexers.AwesomeHD
|
||||||
{
|
{
|
||||||
|
@ -31,38 +32,64 @@ namespace NzbDrone.Core.Indexers.AwesomeHD
|
||||||
indexerResponse.HttpResponse.StatusCode);
|
indexerResponse.HttpResponse.StatusCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hacky ¯\_(ツ)_/¯
|
try
|
||||||
XmlDocument doc = new XmlDocument();
|
|
||||||
doc.LoadXml(indexerResponse.Content);
|
|
||||||
|
|
||||||
var json = JsonConvert.SerializeXmlNode(doc);
|
|
||||||
|
|
||||||
Console.WriteLine(json);
|
|
||||||
|
|
||||||
var jsonResponse = JsonConvert.DeserializeObject<AwesomeHDSearchResponse>(json);
|
|
||||||
|
|
||||||
if (jsonResponse == null)
|
|
||||||
{
|
{
|
||||||
throw new IndexerException(indexerResponse, "Unexpected response from request");
|
var xdoc = XDocument.Parse(indexerResponse.Content);
|
||||||
}
|
var searchResults = xdoc.Descendants("searchresults").Select(x => new
|
||||||
|
|
||||||
foreach (var torrent in jsonResponse.SearchResults.Torrent)
|
|
||||||
{
|
|
||||||
var id = torrent.Id;
|
|
||||||
var title = $"{torrent.Name}.{torrent.Year}.{torrent.Resolution}.{torrent.Media}.{torrent.Encoding}.{torrent.Audioformat}-{torrent.Releasegroup}";
|
|
||||||
|
|
||||||
torrentInfos.Add(new TorrentInfo()
|
|
||||||
{
|
{
|
||||||
Guid = string.Format("AwesomeHD-{0}", id),
|
AuthKey = x.Element("authkey").Value,
|
||||||
Title = title,
|
}).FirstOrDefault();
|
||||||
Size = torrent.Size,
|
|
||||||
DownloadUrl = GetDownloadUrl(id, jsonResponse.SearchResults.AuthKey, _settings.Passkey),
|
var torrents = xdoc.Descendants("torrent")
|
||||||
InfoUrl = GetInfoUrl(torrent.GroupId, id),
|
.Select(x => new
|
||||||
Seeders = int.Parse(torrent.Seeders),
|
{
|
||||||
Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders),
|
Id = x.Element("id").Value,
|
||||||
PublishDate = torrent.Time.ToUniversalTime()
|
Name = x.Element("name").Value,
|
||||||
});
|
Year = x.Element("year").Value,
|
||||||
|
GroupId = x.Element("groupid").Value,
|
||||||
|
Time = DateTime.Parse(x.Element("time").Value),
|
||||||
|
UserId = x.Element("userid").Value,
|
||||||
|
Size = long.Parse(x.Element("size").Value),
|
||||||
|
Snatched = x.Element("snatched").Value,
|
||||||
|
Seeders = x.Element("seeders").Value,
|
||||||
|
Leechers = x.Element("leechers").Value,
|
||||||
|
ReleaseGroup = x.Element("releasegroup").Value,
|
||||||
|
Resolution = x.Element("resolution").Value,
|
||||||
|
Media = x.Element("media").Value,
|
||||||
|
Format = x.Element("format").Value,
|
||||||
|
Encoding = x.Element("encoding").Value,
|
||||||
|
AudioFormat = x.Element("audioformat").Value,
|
||||||
|
AudioBitrate = x.Element("audiobitrate").Value,
|
||||||
|
AudioChannels = x.Element("audiochannels").Value,
|
||||||
|
Subtitles = x.Element("subtitles").Value,
|
||||||
|
EncodeStatus = x.Element("encodestatus").Value,
|
||||||
|
Freeleech = x.Element("freeleech").Value,
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
foreach (var torrent in torrents)
|
||||||
|
{
|
||||||
|
var id = torrent.Id;
|
||||||
|
var title = $"{torrent.Name}.{torrent.Year}.{torrent.Resolution}.{torrent.Media}.{torrent.Encoding}.{torrent.AudioFormat}-{torrent.ReleaseGroup}";
|
||||||
|
|
||||||
|
torrentInfos.Add(new TorrentInfo()
|
||||||
|
{
|
||||||
|
Guid = string.Format("AwesomeHD-{0}", id),
|
||||||
|
Title = title,
|
||||||
|
Size = torrent.Size,
|
||||||
|
DownloadUrl = GetDownloadUrl(id, searchResults.AuthKey, _settings.Passkey),
|
||||||
|
InfoUrl = GetInfoUrl(torrent.GroupId, id),
|
||||||
|
Seeders = int.Parse(torrent.Seeders),
|
||||||
|
Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders),
|
||||||
|
PublishDate = torrent.Time.ToUniversalTime()
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (XmlException)
|
||||||
|
{
|
||||||
|
throw new IndexerException(indexerResponse,
|
||||||
|
"An error occurred while processing feed, feed invalid");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return torrentInfos.OrderByDescending(o => ((dynamic)o).Seeders).ToArray();
|
return torrentInfos.OrderByDescending(o => ((dynamic)o).Seeders).ToArray();
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,8 +47,8 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
|
||||||
[FieldDefinition(6, Label = "Require Approved", Type = FieldType.Checkbox, HelpText = "Require staff-approval for releases to be accepted.")]
|
[FieldDefinition(6, Label = "Require Approved", Type = FieldType.Checkbox, HelpText = "Require staff-approval for releases to be accepted.")]
|
||||||
public bool Approved { get; set; }
|
public bool Approved { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(7, Label = "Require Golden", Type = FieldType.Checkbox, HelpText = "Require Golden Popcorn-releases for releases to be accepted.")]
|
//[FieldDefinition(7, Label = "Require Golden", Type = FieldType.Checkbox, HelpText = "Require Golden Popcorn-releases for releases to be accepted.")]
|
||||||
public bool RequireGolden { get; set; }
|
//public bool RequireGolden { get; set; }
|
||||||
|
|
||||||
public NzbDroneValidationResult Validate()
|
public NzbDroneValidationResult Validate()
|
||||||
{
|
{
|
||||||
|
|
|
@ -636,7 +636,6 @@
|
||||||
<Compile Include="Indexers\EzrssTorrentRssParser.cs" />
|
<Compile Include="Indexers\EzrssTorrentRssParser.cs" />
|
||||||
<Compile Include="Indexers\FetchAndParseRssService.cs" />
|
<Compile Include="Indexers\FetchAndParseRssService.cs" />
|
||||||
<Compile Include="Indexers\AwesomeHD\AwesomeHD.cs" />
|
<Compile Include="Indexers\AwesomeHD\AwesomeHD.cs" />
|
||||||
<Compile Include="Indexers\AwesomeHD\AwesomeHDApi.cs" />
|
|
||||||
<Compile Include="Indexers\AwesomeHD\AwesomeHDRequestGenerator.cs" />
|
<Compile Include="Indexers\AwesomeHD\AwesomeHDRequestGenerator.cs" />
|
||||||
<Compile Include="Indexers\AwesomeHD\AwesomeHDSettings.cs" />
|
<Compile Include="Indexers\AwesomeHD\AwesomeHDSettings.cs" />
|
||||||
<Compile Include="Indexers\PassThePopcorn\PassThePopcorn.cs" />
|
<Compile Include="Indexers\PassThePopcorn\PassThePopcorn.cs" />
|
||||||
|
|
Loading…
Reference in New Issue