Trakt.NET Versions Save

A .NET wrapper library with which developers can build .NET applications that integrate with the Trakt.tv API and access its features and data.

v1.4.0

1 month ago

What's Changed

New Features

var pagedParameters = new TraktPagedParameters(1, 10); // page = 1, items per page = 10
TraktPagedResponse<ITraktTrendingShow> trendingShowsResponse = await client.Shows.GetTrendingShowsAsync(null, pagedParameters);

// getting the next page, the old way
pagedParameters.Page = pagedParameters.Page + 1;
trendingShowsResponse = await client.Shows.GetTrendingShowsAsync(extendedInfo, pagedParameters);

// getting the next page, the new way
trendingShowsResponse = await trendingShowsResponse.GetNextPageAsync();

// NOTE: The old way still works.
  • Add possibility to serialize objects as JSON with indentation (Issue 401)

The output of

ITraktShow show = ...; // Show: The Last of Us
string json = await TraktSerializationService.SerializeAsync(show);
Console.WriteLine(json);

looks like this:

{"title":"The Last of Us","year":2023,"ids":{"trakt":158947,"slug":"the-last-of-us","tvdb":392256,"imdb":"tt3581920","tmdb":100088}}

TraktSerializationService.SerializeAsync() has a new optional boolean parameter indentation, which indents the JSON output like this:

string json = await TraktSerializationService.SerializeAsync(show, indentation: true);
{
    "title":"The Last of Us",
    "year":2023,
    "ids":
    {
        "trakt":158947,
        "slug":"the-last-of-us",
        "tvdb":392256,
        "imdb":"tt3581920",
        "tmdb":100088
    }
}

Added

  • Support for new Trakt API Endpoints
    • Add support for "movies/recommended/{period}" GET request (Issue 359)
    • Add support for "people/updates/{start_date}" GET request (Issue 360)
    • Add support for "people/updates/id/{start_date}" GET request (Issue 361)
    • Add support for "shows/recommended/{period}" GET request (Issue 362)
    • Add support for "shows/{id}/certifications" GET request (Issue 363)
    • Add support for "movies/{id}/studios" GET request (Issue 407)
    • Add support for "shows/{id}/studios" GET request (Issue 408)
    • Add support for "users/{id}/lists/{list_id}/items/{list_item_id}" PUT request (Issue 484)
    • Add support for "sync/watchlist/{list_item_id}" PUT request (Issue 485)
    • Add support for "sync/favorites/{list_item_id}" PUT request (Issue 486)
    • Add support for "lists/{id}/like" POST request (Issue 585)
    • Add support for "lists/{id}/like" DELETE request (Issue 586)
    • Add support for "users/{id}/notes/{type}" GET request (Issue 597)
    • Add support for "sync/watchlist" PUT request (Issue 599)
    • Add support for "sync/favorites" PUT request (Issue 600)
    • Add support for "movies/{id}/refresh" POST request (Issue 630)
    • Add support for "shows/{id}/refresh" POST request (Issue 631)
    • Add support for "notes" POST request (Issue 632)
    • Add support for "notes/{id}" GET request (Issue 633)
    • Add support for "notes/{id}" PUT request (Issue 634)
    • Add support for "notes/{id}" DELETE request (Issue 635)
    • Add support for "notes/{id}/item" GET request (Issue 636)
    • Add support for "users/{id}/watchlist/comments/{sort}" GET request (Issue 638)
    • Add support for "users/{id}/favorites/comments/{sort}" GET request (Issue 639)
  • Missing Properties in JSON objects
    • Update properties in ITraktSyncLastActivities (Issue 364)
    • Add support for property "updated_at" in ITraktPerson (Issue 406)
    • Update properties in ITraktConnections (Issue 440)
    • Add properties for "vip" and "comments" in TraktExtendedInfo (Issue 460)
    • Add properties for "share_link" and "type" in ITraktList (Issue 462)
    • Add property for "user_stats" in ITraktComment (Issue 464)
    • Add property for "country" in ITraktTranslation (Issue 468)
    • Add property for "title" in ITraktSeasonProgress (Issue 475)
    • Add missing properties in ITraktSyncLastActivities (Issue 478)
    • Add property for "list" in ITraktListItemsReorderPostResponse (Issue 479)
    • Add property for "id" in ITraktRecommendation (Issue 480)
    • Add property for "rank" in ITraktUserSavedFilter (Issue 481)
    • Add property for "user" in TraktHiddenItemType (Issue 482)
    • Add property for "user" in ITraktUserHiddenItem (Issue 483)
    • Add properties for "country" and "ids" in ITraktNetwork (Issue 519)
    • Add missing properties in ITraktSyncLastActivities (Issue 606)
    • Add missing properties in ITraktUserLimits (Issue 608)
    • Add "Show.Tagline" field (Issue 615)
    • Add support for episode type (Issue 622)

