From e43106a434548840acecaf1276a5cebdc30e1345 Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Tue, 6 Apr 2021 11:22:16 -0400 Subject: [PATCH] fix: fall back to English genre names (#1352) * fix: fall back to English genre names * fix: use startsWith() instead of equality check --- server/api/themoviedb/index.ts | 58 ++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/server/api/themoviedb/index.ts b/server/api/themoviedb/index.ts index c52e971ba..3436e1bd7 100644 --- a/server/api/themoviedb/index.ts +++ b/server/api/themoviedb/index.ts @@ -715,7 +715,34 @@ class TheMovieDb extends ExternalAPI { 86400 // 24 hours ); - const movieGenres = sortBy(data.genres, 'name'); + if ( + !language.startsWith('en') && + data.genres.some((genre) => !genre.name) + ) { + const englishData = await this.get( + '/genre/movie/list', + { + params: { + language: 'en', + }, + }, + 86400 // 24 hours + ); + + data.genres + .filter((genre) => !genre.name) + .forEach((genre) => { + genre.name = + englishData.genres.find( + (englishGenre) => englishGenre.id === genre.id + )?.name ?? ''; + }); + } + + const movieGenres = sortBy( + data.genres.filter((genre) => genre.name), + 'name' + ); return movieGenres; } catch (e) { @@ -739,7 +766,34 @@ class TheMovieDb extends ExternalAPI { 86400 // 24 hours ); - const tvGenres = sortBy(data.genres, 'name'); + if ( + !language.startsWith('en') && + data.genres.some((genre) => !genre.name) + ) { + const englishData = await this.get( + '/genre/tv/list', + { + params: { + language: 'en', + }, + }, + 86400 // 24 hours + ); + + data.genres + .filter((genre) => !genre.name) + .forEach((genre) => { + genre.name = + englishData.genres.find( + (englishGenre) => englishGenre.id === genre.id + )?.name ?? ''; + }); + } + + const tvGenres = sortBy( + data.genres.filter((genre) => genre.name), + 'name' + ); return tvGenres; } catch (e) {