Skip to content

An (unofficial) Java library to use the Trakt v2 API built with retrofit 2

License

Notifications You must be signed in to change notification settings

UweTrottmann/trakt-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

trakt-java

Pull requests (e.g. support for more API endpoints, bug fixes) are welcome!

An (unofficial) Java library to use the Trakt v2 API built with retrofit 2.

Trakt API methods are grouped into service objects which can be centrally managed by a TraktV2 instance. It will act as a factory for all the services and will automatically initialize them with the given API key (OAuth client id) and optionally a given user access token.

Usage

Available on Maven Central

Change Log

Add the following dependency to your Gradle project:

implementation("com.uwetrottmann.trakt5:trakt-java:6.16.0")

Or for Maven:

<dependency>
  <groupId>com.uwetrottmann.trakt5</groupId>
  <artifactId>trakt-java</artifactId>
  <version>6.16.0</version>
</dependency>

Android

This library ships Java 8 bytecode. This requires Android Gradle Plugin 3.2.x or newer.

This library depends on threetenbp. To avoid issues on Android exclude the dependency and include ThreeTenABP instead:

implementation("com.uwetrottmann.trakt5:trakt-java:<latest-version>") {
  exclude(group = "org.threeten", module = "threetenbp") // using ThreeTenABP instead
}
implementation("com.jakewharton.threetenabp:threetenabp:<latest-version>")

Example

Use like any other retrofit2 based service. At least a Trakt API key, which for Trakt is currently the same as the OAuth 2.0 client ID, has to be supplied. Optionally, a user OAuth accessToken(token) can be supplied.

See the TraktV2 class for some helper methods to handle the OAuth flow.

TraktV2 trakt = new TraktV2("api_key");
Shows traktShows = trakt.shows();
try {
    // Get trending shows
    Response<List<TrendingShow>> response = traktShows.trending(1, null, Extended.FULL).execute();
    if (response.isSuccessful()) {
        List<TrendingShow> shows = response.body();
        for (TrendingShow trending : shows) {
            System.out.println("Title: " + trending.show.title);
        }
    } else {
        if (TraktV2.isUnauthorized(response)) {
            // authorization required, supply a valid OAuth access token
        } else {
            // the request failed for some other reason
        }
    }
} catch (Exception e) {
    // see execute() API docs 
}

For Kotlin, to make a Call suspend use retrofit's awaitResponse() instead of execute():

try {
    val response = traktShows.trending(1, null, Extended.FULL).awaitResponse()
    if (response.isSuccessful) {
        val shows = response.body()
    }
} catch (e: Exception) {
    // see execute() API docs
}

See test cases in src/test/ for more examples and the retrofit website for configuration options.

Proguard / R8

It is likely not every method in this library is used, so it is probably useful to strip unused ones with Proguard. Apply the Proguard rules for retrofit.

The specific rules for this library are already bundled into the release which can be interpreted by R8 automatically, ProGuard users must manually add the rules.

License

This work by Uwe Trottmann is licensed under the Apache License 2.0.

Contributors and changes are tracked by Git.

Do not just copy, make it better.