Improved

  • Add methods in modules to stream multiple results (Issue 416)
  • Add method overloads in post builder API (Issue 421)
  • Add method overloads in modules to be more flexible with "id or slug" parameters (Issue 452)
  • Add enumeration type for "gender" property in ITraktPerson (Issue 458)
  • Add enumeration type for "known_for_department" property in ITraktPerson (Issue 459)
  • Add enumeration type TraktListPrivacy for ITraktLists (Issue 461)
  • Add boolean parameters "showSignupPage" and "forceLoginPrompt" in TraktAuthenticationModule.CreateAuthorizationUrl() (Issue 463)
  • Add parameter TraktExtendedInfo in TraktListsModule.GetListLikesAsync() (Issue 467)
  • Add enumeration type TraktExtendedCommentSortOrder for TraktMoviesModule.GetMovieCommentsAsync() and TraktEpisodesModule.GetEpisodeCommentsAsync() (Issue 469)
  • Add enumeration type TraktShowsCommentSortOrder for TraktShowsModule.GetShowCommentsAsync() and TraktSeasonsModule.GetSeasonCommentsAsync() (Issue 474)
  • Add parameter TraktExtendedInfo in TraktCommentsModule.GetCommentAsync() (Issue 487)
  • Add parameter TraktExtendedInfo in TraktListsModule.GetTrendingListsAsync() (Issue 488)
  • Add parameter TraktExtendedInfo in TraktListsModule.GetPopularListsAsync() (Issue 489)
  • Add parameter TraktExtendedInfo in TraktListsModule.GetListAsync() (Issue 490)
  • Add parameter TraktExtendedInfo in TraktListsModule.GetListCommentsAsync() (Issue 491)
  • Add parameter TraktExtendedInfo in TraktMoviesModule.GetMovieListsAsync() (Issue 492)
  • Add parameter TraktExtendedInfo in TraktPeopleModule.GetPersonListsAsync() (Issue 493)
  • Add parameter TraktExtendedInfo in TraktCommentsModule.GetCommentRepliesAsync() (Issue 494)
  • Add parameter TraktExtendedInfo in TraktMoviesModule.GetMovieCommentsAsync() (Issue 495)
  • Add parameter TraktExtendedInfo in TraktShowsModule.GetShowCommentsAsync() (Issue 496)
  • Add parameter TraktExtendedInfo in TraktShowsModule.GetShowListsAsync() (Issue 497)
  • Add parameter TraktExtendedInfo in TraktSeasonsModule.GetSeasonCommentsAsync() (Issue 498)
  • Add parameter TraktExtendedInfo in TraktSeasonsModule.GetSeasonListsAsync() (Issue 499)
  • Add parameter TraktExtendedInfo in TraktEpisodesModule.GetEpisodeCommentsAsync() (Issue 500)
  • Add parameter TraktExtendedInfo in TraktEpisodesModule.GetEpisodeListsAsync() (Issue 501)
  • Additional user information can be retrieved with ?extended=full,vip (Issue 502)
  • Use TraktSortBy and TraktSortHow in ITraktList (Issue 526)
  • Support pagination in Recommendations (Issue 644)

Fixed

  • Use ITraktUserPersonalListItemsRemovePost instead of ITraktUserPersonalListItemsPost in TraktUsersModule.RemovePersonalListItemsAsync() (Issue 373)
  • Use ITraktSyncCollectionRemovePost instead of ITraktSyncCollectionPost in TraktSyncModule.RemoveCollectionItemsAsync() (Issue 374)
  • Use ITraktSyncRatingsRemovePost instead of ITraktSyncRatingsPost in TraktSyncModule.RemoveRatingsAsync() (Issue 375)
  • Use ITraktSyncRecommendationsRemovePost instead of ITraktSyncRecommendationsPost in TraktSyncModule.RemovePersonalRecommendationsAsync() (Issue 376)
  • Use ITraktSyncWatchlistRemovePost instead of ITraktSyncWatchlistPost in TraktSyncModule.RemoveWatchlistItemsAsync() (Issue 377)
  • Use ITraktUserHiddenItemsRemovePost instead of ITraktUserHiddenItemsPost in TraktUsersModule.RemoveHiddenItemsAsync() (Issue 378)
  • Change ITraktShowFilter to support "network_ids" instead of "networks" (Issue 520)
  • Automatically force OAuth authorization for the user "me" (Issue 596)
  • ITraktAuthorization.TokenType might be null (Issue 602)

