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;