mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-10-02 16:52:04 +02:00
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"status": "success",
|
||||
"response": {
|
||||
"currentPage": 1,
|
||||
"pages": 1,
|
||||
"results": [
|
||||
{
|
||||
"groupId": 2497,
|
||||
"groupName": "Singin' in the Rain",
|
||||
"artist": "Gene Kelly & Stanley Donen",
|
||||
"cover": "https:\/\/www.themoviedb.org\/t\/p\/original\/g2AaJDC2vSRcqHSDH29642xmQd.jpg",
|
||||
"tags": [ "comedy", "musical", "romance" ],
|
||||
"bookmarked": false,
|
||||
"vanityHouse": false,
|
||||
"groupYear": 1952,
|
||||
"releaseType": null,
|
||||
"groupTime": "1671129449",
|
||||
"maxSize": 57473058680,
|
||||
"totalSnatched": 25,
|
||||
"totalSeeders": 9,
|
||||
"totalLeechers": 0,
|
||||
"torrents": [
|
||||
{
|
||||
"torrentId": 3599,
|
||||
"editionId": 1,
|
||||
"artists": [
|
||||
{
|
||||
"id": 126,
|
||||
"name": "Gene Kelly",
|
||||
"aliasid": 127
|
||||
},
|
||||
{
|
||||
"id": 125,
|
||||
"name": "Stanley Donen",
|
||||
"aliasid": 126
|
||||
}
|
||||
],
|
||||
"remastered": false,
|
||||
"remasterYear": 0,
|
||||
"remasterCatalogueNumber": "",
|
||||
"remasterTitle": "",
|
||||
"media": "1080p",
|
||||
"encoding": "",
|
||||
"format": "",
|
||||
"hasLog": false,
|
||||
"logScore": 0,
|
||||
"hasCue": false,
|
||||
"scene": false,
|
||||
"vanityHouse": false,
|
||||
"fileCount": 1,
|
||||
"time": "2017-09-10 11:47:27",
|
||||
"size": 24724893991,
|
||||
"snatches": 14,
|
||||
"seeders": 1,
|
||||
"leechers": 0,
|
||||
"isFreeleech": true,
|
||||
"isNeutralLeech": false,
|
||||
"isPersonalFreeleech": false,
|
||||
"canUseToken": false,
|
||||
"hasSnatched": false
|
||||
},
|
||||
{
|
||||
"torrentId": 45068,
|
||||
"editionId": 2,
|
||||
"artists": [
|
||||
{
|
||||
"id": 126,
|
||||
"name": "Gene Kelly",
|
||||
"aliasid": 127
|
||||
},
|
||||
{
|
||||
"id": 125,
|
||||
"name": "Stanley Donen",
|
||||
"aliasid": 126
|
||||
}
|
||||
],
|
||||
"remastered": false,
|
||||
"remasterYear": 0,
|
||||
"remasterCatalogueNumber": "",
|
||||
"remasterTitle": "",
|
||||
"media": "2160p",
|
||||
"encoding": "",
|
||||
"format": "",
|
||||
"hasLog": false,
|
||||
"logScore": 0,
|
||||
"hasCue": false,
|
||||
"scene": false,
|
||||
"vanityHouse": false,
|
||||
"fileCount": 1,
|
||||
"time": "2022-12-15 19:37:29",
|
||||
"size": 57473058680,
|
||||
"snatches": 6,
|
||||
"seeders": 8,
|
||||
"leechers": 0,
|
||||
"isFreeleech": true,
|
||||
"isNeutralLeech": false,
|
||||
"isPersonalFreeleech": false,
|
||||
"canUseToken": false,
|
||||
"hasSnatched": false
|
||||
},
|
||||
{
|
||||
"torrentId": 2726,
|
||||
"editionId": 3,
|
||||
"artists": [
|
||||
{
|
||||
"id": 126,
|
||||
"name": "Gene Kelly",
|
||||
"aliasid": 127
|
||||
},
|
||||
{
|
||||
"id": 125,
|
||||
"name": "Stanley Donen",
|
||||
"aliasid": 126
|
||||
}
|
||||
],
|
||||
"remastered": false,
|
||||
"remasterYear": 0,
|
||||
"remasterCatalogueNumber": "",
|
||||
"remasterTitle": "",
|
||||
"media": "DVD-R",
|
||||
"encoding": "",
|
||||
"format": "",
|
||||
"hasLog": false,
|
||||
"logScore": 0,
|
||||
"hasCue": false,
|
||||
"scene": false,
|
||||
"vanityHouse": false,
|
||||
"fileCount": 37,
|
||||
"time": "2017-08-26 14:58:58",
|
||||
"size": 10350032896,
|
||||
"snatches": 5,
|
||||
"seeders": 0,
|
||||
"leechers": 0,
|
||||
"isFreeleech": true,
|
||||
"isNeutralLeech": false,
|
||||
"isPersonalFreeleech": false,
|
||||
"canUseToken": false,
|
||||
"hasSnatched": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@@ -29,7 +29,7 @@ namespace NzbDrone.Core.Test.IndexerTests.OrpheusTests
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task should_parse_recent_feed_from_GazelleGames()
|
||||
public async Task should_parse_recent_feed_from_Orpheus()
|
||||
{
|
||||
var recentFeed = ReadAllText(@"Files/Indexers/Orpheus/recentfeed.json");
|
||||
|
||||
|
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using FluentAssertions;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Indexers.Definitions;
|
||||
using NzbDrone.Core.Indexers.Gazelle;
|
||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Test.IndexerTests.SecretCinemaTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class SecretCinemaFixture : CoreTest<SecretCinema>
|
||||
{
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
Subject.Definition = new IndexerDefinition()
|
||||
{
|
||||
Name = "SecretCinema",
|
||||
Settings = new GazelleSettings() { Username = "somekey", Password = "somekey" }
|
||||
};
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task should_parse_recent_feed_from_SecretCinema()
|
||||
{
|
||||
var recentFeed = ReadAllText(@"Files/Indexers/SecretCinema/recentfeed.json");
|
||||
|
||||
Mocker.GetMock<IIndexerHttpClient>()
|
||||
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
|
||||
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader { { "Content-Type", "application/json" } }, new CookieCollection(), recentFeed)));
|
||||
|
||||
var releases = (await Subject.Fetch(new BasicSearchCriteria { Categories = new int[] { 2000 } })).Releases;
|
||||
|
||||
releases.Should().HaveCount(3);
|
||||
releases.First().Should().BeOfType<GazelleInfo>();
|
||||
|
||||
var torrentInfo = releases.First() as GazelleInfo;
|
||||
|
||||
torrentInfo.Title.Should().Be("Singin' in the Rain (1952) 2160p");
|
||||
torrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
|
||||
torrentInfo.DownloadUrl.Should().Be("https://secret-cinema.pw/torrents.php?action=download&useToken=0&id=45068");
|
||||
torrentInfo.InfoUrl.Should().Be("https://secret-cinema.pw/torrents.php?id=2497&torrentid=45068");
|
||||
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
|
||||
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
|
||||
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2022-12-15 19:37:29"));
|
||||
torrentInfo.Size.Should().Be(57473058680);
|
||||
torrentInfo.InfoHash.Should().Be(null);
|
||||
torrentInfo.MagnetUrl.Should().Be(null);
|
||||
torrentInfo.Peers.Should().Be(8);
|
||||
torrentInfo.Seeders.Should().Be(8);
|
||||
torrentInfo.ImdbId.Should().Be(0);
|
||||
torrentInfo.TmdbId.Should().Be(0);
|
||||
torrentInfo.TvdbId.Should().Be(0);
|
||||
torrentInfo.Languages.Should().HaveCount(0);
|
||||
torrentInfo.Subs.Should().HaveCount(0);
|
||||
torrentInfo.DownloadVolumeFactor.Should().Be(0);
|
||||
torrentInfo.UploadVolumeFactor.Should().Be(1);
|
||||
}
|
||||
}
|
||||
}
|
@@ -2,24 +2,16 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using FluentValidation;
|
||||
using FluentValidation.Results;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Annotations;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers.Exceptions;
|
||||
using NzbDrone.Core.Indexers.Gazelle;
|
||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
namespace NzbDrone.Core.Indexers.Definitions
|
||||
{
|
||||
@@ -113,7 +105,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
||||
|
||||
// in SC movies, artist=director and GroupName=title
|
||||
var artist = WebUtility.HtmlDecode(result.Artist);
|
||||
var album = WebUtility.HtmlDecode(result.GroupName);
|
||||
var title = WebUtility.HtmlDecode(result.GroupName);
|
||||
|
||||
var release = new GazelleInfo()
|
||||
@@ -131,6 +122,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
||||
Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders),
|
||||
PublishDate = torrent.Time.ToUniversalTime(),
|
||||
Scene = torrent.Scene,
|
||||
DownloadVolumeFactor = torrent.IsFreeLeech || torrent.IsNeutralLeech || torrent.IsPersonalFreeLeech ? 0 : 1,
|
||||
UploadVolumeFactor = torrent.IsNeutralLeech ? 0 : 1
|
||||
};
|
||||
|
||||
var category = torrent.Category;
|
||||
@@ -147,7 +140,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
||||
{
|
||||
// Remove director from title
|
||||
// SC API returns no more useful information than this
|
||||
release.Title = $"{result.GroupName} ({result.GroupYear}) {torrent.Media}";
|
||||
release.Title = $"{title} ({result.GroupYear}) {torrent.Media}";
|
||||
|
||||
// Replace media formats with standards
|
||||
release.Title = Regex.Replace(release.Title, "BDMV", "COMPLETE BLURAY", RegexOptions.IgnoreCase);
|
||||
@@ -156,7 +149,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
||||
else
|
||||
{
|
||||
// SC API currently doesn't return anything but title.
|
||||
release.Title = $"{result.Artist} - {result.GroupName} ({result.GroupYear}) [{torrent.Format} {torrent.Encoding}] [{torrent.Media}]";
|
||||
release.Title = $"{artist} - {title} ({result.GroupYear}) [{torrent.Format} {torrent.Encoding}] [{torrent.Media}]";
|
||||
}
|
||||
|
||||
if (torrent.HasCue)
|
||||
@@ -184,6 +177,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
||||
Files = result.FileCount,
|
||||
Grabs = result.Snatches,
|
||||
PublishDate = DateTimeOffset.FromUnixTimeSeconds(ParseUtil.CoerceLong(result.GroupTime)).UtcDateTime,
|
||||
DownloadVolumeFactor = result.IsFreeLeech || result.IsNeutralLeech || result.IsPersonalFreeLeech ? 0 : 1,
|
||||
UploadVolumeFactor = result.IsNeutralLeech ? 0 : 1
|
||||
};
|
||||
|
||||
var category = result.Category;
|
||||
|
Reference in New Issue
Block a user