2020-01-26 22:42:44 +00:00
|
|
|
using System.Collections.Generic;
|
2021-11-22 21:14:04 +00:00
|
|
|
using System.Net.Http;
|
2020-01-26 22:42:44 +00:00
|
|
|
using NzbDrone.Common.Http;
|
2020-08-09 03:55:55 +00:00
|
|
|
using NzbDrone.Core.Notifications.Trakt;
|
2020-01-26 22:42:44 +00:00
|
|
|
|
2020-09-04 02:50:56 +00:00
|
|
|
namespace NzbDrone.Core.ImportLists.Trakt.Popular
|
2020-01-26 22:42:44 +00:00
|
|
|
{
|
2020-09-04 02:50:56 +00:00
|
|
|
public class TraktPopularRequestGenerator : IImportListRequestGenerator
|
2020-01-26 22:42:44 +00:00
|
|
|
{
|
2020-08-09 03:55:55 +00:00
|
|
|
private readonly ITraktProxy _traktProxy;
|
2020-01-26 22:42:44 +00:00
|
|
|
public TraktPopularSettings Settings { get; set; }
|
|
|
|
|
2020-08-09 03:55:55 +00:00
|
|
|
public TraktPopularRequestGenerator(ITraktProxy traktProxy)
|
2020-01-26 22:42:44 +00:00
|
|
|
{
|
2020-08-09 03:55:55 +00:00
|
|
|
_traktProxy = traktProxy;
|
2020-01-26 22:42:44 +00:00
|
|
|
}
|
|
|
|
|
2020-09-04 02:50:56 +00:00
|
|
|
public virtual ImportListPageableRequestChain GetMovies()
|
2020-01-26 22:42:44 +00:00
|
|
|
{
|
2020-09-04 02:50:56 +00:00
|
|
|
var pageableRequests = new ImportListPageableRequestChain();
|
2020-01-26 22:42:44 +00:00
|
|
|
|
|
|
|
pageableRequests.Add(GetMoviesRequest());
|
|
|
|
|
|
|
|
return pageableRequests;
|
|
|
|
}
|
|
|
|
|
2020-09-04 02:50:56 +00:00
|
|
|
private IEnumerable<ImportListRequest> GetMoviesRequest()
|
2020-01-26 22:42:44 +00:00
|
|
|
{
|
2020-08-09 03:55:55 +00:00
|
|
|
var link = string.Empty;
|
2020-01-26 22:42:44 +00:00
|
|
|
|
|
|
|
var filtersAndLimit = $"?years={Settings.Years}&genres={Settings.Genres.ToLower()}&ratings={Settings.Rating}&certifications={Settings.Certification.ToLower()}&limit={Settings.Limit}{Settings.TraktAdditionalParameters}";
|
|
|
|
|
|
|
|
switch (Settings.TraktListType)
|
|
|
|
{
|
|
|
|
case (int)TraktPopularListType.Trending:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/trending";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.Popular:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/popular";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.Anticipated:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/anticipated";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.BoxOffice:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/boxoffice";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.TopWatchedByWeek:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/watched/weekly";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.TopWatchedByMonth:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/watched/monthly";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.TopWatchedByYear:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/watched/yearly";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.TopWatchedByAllTime:
|
2021-03-01 02:09:15 +00:00
|
|
|
link += "movies/watched/all";
|
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.RecommendedByWeek:
|
|
|
|
link += "movies/recommended/weekly";
|
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.RecommendedByMonth:
|
|
|
|
link += "movies/recommended/monthly";
|
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.RecommendedByYear:
|
|
|
|
link += "movies/recommended/yearly";
|
|
|
|
break;
|
|
|
|
case (int)TraktPopularListType.RecommendedByAllTime:
|
|
|
|
link += "movies/recommended/yearly";
|
2020-01-26 22:42:44 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2021-03-01 02:09:15 +00:00
|
|
|
link += filtersAndLimit;
|
|
|
|
|
2021-11-22 21:14:04 +00:00
|
|
|
var request = new ImportListRequest(_traktProxy.BuildTraktRequest(link, HttpMethod.Get, Settings.AccessToken));
|
2020-01-26 22:42:44 +00:00
|
|
|
|
|
|
|
yield return request;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|