magrittr
import and use |>
internally, hence bumping the R dependency to >= 4.1
.usethis::use_github_actions()
usethis::use_tidy_ci()
, this bumps the R dependency to >= 3.2
.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).
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.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()
.
trakt.search
-> search_query()
trakt.search.byid
-> search_id()
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()
trakt.movies.summary
-> movies_summary()
trakt.movies.boxoffice
-> movies_boxoffice()
trakt.movies.releases
-> movies_releases()
trakt.movies.people
-> movies_people()
trakt.shows.summary
-> shows_summary()
trakt.shows.people
-> shows_people()
trakt.seasons.summary
-> seasons_summary()
trakt.seasons.season
-> seasons_season()
(It's silly, I know, but oh well)trakt.movies.ratings
-> movies_ratings()
trakt.shows.ratings
-> shows_ratings()
trakt.seasons.ratings
-> seasons_ratings()
trakt.episodes.ratings
-> episodes_ratings()
trakt.movies.related
-> movies_related()
trakt.shows.related
-> shows_related()
trakt.movies.stats
-> movies_stats()
trakt.shows.stats
-> shows_stats()
trakt.seasons.stats
-> seasons_stats()
trakt.episodes.stats
-> episodes_stats()
trakt.people.summary
-> people_summary()
trakt.people.movies
-> people_movies()
trakt.people.shows
-> people_shows()
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()
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.
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
.
trakt.search
).
year
that is NA
but a search score == 1000
, that's probably bad and dropped.trakt.user.history
for user/:id/history methodsMany 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.
usethis::use_*
all the things, basically.pkgdown
site and a README.Rmd
codecov
styler::style_pkg()
trakt.getEpisodeData
-> trakt.get_all_episodes
season_nums
argument to make it easier to get all episodes of a show.trakt.getFullShowData
-> trakt.get_full_showdata
trakt.seasons.summary
dropunaired
param to trakt.seasons.summary
(defaults to TRUE
).
extended
to be more than min
since the required aired_episodes
field
is only present with higher levels of detail.extended
param to trakt.user.f*
trakt.user.f*
now return NULL
when the user is private instead of failing.trakt.*.popular
trakt.*.related
trakt.*.trending
trakt.*.summary
trakt.*.ratings
trakt.user.f*
functions: Results will be rbind
ed 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 rbind
ing.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
.build_trakt_url
to ease trakt API URL assembly and reduce duplicate code.force_data_frame
option to trakt.*.summary
: Forces unnesting.trakt.show.stats
to trakt.stats
, will work with both movies and shows
as soon as the API endpoint actually works.@family
tags in docs a littletrakt.movie.watching
and trakt.show.watching
: Get trakt.tv users watching.trakt.movie.releases
: Gets release dates & certifications per movie.trakt.search.byid
: Used to only work on shows, now actually works on movies.fix_datetime
(internal): improve reliability.*.movie.*
functions.extended
param to trakt.user.watchlist
trakt.user.watched
and trakt.user.collection
slug
to id.slug
trakt.user.watchlist
when type = shows
was ignored by accidenttrakt.getSeasons -> trakt.seasons.summary
for consistency with the trakt API.trakt.show.season -> trakt.seasons.season
for consistency with the trakt API.getNameFromUrl -> parse_trakt_url
to be more descriptive. Also, de-camelCasezation.people
functions:
trakt.people.summary
trakt.people.movies
trakt.people.shows
trakt.show.people
and trakt.movie.people
extended
argument to trakt.movies.related
and trakt.shows.related
(defaults to min
)page
param to paginated functions:
trakt.shows.popular
trakt.shows.trending
trakt.movies.popular
trakt.movies.trending
trakt.user.stats
:
to.data.frame
option because the output is too messy@family
tag to docs for aggregation functions (.popular
, .trending
, .related
)trakt.api.call
's job.trakt.getEpisodeData
:
NA
firstaired fieldsepisode_abs
field is usually NA
, so let's dump epnum
on itextended = "min"
as default across functions for consistency with the trakt APIyear
parameter to trakt.search
query
in trakt.search
ends with a 4 digit number, this will be used as year
parameter and stripped from the original query
testthat
testslubridate::parse_date_time
fails, as.POSIXct
is used as a fallbacktrakt.movies.popular
: Analogous to trakt.shows.popular
trakt.movies.trending
: Analogous to trakt.shows.trending
trakt.movie.summary
: Get a single movie's details, analogous to trakt.show.summary
trakt.movies.related
: Get related moviestrakt.movie.people
: Analogous to trakt.show.people
trakt.show.ratings
and trakt.movie.ratings
to receive just the ratings and distribution for a single show or movietrakt.show.related
-> trakt.shows.related
for consistency with .trending
and .popular
target
params in accordance with changed trakt API docstrakt.user.ratings
: Currently supported types: shows
, movies
, episodes
extended
option to trakt.shows.popular
and .trending
.posix
have been removed and the existing date fiels are now converted to POSIXct
to remove clutteringfirstaired.posix
-> first_aired
etctrakt.user.following
/ .followers
/ .friends
) because maybe I want to throw networkD3 at my people.posix
variables should be removed and the existing date variables should just be properly converted to POSIXct
@family
tags to all functions to group them togetherI've been working on some user-specific methods, so you can now use the trakt.user.*
family of functions to get a user's…
trakt.user.collection()
trakt.user.watched()
trakt.user.stats()
All of them default to the username set in getOption("trakt.username")
, but any publicly viewable user should work. Note that OAuth2 is not implemented, so private users can't be accessed.
As of today, all the functions are updated to use the new APIv2, except for trakt.show.stats
,
which is currently not yet implemented at trakt.tv, see their docs
Now the package is usable again, and I can continue to work on bug fixes and enhancements. Yay.
I am now trying to migrate everything to the new trakt.tv APIv2.
Since I mostly don't know what I'm doing, I have to make this up as I go along, but oh well.
Now the search function trakt.search
should be working fine, as it is the only function
that is tested/built with the new API in mind. Others to come.