diff --git a/assets/components/tags/photos.vue b/assets/components/tags/photos.vue index 1fd4c11c..2b963867 100644 --- a/assets/components/tags/photos.vue +++ b/assets/components/tags/photos.vue @@ -12,6 +12,7 @@ :src="`/img/${poster.thumbnail}`" :alt="tag.poster.comment" class="poster" + @load="$parent.$emit('load')" > @@ -28,6 +29,7 @@ :src="`/img/${photo.thumbnail}`" :alt="photo.comment" class="photo" + @load="$parent.$emit('load')" > @@ -67,7 +69,7 @@ export default { diff --git a/public/img/logos/porncz/network.png b/public/img/logos/porncz/network.png index f402e7d3..9285575c 100644 Binary files a/public/img/logos/porncz/network.png and b/public/img/logos/porncz/network.png differ diff --git a/public/img/logos/porncz/porncz.png b/public/img/logos/porncz/porncz.png new file mode 100644 index 00000000..4c85fab7 Binary files /dev/null and b/public/img/logos/porncz/porncz.png differ diff --git a/public/img/logos/porncz/publicfrombohemia.png b/public/img/logos/porncz/publicfrombohemia.png index 271bdf4e..962d1289 100644 Binary files a/public/img/logos/porncz/publicfrombohemia.png and b/public/img/logos/porncz/publicfrombohemia.png differ diff --git a/public/img/logos/porncz/retroporn.png b/public/img/logos/porncz/retroporn.png deleted file mode 100644 index 7ac4ff25..00000000 Binary files a/public/img/logos/porncz/retroporn.png and /dev/null differ diff --git a/public/img/logos/porncz/retroporncz.png b/public/img/logos/porncz/retroporncz.png new file mode 100644 index 00000000..cb49645e Binary files /dev/null and b/public/img/logos/porncz/retroporncz.png differ diff --git a/public/img/logos/porncz/sexwithmuslims.png b/public/img/logos/porncz/sexwithmuslims.png index f75170b9..b8f9a597 100644 Binary files a/public/img/logos/porncz/sexwithmuslims.png and b/public/img/logos/porncz/sexwithmuslims.png differ diff --git a/public/img/logos/porncz/susanayn.png b/public/img/logos/porncz/susanayn.png index 9b76c33e..adfea4f0 100644 Binary files a/public/img/logos/porncz/susanayn.png and b/public/img/logos/porncz/susanayn.png differ diff --git a/public/img/logos/porncz/teenfrombohemia.png b/public/img/logos/porncz/teenfrombohemia.png index d8f42b26..de435b06 100644 Binary files a/public/img/logos/porncz/teenfrombohemia.png and b/public/img/logos/porncz/teenfrombohemia.png differ diff --git a/public/img/logos/porncz/thumbs/amateripremium.png b/public/img/logos/porncz/thumbs/amateripremium.png index 56453eef..309c9579 100644 Binary files a/public/img/logos/porncz/thumbs/amateripremium.png and b/public/img/logos/porncz/thumbs/amateripremium.png differ diff --git a/public/img/logos/porncz/thumbs/amateursfrombohemia.png b/public/img/logos/porncz/thumbs/amateursfrombohemia.png index d62ad83c..8aeafa10 100644 Binary files a/public/img/logos/porncz/thumbs/amateursfrombohemia.png and b/public/img/logos/porncz/thumbs/amateursfrombohemia.png differ diff --git a/public/img/logos/porncz/thumbs/boysfuckmilfs.png b/public/img/logos/porncz/thumbs/boysfuckmilfs.png index b83ef247..7d5d2bd2 100644 Binary files a/public/img/logos/porncz/thumbs/boysfuckmilfs.png and b/public/img/logos/porncz/thumbs/boysfuckmilfs.png differ diff --git a/public/img/logos/porncz/thumbs/czechanalsex.png b/public/img/logos/porncz/thumbs/czechanalsex.png index cf533899..9580b89c 100644 Binary files a/public/img/logos/porncz/thumbs/czechanalsex.png and b/public/img/logos/porncz/thumbs/czechanalsex.png differ diff --git a/public/img/logos/porncz/thumbs/czechbiporn.png b/public/img/logos/porncz/thumbs/czechbiporn.png index a560eb28..dba5e7f4 100644 Binary files a/public/img/logos/porncz/thumbs/czechbiporn.png and b/public/img/logos/porncz/thumbs/czechbiporn.png differ diff --git a/public/img/logos/porncz/thumbs/czechboobs.png b/public/img/logos/porncz/thumbs/czechboobs.png index d02e21ac..9b6042e8 100644 Binary files a/public/img/logos/porncz/thumbs/czechboobs.png and b/public/img/logos/porncz/thumbs/czechboobs.png differ diff --git a/public/img/logos/porncz/thumbs/czechdeviant.png b/public/img/logos/porncz/thumbs/czechdeviant.png new file mode 100644 index 00000000..7f444c69 Binary files /dev/null and b/public/img/logos/porncz/thumbs/czechdeviant.png differ diff --git a/public/img/logos/porncz/thumbs/czechescortgirls.png b/public/img/logos/porncz/thumbs/czechescortgirls.png index cdd84d3c..09a0cf5f 100644 Binary files a/public/img/logos/porncz/thumbs/czechescortgirls.png and b/public/img/logos/porncz/thumbs/czechescortgirls.png differ diff --git a/public/img/logos/porncz/thumbs/czechexecutor.png b/public/img/logos/porncz/thumbs/czechexecutor.png index 6742a982..3e57d7b5 100644 Binary files a/public/img/logos/porncz/thumbs/czechexecutor.png and b/public/img/logos/porncz/thumbs/czechexecutor.png differ diff --git a/public/img/logos/porncz/thumbs/czechgaycity.png b/public/img/logos/porncz/thumbs/czechgaycity.png index 5918d8c5..c8e87aeb 100644 Binary files a/public/img/logos/porncz/thumbs/czechgaycity.png and b/public/img/logos/porncz/thumbs/czechgaycity.png differ diff --git a/public/img/logos/porncz/thumbs/czechgypsies.png b/public/img/logos/porncz/thumbs/czechgypsies.png index eb575dce..cd499e29 100644 Binary files a/public/img/logos/porncz/thumbs/czechgypsies.png and b/public/img/logos/porncz/thumbs/czechgypsies.png differ diff --git a/public/img/logos/porncz/thumbs/czechhitchhikers.png b/public/img/logos/porncz/thumbs/czechhitchhikers.png index f9a245c2..77129f12 100644 Binary files a/public/img/logos/porncz/thumbs/czechhitchhikers.png and b/public/img/logos/porncz/thumbs/czechhitchhikers.png differ diff --git a/public/img/logos/porncz/thumbs/czechrealdolls.png b/public/img/logos/porncz/thumbs/czechrealdolls.png index 2c4afe15..b3e07637 100644 Binary files a/public/img/logos/porncz/thumbs/czechrealdolls.png and b/public/img/logos/porncz/thumbs/czechrealdolls.png differ diff --git a/public/img/logos/porncz/thumbs/czechsexcasting.png b/public/img/logos/porncz/thumbs/czechsexcasting.png index ee539730..1fb73273 100644 Binary files a/public/img/logos/porncz/thumbs/czechsexcasting.png and b/public/img/logos/porncz/thumbs/czechsexcasting.png differ diff --git a/public/img/logos/porncz/thumbs/czechsexparty.png b/public/img/logos/porncz/thumbs/czechsexparty.png index acbe2998..41717171 100644 Binary files a/public/img/logos/porncz/thumbs/czechsexparty.png and b/public/img/logos/porncz/thumbs/czechsexparty.png differ diff --git a/public/img/logos/porncz/thumbs/czechshemale.png b/public/img/logos/porncz/thumbs/czechshemale.png index 4c15880e..2c56c54d 100644 Binary files a/public/img/logos/porncz/thumbs/czechshemale.png and b/public/img/logos/porncz/thumbs/czechshemale.png differ diff --git a/public/img/logos/porncz/thumbs/dellaitwins.png b/public/img/logos/porncz/thumbs/dellaitwins.png index c2788a2e..bae0d817 100644 Binary files a/public/img/logos/porncz/thumbs/dellaitwins.png and b/public/img/logos/porncz/thumbs/dellaitwins.png differ diff --git a/public/img/logos/porncz/thumbs/dickontrip.png b/public/img/logos/porncz/thumbs/dickontrip.png index fc9d870b..7b201a2c 100644 Binary files a/public/img/logos/porncz/thumbs/dickontrip.png and b/public/img/logos/porncz/thumbs/dickontrip.png differ diff --git a/public/img/logos/porncz/thumbs/fuckingoffice.png b/public/img/logos/porncz/thumbs/fuckingoffice.png index 13e8751e..f7081188 100644 Binary files a/public/img/logos/porncz/thumbs/fuckingoffice.png and b/public/img/logos/porncz/thumbs/fuckingoffice.png differ diff --git a/public/img/logos/porncz/thumbs/fuckingstreet.png b/public/img/logos/porncz/thumbs/fuckingstreet.png index 4bdc5845..fe82cb1c 100644 Binary files a/public/img/logos/porncz/thumbs/fuckingstreet.png and b/public/img/logos/porncz/thumbs/fuckingstreet.png differ diff --git a/public/img/logos/porncz/thumbs/girlstakeaway.png b/public/img/logos/porncz/thumbs/girlstakeaway.png index 79b04a6d..9a93fdc9 100644 Binary files a/public/img/logos/porncz/thumbs/girlstakeaway.png and b/public/img/logos/porncz/thumbs/girlstakeaway.png differ diff --git a/public/img/logos/porncz/thumbs/hornydoctor.png b/public/img/logos/porncz/thumbs/hornydoctor.png index bc97be6a..043c80f9 100644 Binary files a/public/img/logos/porncz/thumbs/hornydoctor.png and b/public/img/logos/porncz/thumbs/hornydoctor.png differ diff --git a/public/img/logos/porncz/thumbs/hornygirlscz.png b/public/img/logos/porncz/thumbs/hornygirlscz.png index d224298e..e5357e37 100644 Binary files a/public/img/logos/porncz/thumbs/hornygirlscz.png and b/public/img/logos/porncz/thumbs/hornygirlscz.png differ diff --git a/public/img/logos/porncz/thumbs/hunterpov.png b/public/img/logos/porncz/thumbs/hunterpov.png index 8850cfcc..87b246a6 100644 Binary files a/public/img/logos/porncz/thumbs/hunterpov.png and b/public/img/logos/porncz/thumbs/hunterpov.png differ diff --git a/public/img/logos/porncz/thumbs/ladydee.png b/public/img/logos/porncz/thumbs/ladydee.png index f934f3a1..b5fb91e8 100644 Binary files a/public/img/logos/porncz/thumbs/ladydee.png and b/public/img/logos/porncz/thumbs/ladydee.png differ diff --git a/public/img/logos/porncz/thumbs/network.png b/public/img/logos/porncz/thumbs/network.png index 285e7554..06e2b8d8 100644 Binary files a/public/img/logos/porncz/thumbs/network.png and b/public/img/logos/porncz/thumbs/network.png differ diff --git a/public/img/logos/porncz/thumbs/porncz.png b/public/img/logos/porncz/thumbs/porncz.png new file mode 100644 index 00000000..e2625110 Binary files /dev/null and b/public/img/logos/porncz/thumbs/porncz.png differ diff --git a/public/img/logos/porncz/thumbs/publicfrombohemia.png b/public/img/logos/porncz/thumbs/publicfrombohemia.png index 43a39655..2098b757 100644 Binary files a/public/img/logos/porncz/thumbs/publicfrombohemia.png and b/public/img/logos/porncz/thumbs/publicfrombohemia.png differ diff --git a/public/img/logos/porncz/thumbs/retroporn.png b/public/img/logos/porncz/thumbs/retroporn.png index b503babb..f8c3a73f 100644 Binary files a/public/img/logos/porncz/thumbs/retroporn.png and b/public/img/logos/porncz/thumbs/retroporn.png differ diff --git a/public/img/logos/porncz/thumbs/retroporncz.png b/public/img/logos/porncz/thumbs/retroporncz.png new file mode 100644 index 00000000..30ac3bd0 Binary files /dev/null and b/public/img/logos/porncz/thumbs/retroporncz.png differ diff --git a/public/img/logos/porncz/thumbs/sexwithmuslims.png b/public/img/logos/porncz/thumbs/sexwithmuslims.png index 75eac873..0dff8582 100644 Binary files a/public/img/logos/porncz/thumbs/sexwithmuslims.png and b/public/img/logos/porncz/thumbs/sexwithmuslims.png differ diff --git a/public/img/logos/porncz/thumbs/susanayn.png b/public/img/logos/porncz/thumbs/susanayn.png index ea9f5b03..c2886257 100644 Binary files a/public/img/logos/porncz/thumbs/susanayn.png and b/public/img/logos/porncz/thumbs/susanayn.png differ diff --git a/public/img/logos/porncz/thumbs/teenfrombohemia.png b/public/img/logos/porncz/thumbs/teenfrombohemia.png index 29b94d01..d5082f8c 100644 Binary files a/public/img/logos/porncz/thumbs/teenfrombohemia.png and b/public/img/logos/porncz/thumbs/teenfrombohemia.png differ diff --git a/public/img/tags/blonde/2.jpeg b/public/img/tags/blonde/2.jpeg new file mode 100644 index 00000000..3f2054f4 Binary files /dev/null and b/public/img/tags/blonde/2.jpeg differ diff --git a/public/img/tags/blonde/lazy/2.jpeg b/public/img/tags/blonde/lazy/2.jpeg new file mode 100644 index 00000000..add077dc Binary files /dev/null and b/public/img/tags/blonde/lazy/2.jpeg differ diff --git a/public/img/tags/blonde/thumbs/2.jpeg b/public/img/tags/blonde/thumbs/2.jpeg new file mode 100644 index 00000000..d432ccad Binary files /dev/null and b/public/img/tags/blonde/thumbs/2.jpeg differ diff --git a/public/img/tags/bondage/0.jpeg b/public/img/tags/bondage/0.jpeg new file mode 100644 index 00000000..a5c6ee3e Binary files /dev/null and b/public/img/tags/bondage/0.jpeg differ diff --git a/public/img/tags/bondage/lazy/0.jpeg b/public/img/tags/bondage/lazy/0.jpeg new file mode 100644 index 00000000..85c9da41 Binary files /dev/null and b/public/img/tags/bondage/lazy/0.jpeg differ diff --git a/public/img/tags/bondage/thumbs/0.jpeg b/public/img/tags/bondage/thumbs/0.jpeg new file mode 100644 index 00000000..165c4cff Binary files /dev/null and b/public/img/tags/bondage/thumbs/0.jpeg differ diff --git a/public/img/tags/latina/2.jpeg b/public/img/tags/latina/2.jpeg index a92f8f22..18080c0d 100755 Binary files a/public/img/tags/latina/2.jpeg and b/public/img/tags/latina/2.jpeg differ diff --git a/public/img/tags/latina/lazy/2.jpeg b/public/img/tags/latina/lazy/2.jpeg index fe5aba1e..517b826b 100644 Binary files a/public/img/tags/latina/lazy/2.jpeg and b/public/img/tags/latina/lazy/2.jpeg differ diff --git a/public/img/tags/latina/thumbs/2.jpeg b/public/img/tags/latina/thumbs/2.jpeg index 959a5aca..9e3b53b3 100644 Binary files a/public/img/tags/latina/thumbs/2.jpeg and b/public/img/tags/latina/thumbs/2.jpeg differ diff --git a/public/img/tags/oral-creampie/1.jpeg b/public/img/tags/oral-creampie/1.jpeg new file mode 100644 index 00000000..bf8b818e Binary files /dev/null and b/public/img/tags/oral-creampie/1.jpeg differ diff --git a/public/img/tags/oral-creampie/lazy/1.jpeg b/public/img/tags/oral-creampie/lazy/1.jpeg new file mode 100644 index 00000000..4e049644 Binary files /dev/null and b/public/img/tags/oral-creampie/lazy/1.jpeg differ diff --git a/public/img/tags/oral-creampie/thumbs/0.jpeg b/public/img/tags/oral-creampie/thumbs/0.jpeg index 807ba13c..3be8523c 100644 Binary files a/public/img/tags/oral-creampie/thumbs/0.jpeg and b/public/img/tags/oral-creampie/thumbs/0.jpeg differ diff --git a/public/img/tags/oral-creampie/thumbs/1.jpeg b/public/img/tags/oral-creampie/thumbs/1.jpeg new file mode 100644 index 00000000..babc6e8b Binary files /dev/null and b/public/img/tags/oral-creampie/thumbs/1.jpeg differ diff --git a/seeds/01_networks.js b/seeds/01_networks.js index 504650d3..6776dd3a 100644 --- a/seeds/01_networks.js +++ b/seeds/01_networks.js @@ -362,6 +362,11 @@ const networks = [ url: 'https://www.pimp.xxx', description: 'PIMP.XXX is the NEWEST and HOTTEST site featuring Exclusive Ultra High Definition 4k videos updated daily! Featuring the newest and the biggest pornstars with Big Tits, Tight Asses, and more!', }, + { + slug: 'porncz', + name: 'PornCZ', + url: 'https://www.porncz.com', + }, { slug: 'pornpros', name: 'Porn Pros', diff --git a/seeds/02_sites.js b/seeds/02_sites.js index a0d96441..be33a5bd 100644 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -4833,6 +4833,292 @@ const sites = [ url: 'https://bcm.xxx', parent: 'pimpxxx', }, + // PORN CZ + { + name: 'Czech Sex Casting', + slug: 'czechsexcasting', + url: 'https://www.czechsexcasting.com', + parent: 'porncz', + parameters: { + siteId: 14, + }, + }, + { + name: 'Sex With Muslims', + slug: 'sexwithmuslims', + url: 'https://www.sexwithmuslims.com', + parent: 'porncz', + parameters: { + siteId: 33, + }, + }, + { + name: 'Fuckingstreet', + slug: 'fuckingstreet', + url: 'https://www.fuckingstreet.com', + parent: 'porncz', + parameters: { + siteId: 45, + }, + }, + { + name: 'Hunter POV', + slug: 'hunterpov', + url: 'https://www.hunterpov.com', + parent: 'porncz', + parameters: { + siteId: 43, + }, + }, + { + name: 'Czech Gypsies', + slug: 'czechgypsies', + url: 'https://www.czechgypsies.com', + parent: 'porncz', + parameters: { + siteId: 34, + }, + }, + { + name: 'Dick On Trip', + slug: 'dickontrip', + url: 'https://www.dickontrip.com', + parent: 'porncz', + parameters: { + siteId: 36, + }, + }, + { + name: 'Czech Boobs', + slug: 'czechboobs', + url: 'https://www.czechboobs.com', + parent: 'porncz', + parameters: { + siteId: 38, + }, + }, + { + name: 'Czech Deviant', + slug: 'czechdeviant', + url: 'https://www.czechdeviant.com', + parent: 'porncz', + parameters: { + siteId: 47, + }, + }, + { + name: 'Amateri Premium', + slug: 'amateripremium', + url: 'https://www.amateripremium.com', + parent: 'porncz', + parameters: { + siteId: 29, + }, + }, + { + name: 'Fuckingoffice', + slug: 'fuckingoffice', + url: 'https://www.fuckingoffice.com', + parent: 'porncz', + parameters: { + siteId: 31, + }, + }, + { + name: 'Czech Executor', + slug: 'czechexecutor', + url: 'https://www.czechexecutor.com', + parent: 'porncz', + parameters: { + siteId: 40, + }, + }, + { + name: 'Czech HitchHikers', + slug: 'czechhitchhikers', + url: 'https://www.czechhitchhikers.com', + parent: 'porncz', + parameters: { + siteId: 16, + }, + }, + { + name: 'Girls Take Away', + slug: 'girlstakeaway', + url: 'https://www.girlstakeaway.com', + parent: 'porncz', + parameters: { + siteId: 30, + }, + }, + { + name: 'Czech Escort Girls', + slug: 'czechescortgirls', + url: 'https://www.czechescortgirls.com', + parent: 'porncz', + parameters: { + siteId: 35, + }, + }, + { + name: 'Horny doctor', + slug: 'hornydoctor', + url: 'https://www.hornydoctor.com', + parent: 'porncz', + parameters: { + siteId: 28, + }, + }, + { + name: 'Lady Dee', + slug: 'ladydee', + url: 'https://www.ladydee.xxx', + parent: 'porncz', + parameters: { + siteId: 32, + }, + }, + { + name: 'Teen From Bohemia', + slug: 'teenfrombohemia', + url: 'https://www.teenfrombohemia.com', + parent: 'porncz', + parameters: { + siteId: 25, + }, + }, + { + name: 'Czech Real Dolls', + slug: 'czechrealdolls', + url: 'https://www.czechrealdolls.com', + parent: 'porncz', + parameters: { + siteId: 37, + }, + }, + { + name: 'Amateurs From Bohemia', + slug: 'amateursfrombohemia', + url: 'https://www.amateursfrombohemia.com', + parent: 'porncz', + parameters: { + siteId: 26, + }, + }, + { + name: 'Czech Anal Sex', + slug: 'czechanalsex', + url: 'https://www.czechanalsex.com', + tags: ['anal'], + parent: 'porncz', + parameters: { + siteId: 17, + }, + }, + { + name: 'Dellai Twins', + slug: 'dellaitwins', + url: 'https://www.dellaitwins.com', + parent: 'porncz', + parameters: { + siteId: 18, + }, + }, + { + name: 'Chloe Lamour', + slug: 'chloelamour', + url: 'https://www.chloelamour.com', + hasLogo: false, + parent: 'porncz', + parameters: { + siteId: 44, + }, + }, + { + name: 'Public From Bohemia', + slug: 'publicfrombohemia', + url: 'https://www.publicfrombohemia.com', + parent: 'porncz', + parameters: { + siteId: 24, + }, + }, + { + name: 'Susan ayn', + slug: 'susanayn', + url: 'https://www.susanayn.com', + parent: 'porncz', + parameters: { + siteId: 27, + }, + }, + { + name: 'Horny Girls CZ', + slug: 'hornygirlscz', + url: 'https://www.hornygirlscz.com', + parent: 'porncz', + parameters: { + siteId: 21, + }, + }, + { + name: 'Czech Sex Party', + slug: 'czechsexparty', + url: 'https://www.czechsexparty.com', + parent: 'porncz', + parameters: { + siteId: 19, + }, + }, + { + name: 'Retro Porn CZ', + slug: 'retroporncz', + url: 'https://www.retroporncz.com', + parent: 'porncz', + parameters: { + siteId: 22, + }, + }, + { + name: 'Boys Fuck MILFs', + slug: 'boysfuckmilfs', + url: 'https://www.boysfuckmilfs.com', + tags: ['milf'], + parent: 'porncz', + parameters: { + siteId: 23, + }, + }, + { + name: 'Czech Bi Porn', + slug: 'czechbiporn', + url: 'https://www.czechbiporn.com', + tags: ['bisexual'], + parent: 'porncz', + parameters: { + siteId: 42, + }, + }, + { + name: 'Czech Shemale', + slug: 'czechshemale', + url: 'https://www.czechshemale.com', + tags: ['transsexual'], + parent: 'porncz', + parameters: { + siteId: 41, + }, + }, + { + name: 'Czech Gay City', + slug: 'czechgaycity', + url: 'https://www.czechgaycity.com', + tags: ['gay'], + parent: 'porncz', + parameters: { + siteId: 39, + }, + }, // PORN PROS { name: 'Real Ex Girlfriends', diff --git a/seeds/04_media.js b/seeds/04_media.js index 177e19d6..628a6773 100644 --- a/seeds/04_media.js +++ b/seeds/04_media.js @@ -599,6 +599,7 @@ const tagPosters = [ ['blowbang', 0, 'Lacy Lennon in "Lacy Lennon\'s First Blowbang" for HardX'], ['blowjob', 0, 'Adriana Chechik in "The Dinner Party" for Real Wife Stories (Brazzers)'], ['brunette', 0, 'Darcie Dolce for Playboy'], + ['bondage', 0, 'Veronica Leal for Her Limit'], ['bukkake', 0, 'Jaye Summers in "Facialized 5" for HardX'], ['caucasian', 0, 'Remy Lacroix for HardX'], ['creampie', 'poster', 'ALina Lopez in "Making Yourself Unforgettable" for Blacked'], @@ -623,7 +624,7 @@ const tagPosters = [ ['gaping', 1, 'Vina Sky in "Vina Sky Does Anal" for HardX'], ['indian', 0, 'Resha in "Casting Resha" for Watch 4 Beauty'], ['interracial', 0, 'Jaye Summers and Prince Yahshua in "Platinum Pussy 3" for Jules Jordan'], - ['latina', 0, 'Vienna Black for Spizoo'], + ['latina', 2, 'Veronica Leal for Her Limit'], ['lesbian', 0, 'Jenna Sativa and Alina Lopez in "Opposites Attract" for Girl Girl'], ['maid', 0, 'Whitney Wright in "Dredd Up Your Ass 2" for Jules Jordan'], ['milf', 0, 'Olivia Austin in "Dredd 3" for Jules Jordan'], @@ -632,7 +633,7 @@ const tagPosters = [ ['natural-boobs', 1, 'Nia Nacci for First Class POV'], ['nurse', 0, 'Sarah Vandella in "Cum For Nurse Sarah" for Brazzers'], ['oil', 2, 'Jade Kush for Passion HD'], - ['oral-creampie', 0, 'Henessy in "B(ass)t Friends" for Asshole Fever'], + ['oral-creampie', 1, 'Valentina Nappi for Her Limit'], ['orgy', 1, 'Megan Rain (DP), Morgan Lee (anal), Jessa Rhodes, Melissa Moore and Kimmy Granger in "Orgy Masters 8" for Jules Jordan'], ['parody', 0, 'Capri Cavanni and Dani Daniels in "The Whore of Wall Street" for Brazzers'], ['piercings', 0, 'Kaegune in "When The Sun Goes Down" for Suicide Girls'], @@ -675,6 +676,7 @@ const tagPhotos = [ // ['anal', 1, 'Veronica Leal and Tina Kay in "Agents On Anal Mission" for Asshole Fever'], // ['anal', 0, 'Veronica Leal'], ['behind-the-scenes', 1, 'Madison Ivy in "Day With A Pornstar" for Brazzers'], + ['blonde', 2, 'Isabelle Deltore for Her Limit'], ['blowbang', 'poster', 'Marsha May in "Feeding Frenzy 12" for Jules Jordan'], // ['bukkake', 'poster', 'Mia Malkova in "Facialized 2" for HardX'], ['caucasian', 1, 'Sheena Shaw for Brazzers'], @@ -716,13 +718,14 @@ const tagPhotos = [ ['gaping', 3, 'Jessyka Swan for 21Sextury'], ['gaping', 2, 'Alex Grey in "DP Masters 5" for Jules Jordan'], ['latina', 1, 'Jynx Maze in "Big Anal Asses 2" for HardX'], - ['latina', 2, 'Alexis Love for Penthouse'], + ['latina', 0, 'Vienna Black for Spizoo'], ['mff', 0, 'Madison Ivy, Adriana Chechik and Keiran Lee in "Day With A Pornstar" for Brazzers'], ['mfm', 6, 'Honey Gold in "Slut Puppies 12" for Jules Jordan'], ['natural-boobs', 0, 'Valentina Nappi in "Hypnotic Curves" for LesbianX'], ['oil', 1, 'Kissa Sins in "Oil Overload 14" for JulesJordan'], ['oil', 3, 'Vina Sky for Lubed'], ['oil', 0, 'Jada Stevens in "Jada Stevens Anal Ass Oiled Up For James Deen\'s Cock" for Jules Jordan'], + ['oral-creampie', 0, 'Henessy in "B(ass)t Friends" for Asshole Fever'], ['orgy', 'poster', 'Zoey Mornoe (DP), Jillian Janson (sex), Frida Sante, Katerina Kay and Natasha Starr in "Orgy Masters 6" for Jules Jordan'], ['pussy-eating', 0, 'Kali Roses licking Emily Willis\' pussy in "Peeping On My Neighbor" for Girl Girl'], ['redhead', 0, 'Penny Pax in "The Submission of Emma Marx: Boundaries" for New Sensations'], diff --git a/src/scrapers/legalporno.js b/src/scrapers/legalporno.js index 613b2cdf..ffa982fb 100644 --- a/src/scrapers/legalporno.js +++ b/src/scrapers/legalporno.js @@ -9,7 +9,8 @@ const slugify = require('../utils/slugify'); function extractTitle(originalTitle) { const titleComponents = originalTitle.split(' '); - const sceneIdMatch = titleComponents.slice(-1)[0].match(/(AB|AF|GP|SZ|IV|GIO|RS|TW|MA|FM|SAL|NR|AA|GL|BZ|FS|KS|OTS|NF|NT|AX|RV|CM)\d+/); // detect studio prefixes + // const sceneIdMatch = titleComponents.slice(-1)[0].match(/(AB|AF|GP|SZ|IV|GIO|RS|TW|MA|FM|SAL|NR|AA|GL|BZ|FS|KS|OTS|NF|NT|AX|RV|CM|BTG)\d+/); // detect studio prefixes + const sceneIdMatch = titleComponents.slice(-1)[0].match(/\w+\d+\s*$/); // detect studio prefixes const shootId = sceneIdMatch ? sceneIdMatch[0] : null; const title = sceneIdMatch ? titleComponents.slice(0, -1).join(' ') : originalTitle; diff --git a/src/scrapers/porncz.js b/src/scrapers/porncz.js new file mode 100644 index 00000000..19025143 --- /dev/null +++ b/src/scrapers/porncz.js @@ -0,0 +1,119 @@ +'use strict'; + +const http = require('../utils/http'); +const qu = require('../utils/qu'); +const slugify = require('../utils/slugify'); +const capitalize = require('../utils/capitalize'); + +function scrapeAll(scenes, channel) { + return scenes.map(({ query }) => { + const release = {}; + + release.url = query.url('h4 a', 'href', { origin: channel.url }); + release.entryId = new URL(release.url).pathname.match(/\d+$/)[0]; + + release.title = query.cnt('h4 a'); + release.duration = query.duration('.product-item-time'); + + release.poster = query.img('.product-item-image img', 'src', { origin: channel.url }); + + console.log(release); + + return release; + }); +} + +function scrapeScene({ query }, url, channel) { + const release = {}; + + release.entryId = new URL(url).pathname.match(/\d+$/)[0]; + + release.title = query.cnt('.heading-detail h1'); + release.description = query.cnt('.heading-detail p:nth-child(3)'); + + const details = query.all('.video-info-item').reduce((acc, detailEl) => { + const key = detailEl.textContent.match(/(\w+):/)[1]; + + return { ...acc, [slugify(key, '_')]: detailEl }; + }, {}); + + const { date, precision } = query.dateAgo(details.date); + + release.date = date; + release.datePrecision = precision; + + release.actors = query.cnts(details.actors, 'a').map(actor => capitalize(actor, { uncapitalize: true })); + release.duration = query.duration(details.duration); + release.tags = query.cnts(details.genres, 'a'); + + release.poster = query.img('#video-poster', 'data-poster', { origin: channel.url }); + release.photos = query.imgs('#gallery .photo-item img', 'src', { origin: channel.url }); + + release.trailer = query.video('.trailer source'); + + release.channel = slugify(query.q('.video-detail-logo img', 'alt'), ''); + + return release; +} + +function scrapeProfile({ query }, entity) { + const profile = {}; + + profile.avatar = query.img('.model-heading-photo img', 'src', { origin: entity.url }); + profile.releases = scrapeAll(qu.initAll(query.all('.product-item')), entity); + + return profile; +} + +async function fetchLatest(channel, _page = 1) { + const url = `${channel.url}/en/new-videos?option=date&do=sort`; + + // TODO: session + await http.head(url); + const res = await qu.getAll(url, '.product-item'); + + if (res.ok) { + return scrapeAll(res.items, channel); + } + + return res.status; +} + +async function fetchScene(url, channel) { + const res = await qu.get(url, 'body > .container'); + + if (res.ok) { + return scrapeScene(res.item, url, channel); + } + + return res.status; +} + +async function fetchProfile(baseActor, entity) { + const searchRes = await qu.getAll(`https://www.porncz.com/en/search-results?showModels=1&value=${baseActor.name}`, '.project-item'); + + if (searchRes.ok) { + const model = searchRes.items.find(({ query }) => query.cnt('h3 a') === baseActor.name); + + if (model) { + const modelUrl = model.query.url('h3 a', 'href', { origin: 'https://www.porncz.com' }); + const modelRes = await qu.get(`${modelUrl}?do=nextDetail`); // get more videos + + if (modelRes.ok) { + return scrapeProfile(modelRes.item, entity); + } + + return modelRes.status; + } + + return null; + } + + return searchRes.status; +} + +module.exports = { + fetchLatest, + fetchScene, + fetchProfile, +}; diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index bb5f7201..4ae97a34 100644 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -47,6 +47,7 @@ const newsensations = require('./newsensations'); const nubiles = require('./nubiles'); const perfectgonzo = require('./perfectgonzo'); const pervcity = require('./pervcity'); +const porncz = require('./porncz'); const pornhub = require('./pornhub'); const whalemember = require('./whalemember'); const privateNetwork = require('./private'); // reserved keyword @@ -128,6 +129,7 @@ module.exports = { perfectgonzo, pervcity, pimpxxx: cherrypimps, + porncz, pornpros: whalemember, private: privateNetwork, puretaboo, @@ -217,6 +219,7 @@ module.exports = { pimpxxx: cherrypimps, letsdoeit: porndoe, mamacitaz: porndoe, + porncz, pornhub, povperverts: fullpornnetwork, povpornstars: hush, diff --git a/src/utils/capitalize.js b/src/utils/capitalize.js index 11eda33e..3cb16c01 100644 --- a/src/utils/capitalize.js +++ b/src/utils/capitalize.js @@ -1,13 +1,13 @@ 'use strict'; -function capitalize(string, trim = true) { +function capitalize(string, { trim = true, uncapitalize = false } = {}) { if (!string) { return ''; } const capitalized = string .split(/\s+/) - .map(component => `${component.charAt(0).toUpperCase()}${component.slice(1)}`) + .map(component => `${component.charAt(0).toUpperCase()}${uncapitalize ? component.slice(1).toLowerCase() : component.slice(1)}`) .join(' '); return trim ? capitalized.trim() : capitalized; diff --git a/src/utils/http.js b/src/utils/http.js index 27ef089b..71c0ebe9 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -112,6 +112,15 @@ async function get(url, headers, options) { }); } +async function head(url, headers, options) { + return queue.push(options?.queueMethod || defaultQueueMethod, { + method: 'HEAD', + url, + headers, + options, + }); +} + async function post(url, body, headers, options) { return queue.push(options?.queueMethod || defaultQueueMethod, { method: 'POST', @@ -125,4 +134,5 @@ async function post(url, body, headers, options) { module.exports = { get, post, + head, }; diff --git a/src/utils/qu.js b/src/utils/qu.js index 340edf7a..d10cc652 100644 --- a/src/utils/qu.js +++ b/src/utils/qu.js @@ -170,6 +170,28 @@ function date(context, selector, format, match, attr = 'textContent') { return extractDate(dateString, format, match); } +function dateAgo(context, selector, match = /(\d+)\s*(\w+)/, attr = 'textContent') { + const timeString = q(context, selector, attr, 'textContent'); + + if (!timeString) { + return null; + } + + const timeMatch = timeString.match(match); + + if (timeMatch) { + const [n, period] = timeMatch.slice(1); + const thenDate = moment.utc().subtract(Number(n), period); + + return { + date: thenDate.toDate(), + precision: period.replace(/s$/, ''), + }; + } + + return null; +} + function image(context, selector = 'img', attr, { origin, protocol = 'https' } = {}) { const imageEl = (attr && q(context, selector, attr)) || q(context, selector, 'data-src') @@ -286,6 +308,7 @@ const quFuncs = { cnt: content, cnts: contents, date, + dateAgo, dur: duration, duration, element: q,