Better handling of empty profiles. Modified Score scraper for Big Tit Terry Nova. Improved Naughty America and various other logos.
| Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 81 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 25 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB | 
| Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 65 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 35 KiB | 
| Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB | 
| Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.8 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 33 KiB | 
| Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.6 KiB | 
| Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 73 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 37 KiB | 
| Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 54 KiB | 
| Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 27 KiB | 
| Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB | 
| Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.5 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB | 
| After Width: | Height: | Size: 82 KiB | 
| After Width: | Height: | Size: 6.3 KiB | 
| Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 9.6 KiB | 
| Before Width: | Height: | Size: 841 KiB After Width: | Height: | Size: 852 KiB | 
| Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 133 KiB | 
|  | @ -1905,7 +1905,7 @@ const sites = [ | |||
|     // NAUGHTY AMERICA
 | ||||
|     { | ||||
|         slug: 'myfriendshotmom', | ||||
|         name: "My Friend's Hot Mom", | ||||
|         name: 'My Friend\'s Hot Mom', | ||||
|         url: 'https://www.naughtyamerica.com/site/my-friend-s-hot-mom', | ||||
|         network: 'naughtyamerica', | ||||
|     }, | ||||
|  | @ -1981,6 +1981,12 @@ const sites = [ | |||
|         url: 'https://www.naughtyamerica.com/site/seduced-by-a-cougar', | ||||
|         network: 'naughtyamerica', | ||||
|     }, | ||||
|     { | ||||
|         slug: 'showmybf', | ||||
|         name: 'Show My BF', | ||||
|         url: 'https://www.naughtyamerica.com/site/show-my-bf', | ||||
|         network: 'naughtyamerica', | ||||
|     }, | ||||
|     { | ||||
|         slug: 'mydaughtershotfriend', | ||||
|         name: "My Daughter's Hot Friend", | ||||
|  |  | |||
|  | @ -275,6 +275,10 @@ async function updateActor(actor, scraped = false, scrapeSuccess = false) { | |||
| } | ||||
| 
 | ||||
| async function mergeProfiles(profiles, actor) { | ||||
|     if (profiles.filter(Boolean).length === 0) { | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     const mergedProfile = profiles.reduce((prevProfile, profile) => { | ||||
|         if (profile === null) { | ||||
|             return prevProfile; | ||||
|  | @ -379,8 +383,8 @@ async function scrapeActors(actorNames) { | |||
|             if (profile === null) { | ||||
|                 logger.warn(`Could not find profile for actor '${actorName}'`); | ||||
| 
 | ||||
|                 if (argv.save) { | ||||
|                     await updateActor(profile, true, false); | ||||
|                 if (argv.save && !actorEntry) { | ||||
|                     await storeActor({ name: actorName }, false, false); | ||||
|                 } | ||||
| 
 | ||||
|                 return null; | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ function scrapeAll(html, site) { | |||
| 
 | ||||
|         release.date = qd('.i-date', 'MMM DD', /\w+ \d{1,2}$/) | ||||
|             || qd('.dt-box', 'MMM.DD YYYY'); | ||||
|         release.actors = site.parameters?.actors || qa('.model, .i-model', true); | ||||
|         release.actors = site?.parameters?.actors || qa('.model, .i-model', true); | ||||
|         release.duration = ql('.i-amount, .amount'); | ||||
| 
 | ||||
|         const posterEl = q('.item-img img'); | ||||
|  | @ -71,7 +71,7 @@ async function scrapeScene(html, url, site) { | |||
|     [release.entryId] = new URL(url).pathname.split('/').slice(-2); | ||||
| 
 | ||||
|     release.title = q('h2.text-uppercase, h2.title, #breadcrumb-top + h1', true) | ||||
|         || q('h1.m-title', true)?.split('»').slice(-1)[0].trim(); | ||||
|         || q('h1.m-title', true)?.split(/»|\//).slice(-1)[0].trim(); | ||||
|     release.description = qtext('.p-desc, .desc'); | ||||
| 
 | ||||
|     release.actors = qa('.value a[href*=models], .value a[href*=performer], .value a[href*=teen-babes]', true); | ||||
|  | @ -80,17 +80,10 @@ async function scrapeScene(html, url, site) { | |||
|         const actorEl = qa('.stat').find(stat => /Featuring/.test(stat.textContent)); | ||||
|         const actorString = qtext(actorEl); | ||||
| 
 | ||||
|         console.log(actorString); | ||||
|         /* | ||||
|             ?.split(/, and|,/g) | ||||
|             .map(actor => actor.trim()) | ||||
|             || []; | ||||
|             */ | ||||
|         release.actors = actorString?.split(/, and |, /g) || []; | ||||
|     } | ||||
| 
 | ||||
|     console.log(release.actors); | ||||
| 
 | ||||
|     if (release.actors.length === 0) release.actors = site.parameters?.actors; | ||||
|     if (release.actors.length === 0 && site.parameters?.actors) release.actors = site.parameters.actors; | ||||
| 
 | ||||
|     release.tags = qa('a[href*=tag]', true); | ||||
| 
 | ||||
|  | @ -129,8 +122,6 @@ async function scrapeScene(html, url, site) { | |||
|     const stars = q('.rate-box').dataset.score; | ||||
|     if (stars) release.rating = { stars }; | ||||
| 
 | ||||
|     console.log(release); | ||||
| 
 | ||||
|     return release; | ||||
| } | ||||
| 
 | ||||
|  |  | |||