mirror of https://github.com/l3uddz/traktarr
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.
605 lines
13 KiB
605 lines
13 KiB
# Traktarr
|
|
Script to add new shows & movies to Sonarr/Radarr based on Trakt lists.
|
|
|
|
Trakt lists currently supported:
|
|
- anticipated
|
|
- boxoffice
|
|
- interval
|
|
- popular
|
|
- trending
|
|
|
|
Furthermore, watchlist and other types of list from multiple users are supported.
|
|
|
|
# Requirements
|
|
|
|
1. Python 3.5 or higher (`sudo apt install python3 python3-pip`).
|
|
2. requirements.txt modules (see below).
|
|
|
|
# Installation
|
|
|
|
## 1. Base Install
|
|
|
|
Install Traktarr to be run with `traktarr` command.
|
|
|
|
1. `cd /opt`
|
|
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. Authenticate Trakt (optional)
|
|
|
|
If you want to acces private lists (watchlists or other user lists),
|
|
you'll need to authenticate Traktarr to access your personal lists.
|
|
|
|
1. Create an Trakt application by going [here](https://trakt.tv/oauth/applications/new)
|
|
2. Enter a name for your application; for example `Traktarr`
|
|
3. Enter `urn:ietf:wg:oauth:2.0:oob` in the Redirecht uri field.
|
|
4. Click "Save app"
|
|
5. Open the Traktarr configuration file `config.json` and insert the
|
|
Client ID in the api_key and the Client Secret in the api_secret. Like this:
|
|
```
|
|
{
|
|
"trakt": {
|
|
"api_key": "my_client_id",
|
|
"api_secret": "my_client_secret_key"
|
|
}
|
|
}
|
|
```
|
|
|
|
Repeat the following steps for every user you want to authenticate:
|
|
1. Run `traktarr trakt_authenticate` (from the installation path)
|
|
2. Go to https://trakt.tv/activate.
|
|
3. Enter the code you see in your terminal
|
|
4. Click continue
|
|
5. If you're not loggedin to Trakt, login noe
|
|
6. Accept
|
|
|
|
You've now authenticated the user.
|
|
You can repeat this process for as many users as you want.
|
|
|
|
## 3. Setup Schedule
|
|
|
|
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 systemctl daemon-reload`
|
|
3. `sudo systemctl enable traktarr.service`
|
|
4. `sudo systemctl start traktarr.service`
|
|
|
|
|
|
|
|
# Configuration
|
|
|
|
```json
|
|
{
|
|
"core": {
|
|
"debug": false
|
|
},
|
|
"automatic": {
|
|
"movies": {
|
|
"anticipated": 3,
|
|
"boxoffice": 10,
|
|
"interval": 24,
|
|
"popular": 3,
|
|
"trending": 2,
|
|
"watchlist": {
|
|
"username": 10
|
|
},
|
|
"my-custom-list" {
|
|
"username": 10
|
|
}
|
|
},
|
|
"shows": {
|
|
"anticipated": 10,
|
|
"interval": 48,
|
|
"popular": 1,
|
|
"trending": 2,
|
|
"watchlist": {
|
|
"username": 10
|
|
},
|
|
"my-custom-list" {
|
|
"username": 10
|
|
}
|
|
}
|
|
},
|
|
"filters": {
|
|
"movies": {
|
|
"allowed_countries": [
|
|
"us",
|
|
"gb",
|
|
"ca"
|
|
],
|
|
"blacklist_title_keywords": [
|
|
"untitled",
|
|
"barbie",
|
|
"ufc"
|
|
],
|
|
"blacklisted_genres": [
|
|
"documentary",
|
|
"music",
|
|
"animation"
|
|
],
|
|
"blacklisted_max_year": 2019,
|
|
"blacklisted_min_runtime": 60,
|
|
"blacklisted_min_year": 2000,
|
|
"blacklisted_tmdb_ids": []
|
|
},
|
|
"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": []
|
|
}
|
|
},
|
|
"notifications": {
|
|
"pushover": {
|
|
"service": "pushover",
|
|
"app_token": "",
|
|
"user_token": ""
|
|
},
|
|
"slack": {
|
|
"service": "slack",
|
|
"webhook_url": ""
|
|
},
|
|
"verbose": true,
|
|
},
|
|
"radarr": {
|
|
"api_key": "",
|
|
"profile": "HD-1080p",
|
|
"root_folder": "/movies/",
|
|
"url": "http://localhost:7878/"
|
|
},
|
|
"sonarr": {
|
|
"api_key": "",
|
|
"profile": "HD-1080p",
|
|
"root_folder": "/tv/",
|
|
"tags": {},
|
|
"url": "http://localhost:8989/"
|
|
},
|
|
"trakt": {
|
|
"api_key": "",
|
|
"api_secret": ""
|
|
}
|
|
}
|
|
```
|
|
|
|
|
|
## Core
|
|
|
|
```json
|
|
"core": {
|
|
"debug": false
|
|
},
|
|
```
|
|
|
|
`debug` - show debug messages.
|
|
- Default is `false` (keep it off unless your having issues).
|
|
|
|
|
|
## Automatic
|
|
Used for automatic / scheduled Traktarr tasks.
|
|
|
|
Movies can be run on a separate schedule from Shows.
|
|
|
|
```json
|
|
"automatic": {
|
|
"movies": {
|
|
"anticipated": 3,
|
|
"boxoffice": 10,
|
|
"interval": 24,
|
|
"popular": 3,
|
|
"trending": 2,
|
|
"watchlist": {
|
|
"user1": 10
|
|
"user2": 10
|
|
},
|
|
"my-custom-list": {
|
|
"user1": 10
|
|
},
|
|
"another-custom-list": {
|
|
"user2": 10
|
|
}
|
|
},
|
|
"shows": {
|
|
"anticipated": 10,
|
|
"interval": 48,
|
|
"popular": 1,
|
|
"trending": 2,
|
|
"watchlist": {
|
|
"user1": 10
|
|
"user2": 10
|
|
},
|
|
"my-custom-list": {
|
|
"user1": 10
|
|
},
|
|
"another-custom-list": {
|
|
"user2": 10
|
|
}
|
|
}
|
|
},
|
|
```
|
|
|
|
`interval` - specify how often (in hours) to run Traktarr task.
|
|
|
|
`anticipated`, `popular`, `trending`, `boxoffice` (movies only) - specify how many items from each Trakt list to find.
|
|
|
|
`watchlist` - add every user you want to fetch items from and specify how many items to fetch
|
|
|
|
You can add every (private) list you want by adding the list key.
|
|
|
|
## 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.
|
|
|
|
### Sonarr
|
|
|
|
First, we will create a tag in Sonarr (Settings > Indexers > Restrictions).
|
|
|
|
```
|
|
Must contain: BluRay, Amazon, AMZN,
|
|
Must not contain:
|
|
Tags: AMZN
|
|
```
|
|
|
|
### Traktarr
|
|
|
|
Finally, we will edit the Traktarr config and assign the `AMZN` tag to certain networks.
|
|
|
|
```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
|
|
|
|
```json
|
|
"trakt": {
|
|
"api_key": ""
|
|
}
|
|
```
|
|
|
|
`api_key` - Fill in your Trakt API key (_Client ID_).
|
|
|
|
`api_secret` - Fill in your Trakt Secret key (_Client Scret_)
|
|
|
|
# Usage
|
|
|
|
|
|
## General
|
|
|
|
```
|
|
traktarr
|
|
```
|
|
|
|
```
|
|
Usage: traktarr [OPTIONS] COMMAND [ARGS]...
|
|
|
|
Add new shows & movies to Sonarr/Radarr from Trakt lists.
|
|
|
|
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.
|
|
|
|
Commands:
|
|
movies Add new movies to Radarr.
|
|
run Run in automatic mode.
|
|
shows Add new shows to Sonarr.
|
|
trakt_authentication Authenticate Traktrarr to index your personal...
|
|
```
|
|
|
|
|
|
## Movies
|
|
|
|
```
|
|
traktarr movies --help
|
|
```
|
|
|
|
|
|
```
|
|
Usage: traktarr movies [OPTIONS]
|
|
|
|
Add new movies to Radarr.
|
|
|
|
Options:
|
|
-t, --list-type TEXT Trakt list to process. For example, anticipated,
|
|
trending, popular, boxoffice, watchlist or any
|
|
other user 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.
|
|
--user TEXT Specify which user to use for the personal Trakt
|
|
lists. Default: first user in the config
|
|
--help Show this message and exit.
|
|
```
|
|
|
|
|
|
## Shows
|
|
|
|
```
|
|
Usage: traktarr shows [OPTIONS]
|
|
|
|
Add new shows to Sonarr.
|
|
|
|
Options:
|
|
-t, --list-type TEXT Trakt list to process. For example, anticipated,
|
|
trending, popular, watchlist or any other user
|
|
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.
|
|
--user TEXT Specify which user to use for the personal Trakt
|
|
lists. Default: first user in the config
|
|
--help Show this message and exit.
|
|
```
|
|
|
|
## Examples
|
|
|
|
|
|
```
|
|
traktarr movies -t boxoffice -g comedy -l 10 --notifications
|
|
|
|
```
|
|
|
|
```
|
|
traktarr shows -t popular -l 2 --no-search
|
|
```
|