Fixed: (PassThePopcorn) Disable grouping, add pagination and use STJson

pull/1597/head
Bogdan 2 years ago
parent 3fbc2912f0
commit 7700014ceb

@ -1,7 +1,5 @@
using System.Collections.Generic;
using NLog;
using NzbDrone.Common.Cache;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Messaging.Events;
@ -10,20 +8,19 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
public class PassThePopcorn : TorrentIndexerBase<PassThePopcornSettings>
{
public override string Name => "PassThePopcorn";
public override string[] IndexerUrls => new string[] { "https://passthepopcorn.me" };
public override string[] IndexerUrls => new[] { "https://passthepopcorn.me" };
public override string Description => "PassThePopcorn (PTP) is a Private site for MOVIES / TV";
public override DownloadProtocol Protocol => DownloadProtocol.Torrent;
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override bool SupportsRss => true;
public override bool SupportsSearch => true;
public override bool SupportsPagination => true;
public override int PageSize => 50;
public override IndexerCapabilities Capabilities => SetCapabilities();
public override int PageSize => 50;
public PassThePopcorn(IIndexerHttpClient httpClient,
IEventAggregator eventAggregator,
ICacheManager cacheManager,
IIndexerStatusService indexerStatusService,
IConfigService configService,
Logger logger)
@ -33,7 +30,7 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
public override IIndexerRequestGenerator GetRequestGenerator()
{
return new PassThePopcornRequestGenerator()
return new PassThePopcornRequestGenerator
{
Settings = Settings,
HttpClient = _httpClient,

@ -39,11 +39,6 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
public List<string> Tags { get; set; }
public List<Director> Directors { get; set; }
public string ImdbId { get; set; }
public int TotalLeechers { get; set; }
public int TotalSeeders { get; set; }
public int TotalSnatched { get; set; }
public long MaxSize { get; set; }
public string LastUploadTime { get; set; }
public List<Torrent> Torrents { get; set; }
}

@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.Net;
using Newtonsoft.Json;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Parser.Model;
@ -57,7 +57,7 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
throw new IndexerException(indexerResponse, $"Unexpected response header {indexerResponse.HttpResponse.Headers.ContentType} from API request, expected {HttpAccept.Json.Value}");
}
var jsonResponse = JsonConvert.DeserializeObject<PassThePopcornResponse>(indexerResponse.Content);
var jsonResponse = STJson.Deserialize<PassThePopcornResponse>(indexerResponse.Content);
if (jsonResponse.TotalResults == "0" ||
jsonResponse.TotalResults.IsNullOrWhiteSpace() ||
jsonResponse.Movies == null)
@ -94,13 +94,14 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
// Only add approved torrents
try
{
torrentInfos.Add(new TorrentInfo()
torrentInfos.Add(new TorrentInfo
{
Guid = string.Format("PassThePopcorn-{0}", id),
Title = title,
Size = long.Parse(torrent.Size),
DownloadUrl = GetDownloadUrl(id, jsonResponse.AuthKey, jsonResponse.PassKey),
InfoUrl = GetInfoUrl(result.GroupId, id),
Grabs = int.Parse(torrent.Snatched),
Seeders = int.Parse(torrent.Seeders),
Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders),
PublishDate = torrent.UploadTime.ToUniversalTime(),
@ -128,8 +129,7 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
}
}
return
torrentInfos;
return torrentInfos;
}
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }

@ -24,11 +24,11 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace())
{
pageableRequests.Add(GetRequest(searchCriteria.FullImdbId));
pageableRequests.Add(GetRequest(searchCriteria.FullImdbId, searchCriteria));
}
else
{
pageableRequests.Add(GetRequest(string.Format("{0}", searchCriteria.SearchTerm)));
pageableRequests.Add(GetRequest($"{searchCriteria.SearchTerm}", searchCriteria));
}
return pageableRequests;
@ -37,18 +37,25 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
public Func<IDictionary<string, string>> GetCookies { get; set; }
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
private IEnumerable<IndexerRequest> GetRequest(string searchParameters)
private IEnumerable<IndexerRequest> GetRequest(string searchParameters, SearchCriteriaBase searchCriteria)
{
var queryParams = new NameValueCollection
{
{ "action", "advanced" },
{ "json", "noredirect" },
{ "grouping", "0" },
{ "searchstr", searchParameters }
};
if (searchCriteria.Limit is > 0 && searchCriteria.Offset is > 0)
{
var page = (int)(searchCriteria.Offset / searchCriteria.Limit) + 1;
queryParams.Set("page", page.ToString());
}
if (Settings.FreeleechOnly)
{
queryParams.Add("freetorrent", "1");
queryParams.Set("freetorrent", "1");
}
var request =
@ -91,7 +98,7 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
{
var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(GetRequest(string.Format("{0}", searchCriteria.SearchTerm)));
pageableRequests.Add(GetRequest($"{searchCriteria.SearchTerm}", searchCriteria));
return pageableRequests;
}

Loading…
Cancel
Save