From 4a9156cfd8dd292cc91639981661bd8ed3123fbe Mon Sep 17 00:00:00 2001 From: Sam Carlton Date: Sat, 10 Apr 2021 18:10:33 -0500 Subject: [PATCH] Fuzzy match whole worfd for title and timestamps Fix super short app names matching title and timestamps --- helpers/build-video-list.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/helpers/build-video-list.js b/helpers/build-video-list.js index 10e3e01..4a32a97 100644 --- a/helpers/build-video-list.js +++ b/helpers/build-video-list.js @@ -2,20 +2,32 @@ import slugify from 'slugify' import axios from 'axios' -import { matchesWholeWord } from './matching.js' +import { fuzzyMatchesWholeWord } from './matching.js' import { byTimeThenNull } from './sort-list.js' import { getVideoEndpoint } from './app-derived.js' import parseDate from './parse-date' + +const inTimestamps = ( name, video ) => { + // If this is empty + // then reutrn false + if ( video.timestamps.length === 0 ) return false + + for ( const timestamp of video.timestamps ) { + if ( fuzzyMatchesWholeWord(name, timestamp.fullText ) ) return true + } + + return false +} + const videoFeaturesApp = function (app, video) { const appFuzzyName = app.name.toLowerCase() - if (video.title.toLowerCase().includes(appFuzzyName)) return true - const appIsInTimestamps = video.timestamps.map( timestamp => timestamp.fullText.toLowerCase()).includes(appFuzzyName) + if ( fuzzyMatchesWholeWord(appFuzzyName, video.title ) ) return true - if (appIsInTimestamps) return true + if ( inTimestamps(appFuzzyName, video) ) return true - if (matchesWholeWord(appFuzzyName, video.description.toLowerCase())) return true + if ( fuzzyMatchesWholeWord(appFuzzyName, video.description ) ) return true return false } @@ -63,7 +75,7 @@ const generateVideoTags = function ( video ) { if (videoTags.has(tagKey)) break // Check title - if (matchesWholeWord(tagWord.toLowerCase(), video.title.toLowerCase())) { + if (fuzzyMatchesWholeWord( tagWord, video.title )) { videoTags.add(tagKey) // console.log(video.title, 'has', tagKey, 'tag') @@ -73,7 +85,7 @@ const generateVideoTags = function ( video ) { } // Check description - if (matchesWholeWord(tagWord.toLowerCase(), video.description.toLowerCase())) { + if (fuzzyMatchesWholeWord( tagWord, video.description )) { videoTags.add(tagKey) // console.log(video.title, 'has', tagKey, 'tag')