Breaking Changes

  • Replace IEnumerable<T> with IList<T> where possible (Issue 253)
  • Move multiple query parameters into namespace TraktNet.Parameters (Issue 368)
  • New return types for GetMovieRecommendationsAsync() and GetShowRecommendationsAsync() (Issue 439)
  • Add new return type for TraktListsModule.GetTrendingListsAsync() and TraktListsModule.GetPopularListsAsync() requests (Issue 466)
  • Rename "movies/recommended/{period}" to "movies/favorited/{period}" GET request (Issue 522)
  • Rename "shows/recommended/{period}" to "shows/favorited/{period}" GET request requests (Issue 523)
  • Rename users/{id}/recommendations/{type}/{sort} request to users/{id}/favorites/{type}/{sort} (Issue 555)
  • Rename sync/recommendations requests to sync/favorites (Issue 556)
  • Rename ITraktRecommendedBy to ITraktFavoritedBy (Issue 557)

Deprecated:

New Contributors

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.3.0...v1.4.0

v1.3.0

1 year ago

What's Changed

Breaking Changes:

  • Rename "CustomList(s)" requests to "PersonalList(s)" requests (by @henrikfroehling in Issue 276)
  • Rename ITraktSharing to ITraktConnections (by @henrikfroehling in Issue 303)
  • Rename TraktUserCustomListPost to TraktUserPersonalListPost (by @henrikfroehling in Issue 349)
  • Move parameter types into namespace TraktNet.Parameters (by @henrikfroehling in Issue 354)
    • TraktExtendedInfo
    • TraktPagedParameters
    • TraktIncludeReplies
  • Refactor filters (by @henrikfroehling in Issue 289)
    • Filters are now in the namespace TraktNet.Parameters
    • Filters are now immutable and cannot be changed after created
    • Filters are now only creatable with their builder methods
      • ITraktCalendarFilter => TraktFilter.NewCalendarFilter().Build()
      • ITraktMovieFilter => TraktFilter.NewMovieFilter().Build()
      • ITraktShowFilter => TraktFilter.NewShowFilter().Build()
      • ITraktSearchFilter => TraktFilter.NewSearchFilter().Build()
  • Post builder refactoring (by @henrikfroehling in Issue 319)
    • Post builder methods have been completely refactored and unified
    • Post builder methods are now in the namespace TraktNet.PostBuilder
    • Posts can be created with the TraktPost.New...Post().Build() methods
    • There have been added new builders methods for creating comment-, checkin- and scrobble-posts (Issue 346)
    • Following post objects are now also creatable with the post builder methods
      • ITraktSyncCollectionRemovePost
      • ITraktSyncRatingsRemovePost
      • ITraktSyncRecommendationsRemovePost
      • ITraktSyncWatchlistRemovePost
      • ITraktUserHiddenItemsRemovePost
      • ITraktUserPersonalListItemsRemovePost
      • ITraktMovieCommentPost
      • ITraktShowCommentPost
      • ITraktSeasonCommentPost
      • ITraktEpisodeCommentPost
      • ITraktListCommentPost
      • ITraktMovieCheckinPost
      • ITraktEpisodeCheckinPost
      • ITraktMovieScrobblePost
      • ITraktEpisodeScrobblePost

Added:

  • Add support for "limits" property in ITraktUserSettings (by @henrikfroehling in Issue 272)
  • Add new exception type for HTTP Status Code 420 (user has exceeded their account limit) (by @henrikfroehling in Issue 273)
  • Add support for "notes" (255 maximum characters) for watchlist and personal list items (by @henrikfroehling in Issue 274)
  • Add value "recommendations" in TraktListType enumeration (by @henrikfroehling in Issue 275)
  • Add support for "lists/{id}" GET request (by @henrikfroehling in Issue 277)
  • Add support for "lists/{id}/likes" GET request (by @henrikfroehling in Issue 278)
  • Add support for "lists/{id}/items/{type}" GET request (by @henrikfroehling in Issue 279)
  • Add support for "lists/{id}/comments/{sort}" GET request (by @henrikfroehling in Issue 280)
  • Add support for "users/{id}/lists/collaborations" GET request (by @henrikfroehling in Issue 281)
  • Add support for "users/saved_filters" GET request (by @henrikfroehling in Issue 282)
  • Add support for "facebook" and "apple" properties in ITraktConnections (by @henrikfroehling in Issue 283)
  • Add support for "rated" property in ITraktSharingText (by @henrikfroehling in Issue 284)
  • Add support for "vip_og", "vip_years" and "vip_cover_image" properties in ITraktUser (by @henrikfroehling in Issue 285)
  • Add support for "movies/updates/id/{start_date}" GET request (by @henrikfroehling in Issue 293)
  • Add support for "shows/updates/id/{start_date}" GET request (by @henrikfroehling in Issue 294)
  • Add support for "id" and "rank" properties in ITraktWatchlistItem (by @henrikfroehling in Issue 310)
  • New Post builder implementations (by @henrikfroehling in Issue 346)

