You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
traktarr/README.md

792 lines
17 KiB

7 years ago
# traktarr
Add new shows & movies to Sonarr/Radarr from Trakt.
7 years ago
Types of Trakt lists supported:
7 years ago
- Official Trakt lists
- Trending
7 years ago
- Popular
7 years ago
- Anticipated
7 years ago
- boxoffice
7 years ago
- Public lists
- Private lists*
- Watchlist
7 years ago
- Custom list(s)
\* Support for multiple (authenticated) users.
7 years ago
<script src="https://asciinema.org/a/14.js" id="asciicast-14" async></script>
7 years ago
# Requirements
7 years ago
7 years ago
1. Python 3.5 or higher (`sudo apt install python3 python3-pip`).
2. requirements.txt modules (see below).
7 years ago
# Installation
## 1. Base Install
7 years ago
Install traktarr to be run with `traktarr` command.
7 years ago
1. `cd /opt`
7 years ago
2. `sudo git clone https://github.com/l3uddz/traktarr`
3. `sudo chown -R user:group traktarr` (run `id` to find your user / group)
4. `cd traktarr`
5. `sudo python3 -m pip install -r requirements.txt`
6. `sudo ln -s /opt/traktarr/traktarr.py /usr/local/bin/traktarr`
7. `traktarr` - run once to generate a default a config.json file.
8. `nano config.json` - edit preferences.
## 2. Create app authentication
1. Create a Trakt application by going [here](https://trakt.tv/oauth/applications/new)
7 years ago
2. Enter a name for your application; for example `traktarr`
3. Enter `urn:ietf:wg:oauth:2.0:oob` in the `Redirect uri` field.
4. Click "SAVE APP".
7 years ago
5. Open the traktarr configuration file `config.json` and insert the Client ID in the `client_id` and the Client Secret in the `client_secret`, like this:
```
{
"trakt": {
"client_id": "my_client_id",
"client_secret": "my_client_secret_key"
}
}
```
## 3. Authenticate User(s) (optional)
7 years ago
For each user you want to access the private lists for (i.e. watchlist and/or custom lists), you will need to to authenticate that user.
Repeat the following steps for every user you want to authenticate:
1. Run `traktarr trakt_authentication`
2. You wil get the following prompt:
```
- We're talking to Trakt to get your verification code. Please wait a moment...
- Go to: https://trakt.tv/activate on any device and enter A0XXXXXX. We'll be polling Trakt every 5 seconds for a reply
```
3. Go to https://trakt.tv/activate.
4. Enter the code you see in your terminal.
5. Click continue.
6. If you are not logged in to Trakt, login now.
7. Click "Accept".
8. You will get the message: "Woohoo! Your device is now connected and will automatically refresh in a few seconds.".
You've now authenticated the user.
You can repeat this process for as many users as you like.
7 years ago
# Configuration
## Sample Configuration
7 years ago
```json
7 years ago
{
7 years ago
"core": {
"debug": false
},
7 years ago
"automatic": {
"movies": {
7 years ago
"anticipated": 3,
7 years ago
"boxoffice": 10,
"interval": 24,
"popular": 3,
"trending": 2
7 years ago
},
"shows": {
"anticipated": 10,
7 years ago
"interval": 48,
7 years ago
"popular": 1,
"trending": 2
7 years ago
}
},
7 years ago
"filters": {
"movies": {
"allowed_countries": [
"us",
"gb",
"ca"
],
"blacklist_title_keywords": [
"untitled",
"barbie",
"ufc"
7 years ago
],
"blacklisted_genres": [
"documentary",
7 years ago
"music",
"animation"
7 years ago
],
7 years ago
"blacklisted_max_year": 2019,
7 years ago
"blacklisted_min_runtime": 60,
7 years ago
"blacklisted_min_year": 2000,
"blacklisted_tmdb_ids": []
7 years ago
},
"shows": {
"allowed_countries": [
"us",
"gb",
"ca"
],
"blacklisted_genres": [
"animation",
"game-show",
"talk-show",
"home-and-garden",
"children",
"reality",
"anime",
"news",
"documentary",
"special-interest"
],
7 years ago
"blacklisted_max_year": 2019,
7 years ago
"blacklisted_min_runtime": 15,
"blacklisted_min_year": 2000,
"blacklisted_networks": [
"twitch",
"youtube",
"nickelodeon",
"hallmark",
"reelzchannel",
"disney",
"cnn",
"cbbc",
"the movie network",
"teletoon",
"cartoon network",
"espn",
"yahoo!",
"fox sports"
7 years ago
],
"blacklisted_tvdb_ids": []
7 years ago
}
},
7 years ago
"notifications": {
7 years ago
"pushover": {
"service": "pushover",
"app_token": "",
"user_token": ""
},
"slack": {
"service": "slack",
"webhook_url": ""
},
"verbose": true,
7 years ago
},
7 years ago
"radarr": {
"api_key": "",
"profile": "HD-1080p",
7 years ago
"root_folder": "/movies/",
"url": "http://localhost:7878/"
7 years ago
},
"sonarr": {
"api_key": "",
"profile": "HD-1080p",
7 years ago
"root_folder": "/tv/",
7 years ago
"tags": {},
"url": "http://localhost:8989/"
7 years ago
},
"trakt": {
"client_id": "",
"client_secret": ""
7 years ago
}
7 years ago
}
7 years ago
```
7 years ago
7 years ago
## Core
```json
"core": {
"debug": false
},
```
`debug` - show debug messages.
- Default is `false` (keep it off unless your having issues).
## Automatic
7 years ago
Used for automatic / scheduled traktarr tasks.
7 years ago
7 years ago
Movies can be run on a separate schedule then from Shows.
_Note: These settings are only needed if you plan to use traktarr on a schedule (i.e. via manual/CLI command only); see [Usage](#usage)._
7 years ago
```json
"automatic": {
"movies": {
"anticipated": 3,
"boxoffice": 10,
"interval": 24,
"popular": 3,
"trending": 2,
"watchlist": {},
"lists": {}
7 years ago
},
"shows": {
"anticipated": 10,
"interval": 48,
"popular": 1,
"trending": 2,
"watchlist": {},
"lists": {}
7 years ago
}
},
```
7 years ago
`interval` - specify how often (in hours) to run traktarr task.
7 years ago
`anticipated`, `popular`, `trending`, `boxoffice` (movies only) - specify how many items from each Trakt list to find.
`watchlist` - specify which watchlists to fetch (see explanation below)
`lists` - specify which custom lists to fetch (see explanation below)
### Personal Watchlists
7 years ago
The watchlist task can be scheduled with a differtent item limit for every (authenticated) user.
So for every user, you will add: `"username": limit` to the watchlist key. For example:
```json
"automatic": {
"movies": {
"watchlist": {
"user1": 10,
"user2": 5
}
},
"shows": {
"watchlist": {
"user1": 2,
"user3": 1
}
}
},
```
Of course you can combine this with running the other list types as well.
### Custom Lists
You can also schedule any number of public or private custom lists.
7 years ago
For both public and private lists you'll need the url to that list. When viewing the list on Trakt, simply copy the url from the address bar of the your browser.
#### Public Lists
Public lists can be added by specifying the url and the item limit like this:
```json
"automatic": {
"movies": {
"lists": {
"https://trakt.tv/users/rkerwin/lists/top-100-movies": 10
}
},
"shows": {
"lists": {
"https://trakt.tv/users/claireaa/lists/top-100-tv-shows-of-all-time-ign": 10
}
}
},
```
#### Private Lists
Private lists can be added in two ways:
1. If there is only one authenticated user, you can add the private list just like any other public list:
```json
"automatic": {
"movies": {
"lists": {
"https://trakt.tv/users/user/lists/my-private-movies-list": 10
}
},
"shows": {
"lists": {
"https://trakt.tv/users/user/lists/my-private-shows-list": 10
}
}
},
```
7 years ago
2. If there are multiple authenticated users you want to fetch the lists from, you'll need to specify the username under `authenticate_as`.
_Note: The user should have access to the list (either own the list or a list that was shared to them by a friend)._
```json
"automatic": {
"movies": {
"lists": {
"https://trakt.tv/users/user/lists/my-private-movies-list": {
"authenticate_as": "user2",
"limit": 10
}
}
},
"shows": {
"lists": {
"https://trakt.tv/users/user/lists/my-private-shows-list": {
"authenticate_as": "user2",
"limit": 10
}
}
}
},
```
7 years ago
## Filters
Use filters to specify the movie/shows's country of origin or blacklist (i.e. filter-out) certain keywords, genres, years, runtime, or specific movies/shows.
### Movies
```json
"movies": {
"allowed_countries": [
"us",
"gb",
"ca"
],
"blacklist_title_keywords": [
"untitled",
"barbie"
],
"blacklisted_genres": [
"documentary",
"music",
"animation"
],
"blacklisted_max_year": 2019,
"blacklisted_min_runtime": 60,
"blacklisted_min_year": 2000,
"blacklisted_tmdb_ids": []
},
```
`allowed_countries` - allowed countries of origin.
`blacklist_title_keywords` - blacklist certain words in titles.
`blacklisted_genres` - blacklist certain generes.
`blacklisted_max_year` - blacklist release dates after specified year.
`blacklisted_min_runtime` - blacklist runtime duration lower than specified time (in minutes).
`blacklisted_min_year` - blacklist release dates before specified year.
`blacklisted_tmdb_ids` - blacklist certain movies with their TMDB IDs.
### Shows
```json
"shows": {
"allowed_countries": [
"us",
"gb",
"ca"
],
"blacklisted_genres": [
"animation",
"game-show",
"talk-show",
"home-and-garden",
"children",
"reality",
"anime",
"news",
"documentary",
"special-interest"
],
"blacklisted_max_year": 2019,
"blacklisted_min_runtime": 15,
"blacklisted_min_year": 2000,
"blacklisted_networks": [
"twitch",
"youtube",
"nickelodeon",
"hallmark",
"reelzchannel",
"disney",
"cnn",
"cbbc",
"the movie network",
"teletoon",
"cartoon network",
"espn",
"yahoo!",
"fox sports"
],
"blacklisted_tvdb_ids": []
}
```
`allowed_countries` - allowed countries of origin.
`blacklisted_genres` - blacklist certain generes.
`blacklisted_max_year` - blacklist release dates after specified year.
`blacklisted_min_runtime` - blacklist runtime duration lower than specified time (in minutes).
`blacklisted_min_year` - blacklist release dates before specified year.
`blacklisted_networks` - blacklist certain network.
`blacklisted_tvdb_ids` - blacklist certain shows with their TVDB IDs.
## Notifications
Notification alerts during tasks.
Currently, only Pushover and Slack are supported. More will abe added later.
```json
"notifications": {
"pushover": {
"service": "pushover",
"app_token": "",
"user_token": ""
},
"slack": {
"service": "slack",
"webhook_url": ""
},
"verbose": true,
},
```
`verbose` - toggle detailed notifications.
- Default is `true` (keep it off unless your having issues).
### Pushover
`app_token` and `user_token` - retrieve from Pushover.net.
_Note: The key name (i.e the name right under notifications) can be anything, but the `"service":` must be exactly `"pushover"`._
### Slack
`webhook_url` - webhook URL you get after creating an "Incoming Webhook" under "Custom Integrations".
_Note: The key name (i.e the name right under notifications) can be anything, but the `"service":` must be exactly `"slack"`._
## Radarr
Radarr configuration.
```json
"radarr": {
"api_key": "",
"profile": "HD-1080p",
"root_folder": "/movies/",
"url": "http://localhost:7878"
},
```
`api_key` - Radarr's API Key.
`profile` - Profile that movies are assigned to.
`root_folder` - Root folder for movies.
`url` - Radarr's URL.
## Sonarr
Sonarr configuration.
```json
"sonarr": {
"api_key": "",
"profile": "HD-1080p",
"root_folder": "/tv/",
"tags": {},
"url": "http://localhost:8989"
},
```
`api_key` - Sonarr's API Key.
`profile` - Profile that TV shows are assigned to.
`root_folder` - Root folder for TV shows.
`tags` - assign tags to shows based the network it airs on. More details on this below.
`url` - Sonarr's URL.
### Tags
To show how tags work, we will create a sample tag `AMZN` and assign it to certain networks.
_Note: These are optional._
7 years ago
### Sonarr
First, we will create a tag in Sonarr (Settings > Indexers > Restrictions).
```
Must contain: BluRay, Amazon, AMZN,
Must not contain:
Tags: AMZN
```
7 years ago
### traktarr
7 years ago
7 years ago
Finally, we will edit the traktarr config and assign the `AMZN` tag to certain networks.
7 years ago
```json
"tags": {
"amzn": [
"hbo",
"amc",
"usa network",
"tnt",
"starz",
"the cw",
"fx",
"fox",
"abc",
"nbc",
"cbs",
"tbs",
"amazon",
"syfy",
"cinemax",
"bravo",
"showtime",
"paramount network"
]
}
```
## Trakt
7 years ago
Trakt Authentication info:
7 years ago
```json
"trakt": {
"client_id": "",
"client_secret": ""
7 years ago
}
```
`client_id` - Fill in your Trakt API key (_Client ID_).
7 years ago
`client_secret` - Fill in your Trakt Secret key (_Client Scret_)
7 years ago
7 years ago
# Usage
7 years ago
## Automatic (Scheduled)
To have traktarr get Movies and Shows for you automatically, on set interval.
1. `sudo cp /opt/traktarr/systemd/traktarr.service /etc/systemd/system/`
2. `sudo nano /etc/systemd/system/traktarr.service` and edit user/group to match yours.
7 years ago
3. `sudo systemctl daemon-reload`
4. `sudo systemctl enable traktarr.service`
5. `sudo systemctl start traktarr.service`
7 years ago
7 years ago
## Manual (CLI)
7 years ago
7 years ago
### General
7 years ago
```
traktarr
7 years ago
```
7 years ago
7 years ago
```
7 years ago
Usage: traktarr [OPTIONS] COMMAND [ARGS]...
Add new shows & movies to Sonarr/Radarr from Trakt.
7 years ago
Options:
--version Show the version and exit.
--config PATH Configuration file [default: /opt/traktarr/config.json]
--logfile PATH Log file [default: /opt/traktarr/activity.log]
--help Show this message and exit.
7 years ago
Commands:
movie Add a single movie to Radarr.
movies Add multiple movies to Radarr.
run Run in automatic mode.
show Add a single show to Sonarr.
shows Add multiple shows to Sonarr.
7 years ago
trakt_authentication Authenticate traktarr.
7 years ago
```
7 years ago
### Movie (Single Movie)
7 years ago
```
traktarr movie --help
```
```
Usage: traktarr movie [OPTIONS]
Add a single movie to Radarr.
Options:
-id, --movie_id TEXT Trakt movie_id. [required]
-f, --folder TEXT Add movie with this root folder to Radarr.
--no-search Disable search when adding movie to Radarr.
--help Show this message and exit.
```
_Note: `-id` and `--movie_id` support both Trakt IDs and IMDB IDs._
### Movies (Multiple Movies)
7 years ago
```
7 years ago
traktarr movies --help
```
```
Usage: traktarr movies [OPTIONS]
7 years ago
Add multiple movies to Radarr.
7 years ago
Options:
-t, --list-type TEXT Trakt list to process. For example, anticipated,
trending, popular, boxoffice, watchlist or any URL
to a list [required]
-l, --add-limit INTEGER Limit number of movies added to Radarr. [default:
0]
-d, --add-delay FLOAT Seconds between each add request to Radarr.
[default: 2.5]
-g, --genre TEXT Only add movies from this genre to Radarr.
-f, --folder TEXT Add movies with this root folder to Radarr.
--no-search Disable search when adding movies to Radarr.
--notifications Send notifications.
--authenticate-user TEXT Specify which user to authenticate with to
retrieve Trakt lists. Default: first user in the
config.
--help Show this message and exit.
7 years ago
```
### Show (Single Show)
```
traktarr show --help
```
```
Usage: traktarr show [OPTIONS]
Add a single show to Sonarr.
Options:
-id, --show_id TEXT Trakt show_id. [required]
-f, --folder TEXT Add show with this root folder to Sonarr.
--no-search Disable search when adding show to Sonarr.
--help Show this message and exit.
```
_Note: `-id` and `--show_id` support both Trakt IDs and IMDB IDs._
### Shows (Multiple Shows)
```
traktarr shows --help
```
7 years ago
```
7 years ago
Usage: traktarr shows [OPTIONS]
7 years ago
Add multiple shows to Sonarr.
7 years ago
Options:
-t, --list-type TEXT Trakt list to process. For example, anticipated,
trending, popular, watchlist or any URL to a list
[required]
-l, --add-limit INTEGER Limit number of shows added to Sonarr. [default:
0]
-d, --add-delay FLOAT Seconds between each add request to Sonarr.
[default: 2.5]
-g, --genre TEXT Only add shows from this genre to Sonarr.
-f, --folder TEXT Add shows with this root folder to Sonarr.
--no-search Disable search when adding shows to Sonarr.
--notifications Send notifications.
--authenticate-user TEXT Specify which user to authenticate with to
retrieve Trakt lists. Default: first user in the
config
--help Show this message and exit.
7 years ago
```
7 years ago
## Examples (Manual)
7 years ago
- Add the movie "Black Panther (2018)":
```
traktarr movie -id black-panther-2018
```
- Add the show "The 100":
```
traktarr show -id the-100
```
- Add boxoffice movies, labeled with the comedy genre, limited to 10 items, and send notifications:
7 years ago
```
traktarr movies -t boxoffice -g comedy -l 10 --notifications
```
- Add popular shows, limited to 2 items, and don't start the search in Sonarr:
```
traktarr shows -t popular -l 2 --no-search
```
- Add all shows from the watchlist of `user1`:
```
traktarr shows -t watchlist --authenticate-user user1
```
7 years ago
- Add all movies from the public list `https://trakt.tv/users/rkerwin/lists/top-100-movies`:
```
traktarr movies -t https://trakt.tv/users/rkerwin/lists/top-100-movies
```
- Add all movies from the private list `https://trakt.tv/users/user1/lists/private-movies-list` of `user1`:
```
traktarr movies -t https://trakt.tv/users/user1/lists/private-movies-list --authenticate-user=user1
```