Skip to content

Commit

Permalink
[27] fix anidb genre update
Browse files Browse the repository at this point in the history
  • Loading branch information
meisnate12 committed Mar 16, 2022
1 parent e5e36f8 commit 8071924
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 67 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.16.1-develop26
1.16.1-develop27
6 changes: 3 additions & 3 deletions modules/cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ def _update_map(self, map_name, val1_name, val1, val2_name, val2, expired, media
sql = f"UPDATE {map_name} SET {val2_name} = ?, expiration_date = ? WHERE {val1_name} = ?"
cursor.execute(sql, (val2, expiration_date.strftime("%Y-%m-%d"), val1))
else:
sql = f"UPDATE {map_name} SET {val2_name} = ?, expiration_date = ?{'' if media_type is None else ', media_type = ?'} WHERE {val1_name} = ?"
sql = f"UPDATE {map_name} SET {val2_name} = ?, expiration_date = ?, media_type = ? WHERE {val1_name} = ?"
cursor.execute(sql, (val2, expiration_date.strftime("%Y-%m-%d"), media_type, val1))

def query_omdb(self, imdb_id, expiration):
Expand Down Expand Up @@ -504,8 +504,8 @@ def query_tmdb_show(self, tmdb_id, expiration):
tmdb_dict["status"] = row["status"] if row["status"] else None
tmdb_dict["type"] = row["type"] if row["type"] else None
tmdb_dict["tvdb_id"] = row["tvdb_id"] if row["tvdb_id"] else None
tmdb_dict["countries"] = row["countries"] if row["countries"] else None
tmdb_dict["seasons"] = row["seasons"] if row["seasons"] else None
tmdb_dict["countries"] = row["countries"] if row["countries"] else ""
tmdb_dict["seasons"] = row["seasons"] if row["seasons"] else ""
datetime_object = datetime.strptime(row["expiration_date"], "%Y-%m-%d")
time_between_insertion = datetime.now() - datetime_object
expired = time_between_insertion.days > expiration
Expand Down
103 changes: 45 additions & 58 deletions modules/convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,71 +10,58 @@
class Convert:
def __init__(self, config):
self.config = config
self._loaded = False
self._anidb_ids = {}
self._mal_to_anidb = {}
self._anilist_to_anidb = {}
self._anidb_to_imdb = {}
self._anidb_to_tvdb = {}
self._imdb_to_anidb = {}
self._tvdb_to_anidb = {}
for anime_id in self.config.get_json(anime_lists_url):
if "anidb_id" in anime_id:
self._anidb_ids[anime_id["anidb_id"]] = anime_id
if "mal_id" in anime_id:
self._mal_to_anidb[int(anime_id["mal_id"])] = int(anime_id["anidb_id"])
if "anilist_id" in anime_id:
self._anilist_to_anidb[int(anime_id["anilist_id"])] = int(anime_id["anidb_id"])
if "imdb_id" in anime_id and str(anime_id["imdb_id"]).startswith("tt"):
self._anidb_to_imdb[int(anime_id["anidb_id"])] = util.get_list(anime_id["imdb_id"])
for im_id in util.get_list(anime_id["imdb_id"]):
self._imdb_to_anidb[im_id] = int(anime_id["anidb_id"])
if "thetvdb_id" in anime_id:
self._anidb_to_tvdb[int(anime_id["anidb_id"])] = int(anime_id["thetvdb_id"])
self._tvdb_to_anidb[int(anime_id["thetvdb_id"])] = int(anime_id["anidb_id"])

@property
def anidb_ids(self):
self._load_anime_conversion()
return self._anidb_ids

@property
def mal_to_anidb(self):
self._load_anime_conversion()
return self._mal_to_anidb

@property
def anilist_to_anidb(self):
self._load_anime_conversion()
return self._anilist_to_anidb

@property
def anidb_to_imdb(self):
self._load_anime_conversion()
return self._anidb_to_imdb

@property
def anidb_to_tvdb(self):
self._load_anime_conversion()
return self._anidb_to_tvdb
def imdb_to_anidb(self, imdb_id):
if imdb_id in self._imdb_to_anidb:
return self._imdb_to_anidb[imdb_id]
else:
raise Failed(f"AniDB ID not found for IMDb ID: {imdb_id}")

def _load_anime_conversion(self):
if not self._loaded:
for anime_id in self.config.get_json(anime_lists_url):
if "anidb_id" in anime_id:
self._anidb_ids[anime_id["anidb_id"]] = anime_id
if "mal_id" in anime_id:
self._mal_to_anidb[int(anime_id["mal_id"])] = int(anime_id["anidb_id"])
if "anilist_id" in anime_id:
self._anilist_to_anidb[int(anime_id["anilist_id"])] = int(anime_id["anidb_id"])
if "imdb_id" in anime_id and str(anime_id["imdb_id"]).startswith("tt"):
self._anidb_to_imdb[int(anime_id["anidb_id"])] = util.get_list(anime_id["imdb_id"])
if "thetvdb_id" in anime_id:
self._anidb_to_tvdb[int(anime_id["anidb_id"])] = int(anime_id["thetvdb_id"])
self._loaded = True
def tvdb_to_anidb(self, tvdb_id):
if int(tvdb_id) in self._tvdb_to_anidb:
return self._tvdb_to_anidb[int(tvdb_id)]
else:
raise Failed(f"AniDB ID not found for TVDb ID: {tvdb_id}")

def anidb_to_ids(self, anidb_ids, library):
ids = []
anidb_list = anidb_ids if isinstance(anidb_ids, list) else [anidb_ids]
for anidb_id in anidb_list:
if anidb_id in library.anidb_map:
ids.append((library.anidb_map[anidb_id], "ratingKey"))
elif anidb_id in self.anidb_to_imdb:
elif anidb_id in self._anidb_to_imdb:
added = False
for imdb in self.anidb_to_imdb[anidb_id]:
for imdb in self._anidb_to_imdb[anidb_id]:
tmdb, tmdb_type = self.imdb_to_tmdb(imdb)
if tmdb and tmdb_type == "movie":
ids.append((tmdb, "tmdb"))
added = True
if added is False and anidb_id in self.anidb_to_tvdb:
ids.append((self.anidb_to_tvdb[anidb_id], "tvdb"))
elif anidb_id in self.anidb_to_tvdb:
ids.append((self.anidb_to_tvdb[anidb_id], "tvdb"))
elif anidb_id in self.anidb_ids:
if added is False and anidb_id in self._anidb_to_tvdb:
ids.append((self._anidb_to_tvdb[anidb_id], "tvdb"))
elif anidb_id in self._anidb_to_tvdb:
ids.append((self._anidb_to_tvdb[anidb_id], "tvdb"))
elif anidb_id in self._anidb_ids:
logger.warning(f"Convert Error: No TVDb ID or IMDb ID found for AniDB ID: {anidb_id}")
else:
logger.warning(f"Convert Error: AniDB ID: {anidb_id} not found")
Expand All @@ -83,8 +70,8 @@ def anidb_to_ids(self, anidb_ids, library):
def anilist_to_ids(self, anilist_ids, library):
anidb_ids = []
for anilist_id in anilist_ids:
if anilist_id in self.anilist_to_anidb:
anidb_ids.append(self.anilist_to_anidb[anilist_id])
if anilist_id in self._anilist_to_anidb:
anidb_ids.append(self._anilist_to_anidb[anilist_id])
else:
logger.warning(f"Convert Error: AniDB ID not found for AniList ID: {anilist_id}")
return self.anidb_to_ids(anidb_ids, library)
Expand All @@ -94,8 +81,8 @@ def myanimelist_to_ids(self, mal_ids, library):
for mal_id in mal_ids:
if int(mal_id) in library.mal_map:
ids.append((library.mal_map[int(mal_id)], "ratingKey"))
elif int(mal_id) in self.mal_to_anidb:
ids.extend(self.anidb_to_ids(self.mal_to_anidb[int(mal_id)], library))
elif int(mal_id) in self._mal_to_anidb:
ids.extend(self.anidb_to_ids(self._mal_to_anidb[int(mal_id)], library))
else:
logger.warning(f"Convert Error: AniDB ID not found for MyAnimeList ID: {mal_id}")
return ids
Expand Down Expand Up @@ -275,26 +262,26 @@ def get_id(self, item, library):
raise Failed(f"Hama Agent ID: {check_id} not supported")
elif item_type == "myanimelist":
library.mal_map[int(check_id)] = item.ratingKey
if int(check_id) in self.mal_to_anidb:
anidb_id = self.mal_to_anidb[int(check_id)]
if int(check_id) in self._mal_to_anidb:
anidb_id = self._mal_to_anidb[int(check_id)]
else:
raise Failed(f"AniDB ID not found for MyAnimeList ID: {check_id}")
elif item_type == "local": raise Failed("No match in Plex")
else: raise Failed(f"Agent {item_type} not supported")

if anidb_id:
if anidb_id in self.anidb_to_imdb:
if anidb_id in self._anidb_to_imdb:
added = False
for imdb in self.anidb_to_imdb[anidb_id]:
for imdb in self._anidb_to_imdb[anidb_id]:
tmdb, tmdb_type = self.imdb_to_tmdb(imdb)
if tmdb and tmdb_type == "movie":
imdb_id.append(imdb)
tmdb_id.append(tmdb)
added = True
if added is False and anidb_id in self.anidb_to_tvdb:
tvdb_id.append(self.anidb_to_tvdb[anidb_id])
elif anidb_id in self.anidb_to_tvdb:
tvdb_id.append(self.anidb_to_tvdb[anidb_id])
if added is False and anidb_id in self._anidb_to_tvdb:
tvdb_id.append(self._anidb_to_tvdb[anidb_id])
elif anidb_id in self._anidb_to_tvdb:
tvdb_id.append(self._anidb_to_tvdb[anidb_id])
else:
raise Failed(f"AniDB: {anidb_id} not found")
else:
Expand Down
19 changes: 14 additions & 5 deletions plex_meta_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,8 +459,9 @@ def library_operations(config, library):
trakt_ratings = config.Trakt.user_ratings(library.is_movie) if library.mass_trakt_rating_update else []

reverse_anidb = {}
for k, v in library.anidb_map.values():
reverse_anidb[v] = k
if library.mass_genre_update == "anidb":
for k, v in library.anidb_map.values():
reverse_anidb[v] = k

for i, item in enumerate(items, 1):
try:
Expand Down Expand Up @@ -494,6 +495,7 @@ def library_operations(config, library):
library.edit_tags("label", item, append_tags=labels)
except Failed:
pass

path = os.path.dirname(str(item.locations[0])) if library.is_movie else str(item.locations[0])
if library.Radarr and library.radarr_add_all_existing and tmdb_id:
path = path.replace(library.Radarr.plex_path, library.Radarr.radarr_path)
Expand Down Expand Up @@ -542,12 +544,19 @@ def library_operations(config, library):
anidb_item = None
if library.mass_genre_update == "anidb":
if item.ratingKey in reverse_anidb:
anidb_id = reverse_anidb[item.ratingKey]
elif tvdb_id in config.Convert._tvdb_to_anidb:
anidb_id = config.Convert._tvdb_to_anidb[tvdb_id]
elif imdb_id in config.Convert._imdb_to_anidb:
anidb_id = config.Convert._imdb_to_anidb[imdb_id]
else:
anidb_id = None
logger.info(f"{item.title[:25]:<25} | No AniDB ID for Guid: {item.guid}")
if anidb_id:
try:
anidb_item = config.AniDB.get_anime(reverse_anidb[item.ratingKey])
anidb_item = config.AniDB.get_anime(anidb_id)
except Failed as e:
logger.error(str(e))
else:
logger.info(f"{item.title[:25]:<25} | No AniDB ID for Guid: {item.guid}")

mdb_item = None
if library.mass_audience_rating_update in util.mdb_types or library.mass_critic_rating_update in util.mdb_types \
Expand Down

0 comments on commit 8071924

Please sign in to comment.