Skip to content

Commit 030a37a

Browse files
committed
今まで取得できていたアニメが取得できなくなっていたので修正
完全一致のみで判断していた 確認不足!!
1 parent 2bfe333 commit 030a37a

File tree

1 file changed

+31
-17
lines changed

1 file changed

+31
-17
lines changed

src/anime-data-scraper.ts

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,17 @@ function getProductionYear(retry: boolean) {
5252
const year2 = matchText2[1];
5353
if (retry) {
5454
// 再検索
55-
// 前後3年で検索(3年はやりすぎなので保留)
56-
// const seasons = ["winter", "spring", "summer", "autumn"];
57-
// const result: string[] = [];
58-
// const startYear = Number(year2) - 1;
59-
// [...Array(3)].forEach((_, i) => {
60-
// seasons.forEach(season => {
61-
// result.push(`${startYear + i}-${season}`);
62-
// });
63-
// })
64-
createReturnSeason(year2);
65-
returnSeason.push(`${Number(year2) - 1}-winter`);
66-
return returnSeason;
55+
// 前後3年で検索
56+
const seasons = ["winter", "spring", "summer", "autumn"];
57+
const result: string[] = [];
58+
const startYear = Number(year2) - 1;
59+
[...Array(3)].forEach((_, i) => {
60+
seasons.forEach(season => {
61+
result.push(`${startYear + i}-${season}`);
62+
});
63+
})
64+
65+
return result;
6766
} else {
6867
createReturnSeason(year2);
6968
return returnSeason;
@@ -163,30 +162,45 @@ const query = `
163162
// 取得したアニメからタイトルが一致するものを探す
164163
// dアニとannictで異なりそうな箇所を徐々に消していく
165164
function findCorrectAnime(titleText: string, data: any[]) {
165+
// removeWords()を行った回数が最もすくないアニメのindexを返す
166+
let index = [];
167+
let findTime = [];
166168
for (let i = 0; i < data.length; i++) {
167169
let annictTitle = data[i].title;
168170
let dTitle = titleText;
171+
let added = false;
169172
for (let j = 1; j <= 5; j++) {
170173
annictTitle = removeWords(annictTitle, j);
171174
dTitle = removeWords(dTitle, j);
172-
if (annictTitle === dTitle) {
173-
return i;
175+
if (annictTitle === dTitle && !added) {
176+
added = true;
177+
index.push(i)
178+
findTime.push(j)
174179
}
175180
}
176181
}
177-
return -1;
182+
if (index.length >= 1) {
183+
return index[findTime.indexOf(Math.min(...findTime))];
184+
}
185+
186+
187+
// 見つからなかった場合
188+
// 取得したアニメでエピソード差が小さいもののインデックスを出力
189+
const episodeCounts = document.querySelectorAll("a[id].clearfix").length;
190+
const arrayDiff = data.map((eachAnimeData: any) => Math.abs(episodeCounts - eachAnimeData.episodesCount));
191+
return arrayDiff.indexOf(Math.min(...arrayDiff));
178192
}
179193
function removeWords(text: string, count: number) {
180194
const remakeWords = {
181195
"Ⅰ": "I", "Ⅱ": "II", "Ⅲ": "III", "Ⅳ": "IV", "Ⅴ": "V", "Ⅵ": "VI", "Ⅶ": "VII", "Ⅷ": "VIII", "Ⅸ": "IX", "Ⅹ": "X"
182196
};
183197
switch (count) {
184198
case 1:
185-
return text.replace(/ | |\u00A0/g, "");
199+
return text.replace(/ | |\u00A0/g, "").replace("OriginalVideoAnimation", "OVA");
186200
case 2:
187201
return text.replace(/[---]/g, s => String.fromCharCode(s.charCodeAt(0) - 65248));
188202
case 3:
189-
return text.replace(/[\[(-].+[-)\]]|[]/g, "");
203+
return text.replace(/[\[-].+[-\]]|[()]/g, "");
190204
case 4:
191205
return text.replace(/?\d{1,2}|Season\d{1}|||(TV||)(|)|^|OVA/g, "");
192206
case 5:

0 commit comments

Comments
 (0)