Skip to content

Commit 5bdb9bd

Browse files
committed
small fix for type name consistency
1 parent b3ff9d1 commit 5bdb9bd

File tree

3 files changed

+44
-15
lines changed

3 files changed

+44
-15
lines changed

src/api/apis/MALAPI.ts

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {SeriesModel} from '../../models/SeriesModel';
66

77
export class MALAPI extends APIModel {
88
plugin: MediaDbPlugin;
9+
typeMappings: Map<string, string>;
910

1011
constructor(plugin: MediaDbPlugin) {
1112
super();
@@ -15,6 +16,11 @@ export class MALAPI extends APIModel {
1516
this.apiDescription = 'A free API for Anime. Some results may take a long time to load.';
1617
this.apiUrl = 'https://jikan.moe/';
1718
this.types = ['movie', 'series', 'anime'];
19+
this.typeMappings = new Map<string, string>();
20+
this.typeMappings.set('movie', 'movie');
21+
this.typeMappings.set('special', 'special');
22+
this.typeMappings.set('tv', 'series');
23+
this.typeMappings.set('ova', 'ova');
1824
}
1925

2026
async searchByTitle(title: string): Promise<MediaTypeModel[]> {
@@ -34,18 +40,22 @@ export class MALAPI extends APIModel {
3440
let ret: MediaTypeModel[] = [];
3541

3642
for (const result of data.data) {
37-
if (result.type.toLowerCase() === 'movie' || result.type.toLowerCase() === 'special') {
43+
const type = this.typeMappings.get(result.type.toLowerCase());
44+
if (type === undefined) {
45+
continue;
46+
}
47+
if (type === 'movie' || type === 'special') {
3848
ret.push(new MovieModel({
39-
type: result.type,
49+
type: type,
4050
title: result.title,
4151
englishTitle: result.title_english ?? result.title,
4252
year: result.year ?? result.aired?.prop?.from?.year ?? '',
4353
dataSource: this.apiName,
4454
id: result.mal_id,
4555
} as MovieModel));
46-
} else if (result.type.toLowerCase() === 'tv' || result.type.toLowerCase() === 'ova') {
56+
} else if (type === 'series' || type === 'ova') {
4757
ret.push(new SeriesModel({
48-
type: result.type,
58+
type: type,
4959
title: result.title,
5060
englishTitle: result.title_english ?? result.title,
5161
year: result.year ?? result.aired?.prop?.from?.year ?? '',
@@ -71,9 +81,14 @@ export class MALAPI extends APIModel {
7181
console.log(data);
7282
const result = data.data;
7383

74-
if (result.type.toLowerCase() === 'movie' || result.type.toLowerCase() === 'special') {
84+
const type = this.typeMappings.get(result.type.toLowerCase());
85+
if (type === undefined) {
86+
throw Error(`${result.type.toLowerCase()} is an unsupported type.`);
87+
}
88+
89+
if (type === 'movie' || type === 'special') {
7590
const model = new MovieModel({
76-
type: result.type,
91+
type: type,
7792
title: result.title,
7893
englishTitle: result.title_english ?? result.title,
7994
year: result.year ?? result.aired?.prop?.from?.year ?? '',
@@ -96,9 +111,9 @@ export class MALAPI extends APIModel {
96111
} as MovieModel);
97112

98113
return model;
99-
} else if (result.type.toLowerCase() === 'tv' || result.type.toLowerCase() === 'ova') {
114+
} else if (type === 'series' || type === 'ova') {
100115
const model = new SeriesModel({
101-
type: result.type,
116+
type: type,
102117
title: result.title,
103118
englishTitle: result.title_english ?? result.title,
104119
year: result.year ?? result.aired?.prop?.from?.year ?? '',

src/api/apis/OMDbAPI.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {GameModel} from '../../models/GameModel';
77

88
export class OMDbAPI extends APIModel {
99
plugin: MediaDbPlugin;
10+
typeMappings: Map<string, string>;
1011

1112
constructor(plugin: MediaDbPlugin) {
1213
super();
@@ -16,6 +17,10 @@ export class OMDbAPI extends APIModel {
1617
this.apiDescription = 'A free API for Movies, Series and Games.';
1718
this.apiUrl = 'http://www.omdbapi.com/';
1819
this.types = ['movie', 'series'];
20+
this.typeMappings = new Map<string, string>();
21+
this.typeMappings.set('movie', 'movie');
22+
this.typeMappings.set('series', 'series');
23+
this.typeMappings.set('game', 'game');
1924
}
2025

2126
async searchByTitle(title: string): Promise<MediaTypeModel[]> {
@@ -46,6 +51,10 @@ export class OMDbAPI extends APIModel {
4651
let ret: MediaTypeModel[] = [];
4752

4853
for (const result of data.Search) {
54+
const type = this.typeMappings.get(result.type.toLowerCase());
55+
if (type === undefined) {
56+
continue;
57+
}
4958
if (result.Type === 'movie') {
5059
ret.push(new MovieModel({
5160
type: 'movie',
@@ -99,9 +108,14 @@ export class OMDbAPI extends APIModel {
99108
throw Error(`Received error from ${this.apiName}: ${result.Error}`);
100109
}
101110

102-
if (result.Type === 'movie') {
111+
const type = this.typeMappings.get(result.type.toLowerCase());
112+
if (type === undefined) {
113+
throw Error(`${result.type.toLowerCase()} is an unsupported type.`);
114+
}
115+
116+
if (type === 'movie') {
103117
const model = new MovieModel({
104-
type: 'movie',
118+
type: type,
105119
title: result.Title,
106120
englishTitle: result.Title,
107121
year: result.Year,
@@ -124,9 +138,9 @@ export class OMDbAPI extends APIModel {
124138
} as MovieModel);
125139

126140
return model;
127-
} else if (result.Type === 'series') {
141+
} else if (type === 'series') {
128142
const model = new SeriesModel({
129-
type: 'series',
143+
type: type,
130144
title: result.Title,
131145
englishTitle: result.Title,
132146
year: result.Year,
@@ -152,9 +166,9 @@ export class OMDbAPI extends APIModel {
152166
} as SeriesModel);
153167

154168
return model;
155-
} else if (result.Type === 'game') {
169+
} else if (type === 'game') {
156170
const model = new GameModel({
157-
type: 'game',
171+
type: type,
158172
title: result.Title,
159173
englishTitle: result.Title,
160174
year: result.Year,

src/utils/Utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function getFileName(item: MediaTypeModel) {
1313
}
1414

1515
export function replaceIllegalFileNameCharactersInString(string: string) {
16-
return string.replace(/[\\,#%&{}/*<>$"@.]*/g, '').replace(/:+/g, ' -');
16+
return string.replace(/[\\,#%&{}/*<>$"@.?]*/g, '').replace(/:+/g, ' -');
1717
}
1818

1919
export function replaceTags(template: string, mediaTypeModel: MediaTypeModel): string {

0 commit comments

Comments
 (0)