Browse Source

fix trakt list sync (#2540)

pull/2541/head
Jason Dove 3 months ago committed by GitHub
parent
commit
7ae028e2e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 43
      ErsatzTV.Infrastructure/Trakt/TraktApiClient.cs
  3. 24
      ErsatzTV/Startup.cs

1
CHANGELOG.md

@ -34,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). @@ -34,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- VAAPI: fix scaling image-based subtitles (e.g. dvdsub)
- Fix HLS Segmenter (fmp4) on Windows
- Playback troubleshooting: wait for at least 2 initial segments (up to configured initial segment count) to reduce stalls
- Fix Trakt List sync
### Changed
- Do not use graphics engine for single, permanent watermark

43
ErsatzTV.Infrastructure/Trakt/TraktApiClient.cs

@ -5,31 +5,22 @@ using ErsatzTV.Core.Trakt; @@ -5,31 +5,22 @@ using ErsatzTV.Core.Trakt;
using ErsatzTV.Infrastructure.Trakt.Models;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Refit;
namespace ErsatzTV.Infrastructure.Trakt;
public class TraktApiClient : ITraktApiClient
public class TraktApiClient(
ITraktApi traktApi,
IOptions<TraktConfiguration> traktConfiguration,
ILogger<TraktApiClient> logger)
: ITraktApiClient
{
private readonly ILogger<TraktApiClient> _logger;
private readonly IOptions<TraktConfiguration> _traktConfiguration;
public TraktApiClient(
IOptions<TraktConfiguration> traktConfiguration,
ILogger<TraktApiClient> logger)
{
_traktConfiguration = traktConfiguration;
_logger = logger;
}
public async Task<Either<BaseError, TraktList>> GetUserList(string user, string list)
{
try
{
TraktListResponse response = string.Equals(user, "official", StringComparison.OrdinalIgnoreCase)
? await JsonService().GetOfficialList(_traktConfiguration.Value.ClientId, list)
: await JsonService().GetUserList(_traktConfiguration.Value.ClientId, user, list);
? await traktApi.GetOfficialList(traktConfiguration.Value.ClientId, list)
: await traktApi.GetUserList(traktConfiguration.Value.ClientId, user, list);
return new TraktList
{
@ -47,7 +38,7 @@ public class TraktApiClient : ITraktApiClient @@ -47,7 +38,7 @@ public class TraktApiClient : ITraktApiClient
}
catch (Exception ex)
{
_logger.LogError(ex, "Error getting trakt list");
logger.LogError(ex, "Error getting trakt list");
return BaseError.New(ex.Message);
}
}
@ -59,8 +50,8 @@ public class TraktApiClient : ITraktApiClient @@ -59,8 +50,8 @@ public class TraktApiClient : ITraktApiClient
var result = new List<TraktListItemWithGuids>();
List<TraktListItemResponse> apiItems = string.Equals(user, "official", StringComparison.OrdinalIgnoreCase)
? await JsonService().GetOfficialListItems(_traktConfiguration.Value.ClientId, list)
: await JsonService().GetUserListItems(_traktConfiguration.Value.ClientId, user, list);
? await traktApi.GetOfficialListItems(traktConfiguration.Value.ClientId, list)
: await traktApi.GetUserListItems(traktConfiguration.Value.ClientId, user, list);
foreach (TraktListItemResponse apiItem in apiItems)
{
@ -119,23 +110,11 @@ public class TraktApiClient : ITraktApiClient @@ -119,23 +110,11 @@ public class TraktApiClient : ITraktApiClient
}
catch (Exception ex)
{
_logger.LogError(ex, "Error getting trakt list items");
logger.LogError(ex, "Error getting trakt list items");
return BaseError.New(ex.Message);
}
}
private static ITraktApi JsonService() =>
RestService.For<ITraktApi>(
"https://api.trakt.tv",
new RefitSettings
{
ContentSerializer = new NewtonsoftJsonContentSerializer(
new JsonSerializerSettings
{
ContractResolver = new SnakeCasePropertyNamesContractResolver()
})
});
private static List<string> GuidsFromIds(TraktListItemIds ids)
{
var result = new List<string>();

24
ErsatzTV/Startup.cs

@ -352,10 +352,10 @@ public class Startup @@ -352,10 +352,10 @@ public class Startup
Console.OutputEncoding = Encoding.UTF8;
Log.Logger.Information(
"ErsatzTV version {Version}",
Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
?.InformationalVersion ?? "unknown");
string etvVersion = Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
?.InformationalVersion ?? "unknown";
Log.Logger.Information("ErsatzTV version {Version}", etvVersion);
Log.Logger.Warning(
"Give feedback at {GitHub} or {Discord}",
@ -488,8 +488,20 @@ public class Startup @@ -488,8 +488,20 @@ public class Startup
services.AddRefitClient<IPlexTvApi>()
.ConfigureHttpClient(c => c.BaseAddress = new Uri("https://plex.tv/api/v2"));
services.AddRefitClient<ITraktApi>()
.ConfigureHttpClient(c => c.BaseAddress = new Uri("https://api.trakt.tv"));
services.AddRefitClient<ITraktApi>(
new RefitSettings
{
ContentSerializer = new NewtonsoftJsonContentSerializer(
new JsonSerializerSettings
{
ContractResolver = new SnakeCasePropertyNamesContractResolver()
})
})
.ConfigureHttpClient(c =>
{
c.BaseAddress = new Uri("https://api.trakt.tv");
c.DefaultRequestHeaders.Add("User-Agent", $"ErsatzTV/{etvVersion}");
});
services.Configure<TraktConfiguration>(Configuration.GetSection("Trakt"));

Loading…
Cancel
Save