diff --git a/src/providers/sources/flixhq/search.ts b/src/providers/sources/flixhq/search.ts index 90517f6..d52f65a 100644 --- a/src/providers/sources/flixhq/search.ts +++ b/src/providers/sources/flixhq/search.ts @@ -2,7 +2,7 @@ import { load } from 'cheerio'; import { MovieMedia, ShowMedia } from '@/main/media'; import { flixHqBase } from '@/providers/sources/flixhq/common'; -import { compareMedia } from '@/utils/compare'; +import { compareMedia, compareTitle } from '@/utils/compare'; import { ScrapeContext } from '@/utils/context'; export async function getFlixhqId(ctx: ScrapeContext, media: MovieMedia | ShowMedia): Promise { @@ -18,16 +18,26 @@ export async function getFlixhqId(ctx: ScrapeContext, media: MovieMedia | ShowMe const id = query.find('div.film-poster > a').attr('href')?.slice(1); const title = query.find('div.film-detail > h2 > a').attr('title'); const year = query.find('div.film-detail > div.fd-infor > span:nth-child(1)').text(); + const seasons = year.includes('SS') ? year.split('SS')[1] : '0'; if (!id || !title || !year) return null; return { id, title, year: parseInt(year, 10), + seasons: parseInt(seasons, 10), }; }); - const matchingItem = items.find((v) => v && compareMedia(media, v.title, v.year)); + const matchingItem = items.find((v) => { + if (!v) return false; + + if (media.type === 'movie') { + return compareMedia(media, v.title, v.year); + } + + return compareTitle(media.title, v.title) && media.season.number < v.seasons + 1; + }); if (!matchingItem) return null; return matchingItem.id;