use AniList's MAL ID mapping instead of Kometa

pull/5/head
Gabe Farrell 8 months ago
parent cdd7b67003
commit e96577b5bc

@ -64,6 +64,7 @@ query (
isAdult: $isAdult isAdult: $isAdult
) { ) {
id id
idMal
title { title {
romaji romaji
english english
@ -78,6 +79,7 @@ type AnilistPageInfo struct {
} }
type AnilistMediaItem struct { type AnilistMediaItem struct {
Id int `json:"id"` Id int `json:"id"`
IdMal int `json:"idMal"`
Title AnilistTitle `json:"title"` Title AnilistTitle `json:"title"`
} }
type AnilistTitle struct { type AnilistTitle struct {
@ -138,7 +140,7 @@ func getAnilistAnimeSearch(idMap *ConcurrentMap, permaSkipAnilistIds []string, r
// map the data // map the data
for _, item := range result.Data.Page.Media { for _, item := range result.Data.Page.Media {
if idMap.GetByAnilistId(item.Id) == 0 { if idMap.GetByMalId(item.IdMal) == 0 {
log.Printf("Anilist ID %d (%s) has no associated TVDB ID, skipping...\n", item.Id, FullAnimeTitle(item.Title.Romaji, item.Title.English)) log.Printf("Anilist ID %d (%s) has no associated TVDB ID, skipping...\n", item.Id, FullAnimeTitle(item.Title.Romaji, item.Title.English))
continue continue
} }
@ -158,9 +160,9 @@ func getAnilistAnimeSearch(idMap *ConcurrentMap, permaSkipAnilistIds []string, r
ResponseItem{ ResponseItem{
item.Title.Romaji, item.Title.Romaji,
item.Title.English, item.Title.English,
0, item.IdMal,
item.Id, item.Id,
idMap.GetByAnilistId(item.Id), idMap.GetByMalId(item.IdMal),
}) })
usedIds[item.Id] = true usedIds[item.Id] = true
} }

@ -26,9 +26,8 @@ type AnimeEntry struct {
AnilistId int `json:"anilist_id"` AnilistId int `json:"anilist_id"`
} }
type ConcurrentMap struct { type ConcurrentMap struct {
mal map[int]int mal map[int]int
anilist map[int]int mut sync.RWMutex
mut sync.RWMutex
} }
func (m *ConcurrentMap) GetByMalId(i int) int { func (m *ConcurrentMap) GetByMalId(i int) int {
@ -36,11 +35,6 @@ func (m *ConcurrentMap) GetByMalId(i int) int {
defer m.mut.RUnlock() defer m.mut.RUnlock()
return m.mal[i] return m.mal[i]
} }
func (m *ConcurrentMap) GetByAnilistId(i int) int {
m.mut.RLock()
defer m.mut.RUnlock()
return m.anilist[i]
}
var lastBuiltAnimeIdList time.Time var lastBuiltAnimeIdList time.Time
@ -87,7 +81,6 @@ func buildIdMap(idMap *ConcurrentMap) {
log.Fatal("Error unmarshalling anime_ids.json: ", err) log.Fatal("Error unmarshalling anime_ids.json: ", err)
} }
idMap.mal = make(map[int]int, 0) idMap.mal = make(map[int]int, 0)
idMap.anilist = make(map[int]int, 0)
for _, entry := range animeMap { for _, entry := range animeMap {
if entry.MalId == nil { if entry.MalId == nil {
continue continue
@ -112,7 +105,6 @@ func buildIdMap(idMap *ConcurrentMap) {
if entry.AnilistId == 0 { if entry.AnilistId == 0 {
continue continue
} }
idMap.anilist[entry.AnilistId] = entry.TvdbId
} }
lastBuiltAnimeIdList = time.Now() lastBuiltAnimeIdList = time.Now()
} }

Loading…
Cancel
Save