Fixed:

  • [Bug]: ValidateHistoryPost for RemoveWatchedHistoryItemsAsync ignores WithHistoryIds (by @henrikfroehling in Issue 316)

Improved:

  • Return enum types for response headers with fixed values (e.g. SortBy, SortHow) (by @henrikfroehling in Issue 288)
  • Improve request validations (by @henrikfroehling in Issue 350)

Changed:

  • Rename "CustomList(s)" requests to "PersonalList(s)" requests (by @henrikfroehling in Issue 276)
  • Rename ITraktSharing to ITraktConnections (by @henrikfroehling in Issue 303)
  • Change type of "rank" property in ITraktListItem to int (by @henrikfroehling in Issue 311)
  • Rename TraktUserCustomListPost to TraktUserPersonalListPost (by @henrikfroehling in Issue 349)
  • Move parameter types into namespace TraktNet.Parameters (by @henrikfroehling in Issue 354)
    • TraktExtendedInfo
    • TraktPagedParameters
    • TraktIncludeReplies

API Diff: https://www.fuget.org/packages/Trakt.NET/1.3.0/lib/netstandard2.0/diff/1.2.0


Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.2.0...v1.3.0

v1.2.0

2 years ago

What's Changed

Breaking Change:

  • Update target framework to .NET Standard 2.0 (by @henrikfroehling in Issue 247)

Added:

  • Add support for getting rate limit details (by @henrikfroehling in Issue 193)
  • Add values "aired" and "watched" in TraktLastActivity enumeration (by @henrikfroehling in Issue 198)
  • Add support for "users/requests/following" GET request (by @henrikfroehling in Issue 199)
  • Add property for "recommended" counts in ITraktStatistics (by @henrikfroehling in Issue 200)
  • Add support for "users/{id}/lists/{list_id}/likes" GET request (by @henrikfroehling in Issue 201)
  • Add support for optional pagination in "sync/playback" GET request (by @henrikfroehling in Issue 202)
  • Add support for date filtering in "sync/playback" GET request (by @henrikfroehling in Issue 203)
  • Add support for "sync/recommendations" GET request (by @henrikfroehling in Issue 204)
  • Add support for "sync/recommendations" POST request (by @henrikfroehling in Issue 205)
  • Add support for "sync/recommendations/remove" POST request (by @henrikfroehling in Issue 206)
  • Add support for "sync/recommendations/reorder" POST request (by @henrikfroehling in Issue 232)
  • Add support for VIP only methods (Issue 236)
  • Add support for "shows/{id}/progress/watched/reset" POST request (by @henrikfroehling in Issue 237)
  • Add support for "shows/{id}/progress/watched/reset" DELETE request (by @henrikfroehling in Issue 238)
  • Add support for "sync/watchlist/reorder" POST request (by @henrikfroehling in Issue 239)
  • Add property "updated_at" in ITraktSeason (by @henrikfroehling in Issue 242)
  • Update ITraktSyncLastActivities and add missing properties (by @henrikfroehling in Issue 257)
  • Add support for comments (blocked users) in "users/hidden/{section}" and "users/hidden/{section}/remove" POST requests (by @henrikfroehling in Issue 258)
  • Add values "continuing" and "pilot" in TraktShowStatus enumeration (by @henrikfroehling in Issue 264)
  • Add support for "shows/{id}/seasons/{season}/translations/{language}" GET request (by @henrikfroehling in Issue 265)
  • Add missing properties in ITraktPerson (by @henrikfroehling in Issue 266)

Fixed:

  • GetShowAsync returns Status null when status is 'upcoming' (by @henrikfroehling in Issue 208)
  • Calendar methods do not accept a value greater than 31 for days (by @henrikfroehling in Issue 220)
  • GetShowAsync returns Status null when status is 'planned' (by @henrikfroehling in Issue 221)

