Skip to content

Releases: jemus42/tRakt

tRakt 0.16.0

28 Aug 17:36
5fd9856
Compare
Choose a tag to compare
  • Add GitHub actions via usethis::use_github_actions()
  • Use the tidy CI setup via usethis::use_tidy_ci(), this bumps the R dependency to >= 3.2.

Authenticated requests

By default, all requests to the API are now made using authentication if a trakt_client_secret is set. See ?trakt_credentials() for details on how to set your credentials.
If no secret is available, unauthenticated requests are made as in previous versions. In this case, you still need either the built-in or your own trakt_client_id.

OAuth2 support comes with the need to handle secrets, i.e. .httr-oauth files. This can be a pain with headless/automated setups, which is why I am trying to keep "no auth needed" as the default, as most (implemented) endpoints don't strictly require authentication.

See vignette("Implemented-API-methods", package = "tRakt") for an overview of implemented methods with an indicator on whether authentication is required (it usually isn't).

New functions

  • episodes_summary() [shows/:id/seasons/:season/episodes/:episode]: What seasons_season() and seasons_summary() do, but for a single episode. Only really implemented for completeness' sake. Wraps this method.
  • user_profile() [user/:id]: Get a user's profile.
  • user_lists() [users/:id/lists]: Get all user lists.
  • user_list() [users/:id/lists/:list_id]: Get a single list.
  • user_list_items() [users/:id/lists/:list_id/items/:type]: Get the items in said lists.

The Renamingering

Rename all the things to snake_case and drop the trakt. prefix.
This results in (most) functions mapping directly to API endpoints in the form section_method,
e.g. the API endpoint movies/collected is handled by function movies_collected().

Search

  • trakt.search -> search_query()
  • trakt.search.byid -> search_id()

Dynamic Lists

  • trakt.popular
    • -> movies_popular()
    • -> shows_popular()
  • trakt.trending
    • -> movies_trending()
    • -> shows_trending()
  • trakt.anticipated
    • -> movies_anticipated()
    • -> shows_anticipated()
  • trakt.played
    • -> movies_played()
    • -> shows_played()
  • trakt.watched
    • -> movies_watched()
    • -> shows_watched()
  • trakt.collected()
    • -> movies_collected()
    • -> shows_collected()
  • trakt.updates()
    • -> movies_updates()
    • -> shows_updates()

Movies

  • trakt.movies.summary -> movies_summary()
  • trakt.movies.boxoffice -> movies_boxoffice()
  • trakt.movies.releases -> movies_releases()
  • trakt.movies.people -> movies_people()

Shows

  • trakt.shows.summary -> shows_summary()
  • trakt.shows.people -> shows_people()

Seasons

  • trakt.seasons.summary -> seasons_summary()
  • trakt.seasons.season -> seasons_season() (It's silly, I know, but oh well)

Ratings

  • trakt.movies.ratings -> movies_ratings()
  • trakt.shows.ratings -> shows_ratings()
  • trakt.seasons.ratings -> seasons_ratings()
  • trakt.episodes.ratings -> episodes_ratings()

Related

  • trakt.movies.related -> movies_related()
  • trakt.shows.related -> shows_related()

Stats

  • trakt.movies.stats -> movies_stats()
  • trakt.shows.stats -> shows_stats()
  • trakt.seasons.stats -> seasons_stats()
  • trakt.episodes.stats -> episodes_stats()

People

  • trakt.people.summary -> people_summary()
  • trakt.people.movies -> people_movies()
  • trakt.people.shows -> people_shows()

User functions

  • trakt.user.network
    • -> user_followers()
    • -> user_following()
    • -> user_friends()
  • trakt.user.collection -> user_collection()
  • trakt.user.history -> user_history()
  • trakt.user.ratings -> user_ratings()
  • trakt.user.stats -> user_stats()
  • trakt.user.watched -> user_watched()
  • trakt.user.watchlist -> user_watchlist()

tRakt 0.15.0

04 Oct 16:23
3e63f5b
Compare
Choose a tag to compare

This is a big one, but not 1.0.0 big one I guess.
This is a consolidation release with lots of internal improvements, but for the 1.0.0 I decided to overhaul the structure of the package again, so before I completely break any kind of backwards compatiblity, I thought I'd get this one out.

Consolidation for the people

  • Major refactor of the docs. Sadly, the user will only notice a little more consistency.

  • Consolidate related functions into the same Rd page

  • Centrally document common parameters and reuse them where needed

  • Also consolidate many similar functions by factoring out the relevant bits into more flexible helper functions. In some cases those are exported as well.

  • In the process, some functions where partially renamed (.show. -> .shows., .movie. -> .movies.) for consistency.

  • Rename get_trakt_credentials -> trakt_credentials

  • Many functions now return much flatter output, notably *people* functions. They return a list with cast and crew objects, which in turn are both flat tibbles.

Features

  • Improved search function (trakt.search).
    • If the result has a year that is NA but a search score == 1000, that's probably bad and dropped.
  • Added more of the automated list methods, like most anticipated, most played and most watched items.
  • Added trakt.user.history for user/:id/history methods

Is this thing still on?

22 Feb 21:24
81636e0
Compare
Choose a tag to compare

tRakt 0.14.0

Many functions were refactored, which in some cases changes the output.
Not only do most functions return a tibble now, but some additionally computed variables have been removed as well.

Starting to clean things up with some major housekeeping

  • usethis::use_* all the things, basically.
  • Add a pkgdown site and a README.Rmd
  • Use codecov
  • Apply styler::style_pkg()
  • Update documentation to use markdown
  • Redo vignette
  • Tests. So many tests.

Less plyr, more purrr

  • Completely removed plyr dependency in favor of purrr

Less camelCase for the Greater Good

12 Mar 02:52
Compare
Choose a tag to compare
  • Rename trakt.getEpisodeData -> trakt.get_all_episodes
    • Expand handling of season_nums argument to make it easier to get all episodes of a show.
    • Vectorize to enable multiple target input
  • Rename trakt.getFullShowData -> trakt.get_full_showdata

Vectorization, Generalization, Bugfixization

08 Mar 05:03
Compare
Choose a tag to compare

v0.12.0

API changes, functional fixes

  • Add dropunaired param to trakt.seasons.summary (defaults to TRUE).
    • Requires extended to be more than min since the required aired_episodes field
      is only present with higher levels of detail.
  • Add extended param to trakt.user.f*
  • Fix trakt.user.f* now return NULL when the user is private instead of failing.

Internal changes

  • User internal, generalized functions to reduce duplicate code for the following:
    • trakt.*.popular
    • trakt.*.related
    • trakt.*.trending
    • trakt.*.summary
    • trakt.*.ratings
Vectorization improvements
  • Add multiple target input support (vectorization) for:
    • trakt.user.f* functions: Results will be rbinded together and a source_user column is appended.
    • trakt.seasons.season: Soon to make trakt.getEpisodeData obsolete.
    • trakt.*.summary: Forces force_data_frame to TRUE to enable rbinding.
    • trakt.*.related: Appends source column containing respective input id.
    • trakt.*.ratings: Returns result as a list with each entry containing data for each
      show or movie to accommodate the distribution variable (data.frame)
    • trakt.people.summary: Appends person column with target id.
    • trakt.*.watching: Returns data.frame with source column containing each target.

v0.11.3

06 Mar 22:52
Compare
Choose a tag to compare

API changes, functional fixes

  • Add build_trakt_url to ease trakt API URL assembly and reduce duplicate code.
  • Add force_data_frame option to trakt.*.summary: Forces unnesting.
  • Rename trakt.show.stats to trakt.stats, will work with both movies and shows
    as soon as the API endpoint actually works.

Minor changes

  • Expand @family tags in docs a little

Some New Stuff, Some Fixed Stuff

05 Mar 19:11
Compare
Choose a tag to compare

v0.11.2

API changes, functional fixes

  • Add trakt.movie.watching and trakt.show.watching: Get trakt.tv users watching.
  • Add trakt.movie.releases: Gets release dates & certifications per movie.
  • Fix trakt.search.byid: Used to only work on shows, now actually works on movies.
  • Fix convert_datetime (internal): improve reliability.

Minor changes

  • Fix documentation error in *.movie.* functions.
  • Added tests for new functions

Moving Stuff Around and Calling it Progress

03 Mar 20:44
Compare
Choose a tag to compare
  • Internal restructuring (moving functionally similar functions together)
    • TODO: Create generic functions for both movie and show functions to reduce duplicate code
  • Add extended param to trakt.user.watchlist
  • Improve consistency between trakt.user.watched and trakt.user.collection
    • Rename slug to id.slug
    • Ensure proper datetime conversion
  • Fix error in trakt.user.watchlist when type = shows was ignored by accident

The "People… and also other stuff"-Update

01 Mar 23:23
Compare
Choose a tag to compare
  • Rename trakt.getSeasons -> trakt.seasons.summary for consistency with the trakt API.
  • Rename trakt.show.season -> trakt.seasons.season for consistency with the trakt API.
  • Rename getNameFromUrl -> parse_trakt_url to be more descriptive. Also, de-camelCasezation.
  • Update vignette to reflect the above changes
  • Add some people functions:
    • trakt.people.summary
    • trakt.people.movies
    • trakt.people.shows
  • Unify output of trakt.show.people and trakt.movie.people
  • Add extended argument to trakt.movies.related and trakt.shows.related (defaults to min)
  • Add page param to paginated functions:
    • trakt.shows.popular
    • trakt.shows.trending
    • trakt.movies.popular
    • trakt.movies.trending
  • The usual bug fixes

Consistency is Good. Right?

01 Mar 00:34
Compare
Choose a tag to compare
  • trakt.user.stats:
    • Tidy up rating distribution
    • Remove to.data.frame option because the output is too messy
  • Add another @family tag to docs for aggregation functions (.popular, .trending, .related)
  • Individual functions don't have to warn about missing headers, that's trakt.api.call's job.
  • trakt.getEpisodeData:
    • Explicitly drop episodes with NA firstaired fields
    • The episode_abs field is usually NA, so let's dump epnum on it
  • Use extended = "min" as default across functions for consistency with the trakt API