1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-09-11 03:52:33 +02:00

New: Avoid cache on IMDb user lists

This commit is contained in:
Qstick 2020-09-24 22:30:20 -04:00
parent 6d4543f1df
commit 7e5d5fe29e
5 changed files with 67 additions and 5 deletions

View File

@ -72,7 +72,7 @@ public override IImportListRequestGenerator GetRequestGenerator()
public override IParseImportListResponse GetParser()
{
return new RadarrList2Parser();
return new IMDbListParser(Settings);
}
}
}

View File

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.ImportLists.ImportListMovies;
using NzbDrone.Core.MetadataSource.SkyHook.Resource;
namespace NzbDrone.Core.ImportLists.RadarrList2.IMDbList
{
public class IMDbListParser : RadarrList2Parser
{
private readonly IMDbListSettings _settings;
public IMDbListParser(IMDbListSettings settings)
: base()
{
_settings = settings;
}
public override IList<ImportListMovie> ParseResponse(ImportListResponse importListResponse)
{
var importResponse = importListResponse;
var movies = new List<ImportListMovie>();
if (!PreProcess(importResponse))
{
return movies;
}
if (_settings.ListId.StartsWith("ls", StringComparison.OrdinalIgnoreCase))
{
//Parse TSV response from IMDB export
var row = importResponse.Content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
movies = row.Skip(1).SelectList(m => new ImportListMovie { ImdbId = m.Split(',')[1] });
return movies;
}
else
{
var jsonResponse = JsonConvert.DeserializeObject<List<MovieResource>>(importResponse.Content);
if (jsonResponse == null)
{
return movies;
}
return jsonResponse.SelectList(m => new ImportListMovie { TmdbId = m.TmdbId });
}
}
}
}

View File

@ -1,4 +1,5 @@
using NzbDrone.Common.Http;
using System;
using NzbDrone.Common.Http;
namespace NzbDrone.Core.ImportLists.RadarrList2.IMDbList
{
@ -8,8 +9,15 @@ public class IMDbListRequestGenerator : RadarrList2RequestGeneratorBase
protected override HttpRequest GetHttpRequest()
{
//Use IMDb list Export for user lists to bypass RadarrAPI caching
if (Settings.ListId.StartsWith("ls", StringComparison.OrdinalIgnoreCase))
{
return new HttpRequest($"https://www.imdb.com/list/{Settings.ListId}/export", new HttpAccept("*/*"));
}
return RequestBuilder.Create()
.SetSegment("route", $"list/imdb/{Settings.ListId}")
.Accept(HttpAccept.Json)
.Build();
}
}

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.ImportLists.RadarrList2
{
public class RadarrList2Parser : IParseImportListResponse
{
public IList<ImportListMovie> ParseResponse(ImportListResponse importListResponse)
public virtual IList<ImportListMovie> ParseResponse(ImportListResponse importListResponse)
{
var importResponse = importListResponse;

View File

@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using NLog;
using NzbDrone.Common.Http;
@ -18,7 +18,7 @@ public virtual ImportListPageableRequestChain GetMovies()
var httpRequest = GetHttpRequest();
var request = new ImportListRequest(httpRequest.Url.ToString(), HttpAccept.Json);
var request = new ImportListRequest(httpRequest.Url.ToString(), new HttpAccept(httpRequest.Headers.Accept));
request.HttpRequest.SuppressHttpError = true;