From 31e3b0bf5f9acbedd4090d13381f1faea5225f44 Mon Sep 17 00:00:00 2001 From: TheBeastLT Date: Fri, 2 Oct 2020 14:06:51 +0200 Subject: [PATCH] [scraper] check if episode imdbid fro eztv --- scraper/lib/metadata.js | 15 ++++++++++++--- scraper/scrapers/eztv/eztv_scraper.js | 6 +++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/scraper/lib/metadata.js b/scraper/lib/metadata.js index 80735ff..a806187 100644 --- a/scraper/lib/metadata.js +++ b/scraper/lib/metadata.js @@ -104,7 +104,7 @@ async function getImdbId(info, type) { return cacheWrapImdbId(key, () => new Promise((resolve, reject) => { nameToImdb({ name, year, type }, function (err, res) { - if (res) { + if (res && !info.date) { resolve(res); } else { reject(err || new Error('failed imdbId search')); @@ -112,7 +112,7 @@ async function getImdbId(info, type) { }); }).catch(() => googleIt({ query, userAgent: getRandomUserAgent(), disableConsole: true }) .then(results => results.length ? results : Promise.reject('No results')) - .catch(() => bing.web(query)) + // .catch(() => bing.web(query)) .then(results => results .map(result => result.link) .find(result => result.includes('imdb.com/title/'))) @@ -139,4 +139,13 @@ async function getKitsuId(info) { })); } -module.exports = { getMetadata, getImdbId, getKitsuId, escapeHTML, escapeTitle }; +async function isEpisodeImdbId(imdbId) { + if (!imdbId) { + return false; + } + return needle('get', `https://www.imdb.com/title/${imdbId}/`, { open_timeout: 10000, follow: 2 }) + .then(response => !!(response.body && response.body.includes('video.episode'))) + .catch((err) => false); +} + +module.exports = { getMetadata, getImdbId, getKitsuId, isEpisodeImdbId, escapeHTML, escapeTitle }; diff --git a/scraper/scrapers/eztv/eztv_scraper.js b/scraper/scrapers/eztv/eztv_scraper.js index 7de359a..7a0e776 100644 --- a/scraper/scrapers/eztv/eztv_scraper.js +++ b/scraper/scrapers/eztv/eztv_scraper.js @@ -5,6 +5,7 @@ const eztv = require('./eztv_api'); const { Type } = require('../../lib/types'); const repository = require('../../lib/repository'); const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); +const { isEpisodeImdbId } = require('../../lib/metadata'); const NAME = 'EZTV'; const UNTIL_PAGE = 10; @@ -63,6 +64,9 @@ async function processTorrentRecord(record) { // imdb id for talk shows is usually incorrect on eztv const parsedTitle = parse(record.name); const dateEpisode = !parsedTitle.season && parsedTitle.date; + if (dateEpisode && await isEpisodeImdbId(record.imdbId)) { + delete record.imdbId; + } const torrent = { infoHash: record.infoHash, @@ -73,7 +77,7 @@ async function processTorrentRecord(record) { size: record.size, seeders: record.seeders, uploadDate: record.uploadDate, - imdbId: !dateEpisode && record.imdbId, + imdbId: record.imdbId, }; return createTorrentEntry(torrent).then(() => torrent);