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.
 
 
 
Go to file
Gabe Farrell 5dc7251be0
feat: add response cache to all requests
7 months ago
.gitignore Github Repo Updates 8 months ago
Dockerfile Github Repo Updates 8 months ago
README.md Update README.md 8 months ago
anilist.go feat: add response cache to all requests 7 months ago
go.mod feat: add response cache to all requests 7 months ago
go.sum feat: add response cache to all requests 7 months ago
helpers.go feat: add response cache to all requests 7 months ago
main.go feat: add response cache to all requests 7 months ago
mal.go feat: add response cache to all requests 7 months ago
middleware.go feat: add response cache to all requests 7 months ago
release.sh add release script 7 months ago

README.md

sonarr-anime-importer

Easily create import lists in sonarr with MyAnimeList or AniList queries!

This is basically a wrapper for Jikan and the AniList API that maps IDs to a list with TVDB IDs so that Sonarr can import the results.

Until v1.0.0, breaking changes can happen at any time. Multiple have happened already! Be wary updating.

The "limit" parameter is required for all requests!

Pulls MyAnimeList, AniList, and TVDB ID associations from https://raw.githubusercontent.com/Kometa-Team/Anime-IDs/master/anime_ids.json.

Supported Requests

GET /v1/mal/anime

Searches anime from MyAnimeList

See https://docs.api.jikan.moe/#tag/anime/operation/getAnimeSearch for parameters.

Additional parameters supported:

  • allow_duplicates: skips de-duplication of results

Example request:

# fetches the top 10 most popular currently airing tv anime
curl "http://localhost:3333/v1/mal/anime?type=tv&status=airing&order_by=popularity&sort=asc&limit=10"

GET /v1/anilist/anime

Searches anime from AniList

Parameters:

  • isAdult: Boolean
  • search: String
  • format: [MediaFormat]
  • status: MediaStatus
  • countryOfOrigin: CountryCode
  • season: MediaSeason
  • seasonYear: Int
  • year: String
  • onList: Boolean
  • yearLesser: FuzzyDateInt
  • yearGreater: FuzzyDateInt
  • averageScoreGreater: Int
  • averageScoreLesser: Int
  • genres: [String]
  • excludedGenres: [String]
  • tags: [String]
  • excludedTags: [String]
  • minimumTagRank: Int
  • sort: [MediaSort]
  • limit: Int
  • allowDuplicates: Boolean

Example request:

# fetch the top 20, non-adult trending anime that are either TV or ONA and are made in Japan after 2020
curl "http://localhost:3333/v1/anilist/anime?format=TV,ONA&sort=TRENDING_DESC&isAdult=false&countryOfOrigin=JP&yearGreater=20200000&limit=20"

Environment

One configuration environment variable is supported:

  • ALWAYS_SKIP_MAL_IDS: Comma-separated list of MyAnimeList IDs to always skip. These do not count towards the return limit.
  • ALWAYS_SKIP_ANILIST_IDS: Comma-separated list of AniList IDs to always skip. These do not count towards the return limit.

Docker Compose

services:
  sonarr-anime-importer:
    image: gabehf/sonarr-anime-importer:latest
    container_name: sonarr-anime-importer
    ports:
      - 3333:3333
    environment:
      - ALWAYS_SKIP_MAL_IDS=12345,67890 # Comma-separated
      - ALWAYS_SKIP_ANILIST_IDS=01234,56789 # Comma-separated
    restart: unless-stopped

TODO

  • Only do "a.k.a." when logging if the anime has different romanized and english titles
  • Prevent spamming calls when few/no IDs are mapped to TVDB

Albums that fueled development

Album Artist
ZOO!! Necry Talkie (ネクライトーキー)
FREAK Necry Talkie (ネクライトーキー)
Expert In A Dying Field The Beths
Vivid ADOY
CHUU Strawberry Rush
MIMI Hug (feat. HATSUNE MIKU & KAFU)