diff --git a/public/img/logos/littlecapricedreams/capricecasting.png b/public/img/logos/littlecapricedreams/capricecasting.png new file mode 100644 index 00000000..5fcd49e8 Binary files /dev/null and b/public/img/logos/littlecapricedreams/capricecasting.png differ diff --git a/public/img/logos/littlecapricedreams/capricedivas.png b/public/img/logos/littlecapricedreams/capricedivas.png new file mode 100644 index 00000000..d5049ca4 Binary files /dev/null and b/public/img/logos/littlecapricedreams/capricedivas.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/capricecasting.png b/public/img/logos/littlecapricedreams/lazy/capricecasting.png new file mode 100644 index 00000000..922f790b Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/capricecasting.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/capricedivas.png b/public/img/logos/littlecapricedreams/lazy/capricedivas.png new file mode 100644 index 00000000..20641f9f Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/capricedivas.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/favicon.png b/public/img/logos/littlecapricedreams/lazy/favicon.png index 5b73283e..337c04ea 100644 Binary files a/public/img/logos/littlecapricedreams/lazy/favicon.png and b/public/img/logos/littlecapricedreams/lazy/favicon.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/nassty.png b/public/img/logos/littlecapricedreams/lazy/nassty.png new file mode 100644 index 00000000..08c16b75 Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/nassty.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/network.png b/public/img/logos/littlecapricedreams/lazy/network.png new file mode 100644 index 00000000..8083ef9f Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/network.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/pornlifestyle.png b/public/img/logos/littlecapricedreams/lazy/pornlifestyle.png new file mode 100644 index 00000000..1e10b392 Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/pornlifestyle.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/povdreams.png b/public/img/logos/littlecapricedreams/lazy/povdreams.png new file mode 100644 index 00000000..6fa78772 Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/povdreams.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/publicsex.png b/public/img/logos/littlecapricedreams/lazy/publicsex.png new file mode 100644 index 00000000..b3099e5f Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/publicsex.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/sexlessons.png b/public/img/logos/littlecapricedreams/lazy/sexlessons.png new file mode 100644 index 00000000..92d75f9d Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/sexlessons.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/superprivatex.png b/public/img/logos/littlecapricedreams/lazy/superprivatex.png new file mode 100644 index 00000000..6484317c Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/superprivatex.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/wecumtoyou.png b/public/img/logos/littlecapricedreams/lazy/wecumtoyou.png new file mode 100644 index 00000000..fcb3deb6 Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/wecumtoyou.png differ diff --git a/public/img/logos/littlecapricedreams/lazy/xpervo.png b/public/img/logos/littlecapricedreams/lazy/xpervo.png new file mode 100644 index 00000000..561539d9 Binary files /dev/null and b/public/img/logos/littlecapricedreams/lazy/xpervo.png differ diff --git a/public/img/logos/littlecapricedreams/littlecapricedreams.png b/public/img/logos/littlecapricedreams/littlecapricedreams.png deleted file mode 100644 index 965aecac..00000000 Binary files a/public/img/logos/littlecapricedreams/littlecapricedreams.png and /dev/null differ diff --git a/public/img/logos/littlecapricedreams/misc/caprice-casting.png b/public/img/logos/littlecapricedreams/misc/caprice-casting.png new file mode 100644 index 00000000..7d7f2438 Binary files /dev/null and b/public/img/logos/littlecapricedreams/misc/caprice-casting.png differ diff --git a/public/img/logos/littlecapricedreams/misc/caprice-casting_wide.png b/public/img/logos/littlecapricedreams/misc/caprice-casting_wide.png new file mode 100644 index 00000000..b87e3252 Binary files /dev/null and b/public/img/logos/littlecapricedreams/misc/caprice-casting_wide.png differ diff --git a/public/img/logos/littlecapricedreams/misc/little-caprice-dreams_light_wide.png b/public/img/logos/littlecapricedreams/misc/little-caprice-dreams_light_wide.png new file mode 100644 index 00000000..dbea42c7 Binary files /dev/null and b/public/img/logos/littlecapricedreams/misc/little-caprice-dreams_light_wide.png differ diff --git a/public/img/logos/littlecapricedreams/nassty.png b/public/img/logos/littlecapricedreams/nassty.png new file mode 100644 index 00000000..a69f60ef Binary files /dev/null and b/public/img/logos/littlecapricedreams/nassty.png differ diff --git a/public/img/logos/littlecapricedreams/network.png b/public/img/logos/littlecapricedreams/network.png new file mode 100644 index 00000000..a84ec461 Binary files /dev/null and b/public/img/logos/littlecapricedreams/network.png differ diff --git a/public/img/logos/littlecapricedreams/pornlifestyle.png b/public/img/logos/littlecapricedreams/pornlifestyle.png new file mode 100644 index 00000000..5c23fd73 Binary files /dev/null and b/public/img/logos/littlecapricedreams/pornlifestyle.png differ diff --git a/public/img/logos/littlecapricedreams/povdreams.png b/public/img/logos/littlecapricedreams/povdreams.png new file mode 100644 index 00000000..30e05be7 Binary files /dev/null and b/public/img/logos/littlecapricedreams/povdreams.png differ diff --git a/public/img/logos/littlecapricedreams/publicsex.png b/public/img/logos/littlecapricedreams/publicsex.png new file mode 100644 index 00000000..5816ce4d Binary files /dev/null and b/public/img/logos/littlecapricedreams/publicsex.png differ diff --git a/public/img/logos/littlecapricedreams/sexlessons.png b/public/img/logos/littlecapricedreams/sexlessons.png new file mode 100644 index 00000000..493d21c9 Binary files /dev/null and b/public/img/logos/littlecapricedreams/sexlessons.png differ diff --git a/public/img/logos/littlecapricedreams/superprivatex.png b/public/img/logos/littlecapricedreams/superprivatex.png new file mode 100644 index 00000000..4c8ef932 Binary files /dev/null and b/public/img/logos/littlecapricedreams/superprivatex.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/capricecasting.png b/public/img/logos/littlecapricedreams/thumbs/capricecasting.png new file mode 100644 index 00000000..70e7b24f Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/capricecasting.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/capricedivas.png b/public/img/logos/littlecapricedreams/thumbs/capricedivas.png new file mode 100644 index 00000000..0b9d964b Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/capricedivas.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/favicon.png b/public/img/logos/littlecapricedreams/thumbs/favicon.png index 5b73283e..337c04ea 100644 Binary files a/public/img/logos/littlecapricedreams/thumbs/favicon.png and b/public/img/logos/littlecapricedreams/thumbs/favicon.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/nassty.png b/public/img/logos/littlecapricedreams/thumbs/nassty.png new file mode 100644 index 00000000..7ada0501 Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/nassty.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/network.png b/public/img/logos/littlecapricedreams/thumbs/network.png new file mode 100644 index 00000000..405722a7 Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/network.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/pornlifestyle.png b/public/img/logos/littlecapricedreams/thumbs/pornlifestyle.png new file mode 100644 index 00000000..2fa98c35 Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/pornlifestyle.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/povdreams.png b/public/img/logos/littlecapricedreams/thumbs/povdreams.png new file mode 100644 index 00000000..2c018dbe Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/povdreams.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/publicsex.png b/public/img/logos/littlecapricedreams/thumbs/publicsex.png new file mode 100644 index 00000000..8731b02c Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/publicsex.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/sexlessons.png b/public/img/logos/littlecapricedreams/thumbs/sexlessons.png new file mode 100644 index 00000000..674cb3ce Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/sexlessons.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/superprivatex.png b/public/img/logos/littlecapricedreams/thumbs/superprivatex.png new file mode 100644 index 00000000..a86550b5 Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/superprivatex.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/wecumtoyou.png b/public/img/logos/littlecapricedreams/thumbs/wecumtoyou.png new file mode 100644 index 00000000..3af7dd10 Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/wecumtoyou.png differ diff --git a/public/img/logos/littlecapricedreams/thumbs/xpervo.png b/public/img/logos/littlecapricedreams/thumbs/xpervo.png new file mode 100644 index 00000000..664df4c9 Binary files /dev/null and b/public/img/logos/littlecapricedreams/thumbs/xpervo.png differ diff --git a/public/img/logos/littlecapricedreams/wecumtoyou.png b/public/img/logos/littlecapricedreams/wecumtoyou.png new file mode 100644 index 00000000..20e3b72d Binary files /dev/null and b/public/img/logos/littlecapricedreams/wecumtoyou.png differ diff --git a/public/img/logos/littlecapricedreams/xpervo.png b/public/img/logos/littlecapricedreams/xpervo.png new file mode 100644 index 00000000..b3328d93 Binary files /dev/null and b/public/img/logos/littlecapricedreams/xpervo.png differ diff --git a/public/img/tags/fake-boobs/17.jpeg b/public/img/tags/fake-boobs/17.jpeg new file mode 100644 index 00000000..b3dfb885 Binary files /dev/null and b/public/img/tags/fake-boobs/17.jpeg differ diff --git a/public/img/tags/fake-boobs/18.jpeg b/public/img/tags/fake-boobs/18.jpeg new file mode 100644 index 00000000..a702b901 Binary files /dev/null and b/public/img/tags/fake-boobs/18.jpeg differ diff --git a/public/img/tags/fake-boobs/18a.jpeg b/public/img/tags/fake-boobs/18a.jpeg new file mode 100644 index 00000000..c7cfeb08 Binary files /dev/null and b/public/img/tags/fake-boobs/18a.jpeg differ diff --git a/public/img/tags/fake-boobs/9.jpeg b/public/img/tags/fake-boobs/9.jpeg index 95db7c97..829d2b34 100644 Binary files a/public/img/tags/fake-boobs/9.jpeg and b/public/img/tags/fake-boobs/9.jpeg differ diff --git a/public/img/tags/fake-boobs/9a.jpeg b/public/img/tags/fake-boobs/9a.jpeg new file mode 100644 index 00000000..95db7c97 Binary files /dev/null and b/public/img/tags/fake-boobs/9a.jpeg differ diff --git a/public/img/tags/fake-boobs/lazy/17.jpeg b/public/img/tags/fake-boobs/lazy/17.jpeg new file mode 100644 index 00000000..dc7dea96 Binary files /dev/null and b/public/img/tags/fake-boobs/lazy/17.jpeg differ diff --git a/public/img/tags/fake-boobs/lazy/18.jpeg b/public/img/tags/fake-boobs/lazy/18.jpeg new file mode 100644 index 00000000..25b60b83 Binary files /dev/null and b/public/img/tags/fake-boobs/lazy/18.jpeg differ diff --git a/public/img/tags/fake-boobs/lazy/18a.jpeg b/public/img/tags/fake-boobs/lazy/18a.jpeg new file mode 100644 index 00000000..f1215a99 Binary files /dev/null and b/public/img/tags/fake-boobs/lazy/18a.jpeg differ diff --git a/public/img/tags/fake-boobs/lazy/9.jpeg b/public/img/tags/fake-boobs/lazy/9.jpeg index 5fb6afe8..c4c349fd 100644 Binary files a/public/img/tags/fake-boobs/lazy/9.jpeg and b/public/img/tags/fake-boobs/lazy/9.jpeg differ diff --git a/public/img/tags/fake-boobs/lazy/9a.jpeg b/public/img/tags/fake-boobs/lazy/9a.jpeg new file mode 100644 index 00000000..5fb6afe8 Binary files /dev/null and b/public/img/tags/fake-boobs/lazy/9a.jpeg differ diff --git a/public/img/tags/fake-boobs/original/17.jpeg b/public/img/tags/fake-boobs/original/17.jpeg new file mode 100644 index 00000000..552e355b Binary files /dev/null and b/public/img/tags/fake-boobs/original/17.jpeg differ diff --git a/public/img/tags/fake-boobs/original/18.jpeg b/public/img/tags/fake-boobs/original/18.jpeg new file mode 100644 index 00000000..9b6a9c6b Binary files /dev/null and b/public/img/tags/fake-boobs/original/18.jpeg differ diff --git a/public/img/tags/fake-boobs/original/18a.jpeg b/public/img/tags/fake-boobs/original/18a.jpeg new file mode 100644 index 00000000..6938a961 Binary files /dev/null and b/public/img/tags/fake-boobs/original/18a.jpeg differ diff --git a/public/img/tags/fake-boobs/original/9.jpeg b/public/img/tags/fake-boobs/original/9.jpeg new file mode 100644 index 00000000..49d66fb3 Binary files /dev/null and b/public/img/tags/fake-boobs/original/9.jpeg differ diff --git a/public/img/tags/fake-boobs/thumbs/17.jpeg b/public/img/tags/fake-boobs/thumbs/17.jpeg new file mode 100644 index 00000000..eed03e53 Binary files /dev/null and b/public/img/tags/fake-boobs/thumbs/17.jpeg differ diff --git a/public/img/tags/fake-boobs/thumbs/18.jpeg b/public/img/tags/fake-boobs/thumbs/18.jpeg new file mode 100644 index 00000000..81c0cb6f Binary files /dev/null and b/public/img/tags/fake-boobs/thumbs/18.jpeg differ diff --git a/public/img/tags/fake-boobs/thumbs/18a.jpeg b/public/img/tags/fake-boobs/thumbs/18a.jpeg new file mode 100644 index 00000000..08f54ffd Binary files /dev/null and b/public/img/tags/fake-boobs/thumbs/18a.jpeg differ diff --git a/public/img/tags/fake-boobs/thumbs/9.jpeg b/public/img/tags/fake-boobs/thumbs/9.jpeg index ff206627..e2b84494 100644 Binary files a/public/img/tags/fake-boobs/thumbs/9.jpeg and b/public/img/tags/fake-boobs/thumbs/9.jpeg differ diff --git a/public/img/tags/fake-boobs/thumbs/9a.jpeg b/public/img/tags/fake-boobs/thumbs/9a.jpeg new file mode 100644 index 00000000..ff206627 Binary files /dev/null and b/public/img/tags/fake-boobs/thumbs/9a.jpeg differ diff --git a/seeds/00_tags.js b/seeds/00_tags.js index 5f1a58dd..8b2e0c02 100644 --- a/seeds/00_tags.js +++ b/seeds/00_tags.js @@ -842,6 +842,11 @@ const tags = [ group: 'finish', priority: 6, }, + { + name: 'swinging', + slug: 'swinging', + group: 'group', + }, { name: 'tattoos', slug: 'tattoos', @@ -1726,6 +1731,10 @@ const aliases = [ name: 'swallow', for: 'swallowing', }, + { + name: 'swingers', + for: 'swinging', + }, { name: 'strap-on', for: 'strap-on-dildo', diff --git a/seeds/01_networks.js b/seeds/01_networks.js index cc09938b..1e40047b 100644 --- a/seeds/01_networks.js +++ b/seeds/01_networks.js @@ -314,6 +314,11 @@ const networks = [ url: 'https://letsdoeit.com', parent: 'porndoe', }, + { + slug: 'littlecapricedreams', + name: 'Little Caprice Dreams', + url: 'https://www.littlecaprice-dreams.com', + }, { slug: 'mamacitaz', name: 'Mamacitaz', diff --git a/seeds/02_sites.js b/seeds/02_sites.js index 90097341..115aa108 100644 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -4226,12 +4226,83 @@ const sites = [ parent: 'letsdoeit', }, // LITTLE CAPRICE + /* { name: 'Little Caprice Dreams', slug: 'littlecapricedreams', alias: ['little caprice'], url: 'https://www.littlecaprice-dreams.com', }, + */ + { + name: 'Caprice Casting', + slug: 'capricecasting', + url: 'https://www.littlecaprice-dreams.com/caprice-casting', + parent: 'littlecapricedreams', + }, + { + name: 'Caprice Divas', + slug: 'capricedivas', + url: 'https://www.littlecaprice-dreams.com/caprice-divas', + parent: 'littlecapricedreams', + }, + { + name: 'Nassty', + slug: 'nassty', + url: 'https://www.littlecaprice-dreams.com/nassty', + parent: 'littlecapricedreams', + }, + { + name: 'POV Dreams', + slug: 'povdreams', + url: 'https://www.littlecaprice-dreams.com/pov-dreams', + parent: 'littlecapricedreams', + }, + { + name: 'Porn Lifestyle', + slug: 'pornlifestyle', + url: 'https://www.littlecaprice-dreams.com/porn-lifestyle', + parent: 'littlecapricedreams', + }, + { + name: 'Public Sex', + slug: 'publicsex', + url: 'https://www.littlecaprice-dreams.com/public-sex', + parent: 'littlecapricedreams', + }, + { + name: 'Super Private X', + slug: 'superprivatex', + url: 'https://www.littlecaprice-dreams.com/superprivatex', + parent: 'littlecapricedreams', + }, + { + name: 'Sex Lessons', + slug: 'sexlessons', + url: 'https://www.littlecaprice-dreams.com/sexlessons', + parent: 'littlecapricedreams', + }, + { + name: 'Virtual Reality', + slug: 'littlecapricevr', + url: 'https://www.littlecaprice-dreams.com/virtual-reality-little-caprice', + tags: ['virtual-reality'], + hasLogo: false, + parent: 'littlecapricedreams', + }, + { + name: 'We Cum To You', + slug: 'wecumtoyou', + url: 'https://www.littlecaprice-dreams.com/wecumtoyou-swingers', + tags: ['swinging', 'orgy'], + parent: 'littlecapricedreams', + }, + { + name: 'Xpervo', + slug: 'xpervo', + url: 'https://www.littlecaprice-dreams.com/xpervo', + parent: 'littlecapricedreams', + }, // MAMACITAZ { name: 'Her Big Ass', diff --git a/seeds/04_media.js b/seeds/04_media.js index 6e920632..10ba9bdd 100644 --- a/seeds/04_media.js +++ b/seeds/04_media.js @@ -792,16 +792,18 @@ const tagPhotos = [ ['facefucking', 3, 'Adriana Chechik in "Performing Magic Butt Tricks With Jules Jordan. What Will Disappear In Her Ass?" for Jules Jordan'], ['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 Flors 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', 9, 'Putri Cinta for Watch 4 Beauty'], ['fake-boobs', 10, 'Tia Cyrus in "Titty-Fucked Yoga Goddess" for Latina Sex Tapes'], - ['fake-boobs', 9, 'Putri Cinta for StasyQ'], ['fake-boobs', 11, 'Jessa Rhodes and Cali Carter in "Busty Anal Workout" for LesbianX'], - ['fake-boobs', 13, 'Kitana Lure for Asshole Fever'], ['fake-boobs', 3, 'Ashly Anderson for Passion HD'], - ['fake-boobs', 15, 'Amber Jade and Karma Rx in "Amber In The Hills: Part 1" for Brazzers'], + ['fake-boobs', 13, 'Kitana Lure for Asshole Fever'], ['fake-boobs', 8, 'Amber Alena for Score'], ['fake-boobs', 4, 'Capri Cavanni for Big Tits in Sports'], + ['fake-boobs', 15, 'Amber Jade and Karma Rx in "Amber In The Hills: Part 1" for Brazzers'], // ['fake-boobs', 6, 'Cathy Heaven in "Heavenly Ass" for Big Wett Butts'], ['fake-boobs', 12, 'Nikki Monroe and Kortney Kane for Big Tits In Uniform'], ['fake-cum', 0, 'Jynx Maze for Cumshot Surprise (Porn Pros)'], diff --git a/src/deep.js b/src/deep.js index bc9deb54..23edfdd1 100644 --- a/src/deep.js +++ b/src/deep.js @@ -57,7 +57,7 @@ function toBaseReleases(baseReleasesOrUrls, entity = null) { // base release with URL return { ...baseReleaseOrUrl, - entity, + entity: baseReleaseOrUrl.entity || entity, deep: false, }; } @@ -75,7 +75,7 @@ function toBaseReleases(baseReleasesOrUrls, entity = null) { // base release without URL, prepare for passthrough return { ...baseReleaseOrUrl, - entity, + entity: baseReleaseOrUrl.entity || entity, deep: false, }; } diff --git a/src/entities.js b/src/entities.js index 9c3fb174..644e356f 100644 --- a/src/entities.js +++ b/src/entities.js @@ -39,6 +39,16 @@ function curateEntity(entity, includeParameters = false) { }, includeParameters)); } + if (entity.siblings) { + curatedEntity.parent = { + ...curatedEntity.parent, + children: entity.siblings.map(sibling => curateEntity({ + ...sibling, + parent: curatedEntity.parent, + }, includeParameters)), + }; + } + if (entity.tags) { curatedEntity.tags = entity.tags.map(tag => ({ id: tag.id, @@ -72,9 +82,10 @@ async function fetchIncludedEntities() { WITH RECURSIVE channels AS ( /* select configured channels and networks */ SELECT - entities.* + entities.*, json_agg(siblings) as siblings FROM entities + LEFT JOIN entities AS siblings ON siblings.parent_id = entities.parent_id WHERE CASE WHEN :includeAll THEN @@ -91,12 +102,13 @@ async function fetchIncludedEntities() { AND entities.type = 'network') OR (entities.slug = ANY(:excludedChannels) AND entities.type = 'channel')) + GROUP BY entities.id UNION ALL /* select recursive children of configured networks */ SELECT - entities.* + entities.*, null as siblings FROM entities INNER JOIN @@ -117,7 +129,7 @@ async function fetchIncludedEntities() { WHERE channels.type = 'channel' GROUP BY - entities.id + entities.id; `, include); const curatedNetworks = rawNetworks.rows.map(entity => curateEntity(entity, true)); diff --git a/src/scrapers/littlecapricedreams.js b/src/scrapers/littlecapricedreams.js index 96c27863..e1fa5b48 100644 --- a/src/scrapers/littlecapricedreams.js +++ b/src/scrapers/littlecapricedreams.js @@ -1,8 +1,33 @@ 'use strict'; const qu = require('../utils/qu'); +const slugify = require('../utils/slugify'); -function scrapeAll(scenes) { +function matchChannel(release, channel) { + const series = channel.children || channel.parent.children; + + console.log(channel, series); + + const serieNames = series.reduce((acc, serie) => ({ + ...acc, + [serie.name]: serie, + [serie.slug]: serie, + }), {}); + + const serieName = release.title.match(new RegExp(Object.keys(serieNames).join('|'), 'i'))?.[0]; + const serie = serieName && serieNames[slugify(serieName, '')]; + + if (serie) { + return { + channel: serie.slug, + title: release.title.replace(new RegExp(`${serieName}[\\s:–-]*`), ''), + }; + } + + return null; +} + +function scrapeAll(scenes, channel) { return scenes.map(({ query, el }) => { const release = {}; @@ -14,11 +39,29 @@ function scrapeAll(scenes) { release.poster = query.img('img'); - return release; + return { + ...release, + ...matchChannel(release, channel), + }; }); } -function scrapeScene({ query }) { +async function fetchPhotos(url) { + if (url) { + const res = await qu.get(url, '.et_post_gallery'); + + if (res.ok) { + return res.item.query.urls('a').map(imgUrl => ({ + src: imgUrl, + referer: url, + })); + } + } + + return null; +} + +async function scrapeScene({ query }, url, channel, include) { const release = {}; const script = query.cnt('script.yoast-schema-graph'); @@ -41,20 +84,31 @@ function scrapeScene({ query }) { const posterData = data['@graph']?.find(item => item['@type'] === 'ImageObject'); - release.poster = posterData?.url + const poster = posterData?.url || query.q('meta[property="og:image"]', 'content') || query.q('meta[name="twitter:image"]', 'content'); + release.poster = { + src: poster, + referer: url, + }; + release.stars = Math.min(Number(query.q('.post-ratings-image', 'title')?.match(/average:\s*(\d\.\d+)/)?.[1]), 5) || null; // rating out of 5, yet sometimes 5.07? - // TODO: photo gallery, find if any video has a trailer - console.log(release); - return release; + if (include.photos) { + release.photos = await fetchPhotos(query.url('.vid_buttons a[href*="project/"]')); + } + + return { + ...release, + ...matchChannel(release, channel), + }; } async function fetchLatest(channel) { // no apparent pagination, all updates on one page - const res = await qu.getAll(`${channel.url}/videos/`, '.project'); + // using channels in part because main overview contains indistinguishable photo albums + const res = await qu.getAll(channel.url, '.project'); if (res.ok) { return scrapeAll(res.items, channel); @@ -63,11 +117,11 @@ async function fetchLatest(channel) { return res.status; } -async function fetchScene(url, channel) { +async function fetchScene(url, channel, baseRelease, include) { const res = await qu.get(url); if (res.ok) { - return scrapeScene(res.item, channel); + return scrapeScene(res.item, url, channel, include); } return res.status; diff --git a/src/utils/virtual-console.js b/src/utils/virtual-console.js index 443ad345..e4efed8e 100644 --- a/src/utils/virtual-console.js +++ b/src/utils/virtual-console.js @@ -7,7 +7,7 @@ const logger = require('../logger')(__filename); function getVirtualConsole(filepath) { const virtualConsole = new VirtualConsole(); - const context = path.basename(filepath); + const context = path.basename(filepath).replace(path.extname(filepath), ''); virtualConsole.on('error', message => logger.warn(`Error from JSDOM in ${context}: ${message}`)); virtualConsole.on('jsdomError', message => logger.warn(`Error from JSDOM in ${context}: ${message}`));