diff --git a/assets/components/releases/media.vue b/assets/components/releases/media.vue index 7084d549..4985fd32 100644 --- a/assets/components/releases/media.vue +++ b/assets/components/releases/media.vue @@ -64,7 +64,7 @@ > Promise.resolve() table.text('hash'); - table.integer('size', 12); + table.bigInteger('size', 12); table.integer('quality', 6); table.integer('width', 6); table.integer('height', 6); diff --git a/public/img/tags/fake-boobs/24.jpeg b/public/img/tags/fake-boobs/24.jpeg new file mode 100644 index 00000000..f389c08a Binary files /dev/null and b/public/img/tags/fake-boobs/24.jpeg differ diff --git a/public/img/tags/fake-boobs/lazy/24.jpeg b/public/img/tags/fake-boobs/lazy/24.jpeg new file mode 100644 index 00000000..c0678007 Binary files /dev/null and b/public/img/tags/fake-boobs/lazy/24.jpeg differ diff --git a/public/img/tags/fake-boobs/originals/24.jpeg b/public/img/tags/fake-boobs/originals/24.jpeg new file mode 100644 index 00000000..cedaf791 Binary files /dev/null and b/public/img/tags/fake-boobs/originals/24.jpeg differ diff --git a/public/img/tags/fake-boobs/thumbs/24.jpeg b/public/img/tags/fake-boobs/thumbs/24.jpeg new file mode 100644 index 00000000..335618a2 Binary files /dev/null and b/public/img/tags/fake-boobs/thumbs/24.jpeg differ diff --git a/public/img/tags/milf/2.jpeg b/public/img/tags/milf/2.jpeg new file mode 100644 index 00000000..4b194b2f Binary files /dev/null and b/public/img/tags/milf/2.jpeg differ diff --git a/public/img/tags/milf/lazy/2.jpeg b/public/img/tags/milf/lazy/2.jpeg new file mode 100644 index 00000000..86af134b Binary files /dev/null and b/public/img/tags/milf/lazy/2.jpeg differ diff --git a/public/img/tags/milf/originals/2.jpeg b/public/img/tags/milf/originals/2.jpeg new file mode 100644 index 00000000..1bc53836 Binary files /dev/null and b/public/img/tags/milf/originals/2.jpeg differ diff --git a/public/img/tags/milf/thumbs/2.jpeg b/public/img/tags/milf/thumbs/2.jpeg new file mode 100644 index 00000000..c1b2cf47 Binary files /dev/null and b/public/img/tags/milf/thumbs/2.jpeg differ diff --git a/seeds/04_media.js b/seeds/04_media.js index faae26ff..bc256d8d 100644 --- a/seeds/04_media.js +++ b/seeds/04_media.js @@ -801,15 +801,16 @@ const tagPhotos = [ ['fake-boobs', 14, 'Rikki Six for Dream Dolls'], ['fake-boobs', 2, 'Gia Milana in "Hot Anal Latina" for HardX'], ['fake-boobs', 17, 'Felina in "With Flowers On The Floor" for LouisDeMirabert'], - ['fake-boobs', 18, 'Ebony Godess for Action Girls'], ['fake-boobs', 1, 'Lela Star in "Thick" for Jules Jordan'], - ['fake-boobs', 16, 'Marsha May in "Once You Go Black 7" for Jules Jordan'], + ['fake-boobs', 18, 'Ebony Godess for Action Girls'], ['fake-boobs', 9, 'Putri Cinta for Watch 4 Beauty'], ['fake-boobs', 3, 'Ashly Anderson for Passion HD'], ['fake-boobs', 22, 'Sakura Sena'], + ['fake-boobs', 16, 'Marsha May in "Once You Go Black 7" for Jules Jordan'], ['fake-boobs', 23, 'Lulu Sex Bomb in "Tropical Touch"'], ['fake-boobs', 21, 'Emelie Ekström'], ['fake-boobs', 10, 'Tia Cyrus in "Titty-Fucked Yoga Goddess" for Latina Sex Tapes'], + ['fake-boobs', 24, 'Shalina Devine in "Rumbling in the Ring, Part 2" for DDF Network'], ['fake-boobs', 20, 'Chloe Lamour for DDF Busty'], ['fake-boobs', 11, 'Jessa Rhodes and Cali Carter in "Busty Anal Workout" for LesbianX'], ['fake-boobs', 13, 'Kitana Lure for Asshole Fever'], @@ -837,6 +838,7 @@ const tagPhotos = [ ['latina', 1, 'Jynx Maze in "Big Anal Asses 2" for HardX'], ['latina', 0, 'Vienna Black for Spizoo'], ['maid', 1, 'Alessandra Jane for Brazzers'], + ['milf', 2, 'Shalina Devine for Anal Mom'], // ['milf', 0, 'Olivia Austin in "Dredd 3" for Jules Jordan'], ['mff', 0, 'Madison Ivy, Adriana Chechik and Keiran Lee in "Day With A Pornstar" for Brazzers'], ['mfm', 7, 'Rose Valerie for Euro Sex Parties'], diff --git a/src/media.js b/src/media.js index 5bcea1d8..0b30cfc1 100644 --- a/src/media.js +++ b/src/media.js @@ -657,9 +657,9 @@ async function storeMedias(baseMedias, options) { const newMediaWithEntries = savedMedias.filter(Boolean).map((media, index) => curateMediaEntry(media, index)); const newMediaEntries = newMediaWithEntries.filter(media => media.newEntry).map(media => media.entry); - console.log('insert error', newMediaEntries.filter(mediaEntry => Object.values(mediaEntry).some(value => Number(value) && Number(value) > 1000000))); - - await bulkInsert('media', newMediaEntries, false); + // TODO: path duplicates disappear in DO NOTHING query, causing association error. source duplicate detection not working? use scene generator + // await bulkInsert('media', newMediaEntries, false); + await bulkInsert('media', newMediaEntries); return [...newMediaWithEntries, ...existingHashMedias]; } diff --git a/src/scrapers/pervcity.js b/src/scrapers/pervcity.js index c1db0ef3..269cb571 100644 --- a/src/scrapers/pervcity.js +++ b/src/scrapers/pervcity.js @@ -11,13 +11,13 @@ function scrapeAll(scenes, entity) { release.url = query.url('.videoPic a'); release.entryId = query.q('.videoPic img', 'id').match(/set-target-(\d+)/)[1]; - release.title = query.q('h3 a', true); - release.description = query.q('.runtime + p', true); + release.title = query.cnt('h3 a'); + release.description = query.cnt('.runtime + p'); release.date = query.date('.date', 'MM-DD-YYYY'); release.duration = query.dur('.runtime'); - release.actors = query.all('.tour_update_models a', true); + release.actors = query.cnts('.tour_update_models a'); release.poster = query.img('.videoPic img'); release.entity = entity; @@ -31,10 +31,10 @@ function scrapeScene({ query }) { release.entryId = query.q('.trailerLeft img', 'id').match(/set-target-(\d+)/)[1]; - release.title = query.q('.infoHeader h1', true); - release.description = query.q('.infoBox p', true); + release.title = query.cnt('.infoHeader h1'); + release.description = query.cnt('.infoBox p'); - release.actors = query.all('.tour_update_models a', true); + release.actors = query.cnts('.infoBox .tour_update_models a'); release.poster = query.img('.posterimg'); release.photos = query.imgs('.trailerSnaps img').slice(1); // first photo is poster in lower quality @@ -55,10 +55,10 @@ function scrapeProfile({ query }) { const bio = query.all('.moreInfo li').reduce((acc, el) => ({ ...acc, - [slugify(query.q(el, 'span', true), '_')]: query.text(el), + [slugify(query.cnt(el, 'span'), '_')]: query.text(el), }), {}); - profile.description = query.q('.aboutModel p', true); + profile.description = query.cnt('.aboutModel p'); profile.dateOfBirth = qu.extractDate(bio.date_of_birth, ['MMMM D, YYYY', 'DD-MMM-YY']); profile.birthPlace = bio.birth_location;