Improved:

  • Handle HTTP Status Code 423 for locked user accounts (by @henrikfroehling in Issue 194)
  • Post Builder interfaces and implementations are not in the same namespace (by @henrikfroehling in Issue 207)

Changed:

  • OAuth authorization for "users/{id}/lists/{list_id}/comments" should be optional (by @henrikfroehling in Issue 197)
  • Rename methods in post builder (by @henrikfroehling in Issue 251)
  • Change OAuth requirement to optional for "users/{id}/likes/{type}" GET request (by @henrikfroehling in Issue 256)

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.1.1...v1.2.0

v1.1.1

3 years ago

What's Changed

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.1.0...v1.1.1

v1.1.0

3 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.0.2...v1.1.0

v1.0.2

3 years ago

What's Changed

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.0.1...v1.0.2

v1.0.1

3 years ago

What's Changed

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.0.0...v1.0.1

v1.0.0

3 years ago

Breaking Changes:

  • New response classes

    • TraktNoContentResponse replaces all Task return types in Modules
    • TraktResponse<TContentType> replaces all Task<TItem> return types in Modules
    • TraktListResponse<TContentType> replaces all Task<IEnumerable<TItem>> return types in Modules
    • TraktPagedResponse<TContentType> replaces all Task<TraktPaginationListResult<TItem>> return types in Modules
    • More information
  • .NET Standard 1.1 replaces PCL

What's Changed

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.0.0-beta...v1.0.0

v1.0.0-beta

5 years ago

Breaking Changes:

  • New response classes

    • TraktNoContentResponse replaces all Task return types in Modules
    • TraktResponse<TContentType> replaces all Task<TItem> return types in Modules
    • TraktListResponse<TContentType> replaces all Task<IEnumerable<TItem>> return types in Modules
    • TraktPagedResponse<TContentType> replaces all Task<TraktPaginationListResult<TItem>> return types in Modules
    • More information
  • .NET Standard 1.1 replaces PCL

What's Changed

Full Changelog: https://github.com/henrikfroehling/Trakt.NET/compare/v1.0.0-alpha3...v1.0.0-beta

v1.0.0-alpha3

5 years ago

Breaking Changes:

  • New response classes

    • TraktNoContentResponse replaces all Task return types in Modules
    • TraktResponse<TContentType> replaces all Task<TItem> return types in Modules
    • TraktListResponse<TContentType> replaces all Task<IEnumerable<TItem>> return types in Modules
    • TraktPagedResponse<TContentType> replaces all Task<TraktPaginationListResult<TItem>> return types in Modules
    • More information
  • .NET Standard 1.1 replaces PCL

Added:

  • support for "networks" GET request (Issue 69)
  • support for "certifications/{type}" GET request (Issue 70)
  • support for "users/hidden/{section}" POST request (Issue 71)
  • support for "users/hidden/{section}/remove" POST (Issue 72)
  • missing "network" property in ITraktSeason (Issue 83)
  • missing "last_episode" property in ITraktShowProgress (Issue 88)
  • "dolby_atmos" and "dts_x" in TraktMediaAudio (Issue 89)
  • support for X-Item-ID and X-Item-Type response headers (Issue 106)
  • support for "comments/{id}/item" GET request (Issue 107)
  • support for "comments/{id}/likes" GET request (Issue 109)
  • missing "country" property in ITraktMovie (Issue 110)
  • "comment_count" property in ITraktMovie, ITraktShow, ITraktSeason and ITraktEpisode (Issue 111)
  • support for "people/{id}/lists/{type}/{sort}" GET request (Issue 116)
  • support for "comments/trending/{comment_type}/{type}?{include_replies}" GET request (Issue 117)
  • support for "comments/recent/{comment_type}/{type}?{include_replies}" GET request (Issue 118)
  • support for "comments/updates/{comment_type}/{type}?{include_replies}" GET request (Issue 119)
  • support for "lists/trending" GET request (Issue 120)
  • support for "lists/popular" GET request (Issue 121)
  • support for "include_replies" parameter in "users/id/comments" GET request (Issue 122)
  • properties for "sort_by" and "sort_how" in ITraktUserCustomListPost (Issue 123)
  • "reset_at" property in ITraktShowWatchedProgress (Issue 129)
  • flag for "progress_watched_reset" section in TraktHiddenItemsSection (Issue 130)

Fixed:

Improved:

  • http client handling (Issue #21)
  • serialization of Trakt objects to JSON (Issue #75)
  • json deserialization for authorization objects (Issue #78)
  • allow multiple types as filter in "users/{id}/lists/{list_id}/items/{type}" request (Issue #124)