diff --git a/assets/components/releases/release.vue b/assets/components/releases/release.vue index 9a1c322e5..47da075d9 100755 --- a/assets/components/releases/release.vue +++ b/assets/components/releases/release.vue @@ -35,7 +35,10 @@ />
-
+

+
+

+ {{ altTitle }} +

+
+ { + await knex.schema.alterTable('releases', (table) => { + table.specificType('alt_titles', 'text ARRAY'); + }); +}; + +exports.down = async (knex) => { + await knex.schema.alterTable('releases', (table) => { + table.dropColumn('alt_titles'); + }); +}; diff --git a/public/img/logos/jerkaoke/favicon.png b/public/img/logos/jerkaoke/favicon.png new file mode 100644 index 000000000..1bcb019b0 Binary files /dev/null and b/public/img/logos/jerkaoke/favicon.png differ diff --git a/public/img/logos/jerkaoke/favicon_dark.png b/public/img/logos/jerkaoke/favicon_dark.png new file mode 100644 index 000000000..9a9c1441b Binary files /dev/null and b/public/img/logos/jerkaoke/favicon_dark.png differ diff --git a/public/img/logos/jerkaoke/favicon_light.png b/public/img/logos/jerkaoke/favicon_light.png new file mode 100644 index 000000000..95d0972a2 Binary files /dev/null and b/public/img/logos/jerkaoke/favicon_light.png differ diff --git a/public/img/logos/jerkaoke/lazy/favicon.png b/public/img/logos/jerkaoke/lazy/favicon.png new file mode 100644 index 000000000..b0fa1cd62 Binary files /dev/null and b/public/img/logos/jerkaoke/lazy/favicon.png differ diff --git a/public/img/logos/jerkaoke/lazy/favicon_dark.png b/public/img/logos/jerkaoke/lazy/favicon_dark.png new file mode 100644 index 000000000..e75217365 Binary files /dev/null and b/public/img/logos/jerkaoke/lazy/favicon_dark.png differ diff --git a/public/img/logos/jerkaoke/lazy/favicon_light.png b/public/img/logos/jerkaoke/lazy/favicon_light.png new file mode 100644 index 000000000..5a9768d91 Binary files /dev/null and b/public/img/logos/jerkaoke/lazy/favicon_light.png differ diff --git a/public/img/logos/jerkaoke/lazy/jerkaoke.png b/public/img/logos/jerkaoke/lazy/jerkaoke.png index 1f80f9744..bbb0178e1 100644 Binary files a/public/img/logos/jerkaoke/lazy/jerkaoke.png and b/public/img/logos/jerkaoke/lazy/jerkaoke.png differ diff --git a/public/img/logos/jerkaoke/lazy/network.png b/public/img/logos/jerkaoke/lazy/network.png index e94c6c44d..a49cbbd76 100644 Binary files a/public/img/logos/jerkaoke/lazy/network.png and b/public/img/logos/jerkaoke/lazy/network.png differ diff --git a/public/img/logos/jerkaoke/misc/favicon.png b/public/img/logos/jerkaoke/misc/favicon.png new file mode 100644 index 000000000..42adef913 Binary files /dev/null and b/public/img/logos/jerkaoke/misc/favicon.png differ diff --git a/public/img/logos/jerkaoke/thumbs/favicon.png b/public/img/logos/jerkaoke/thumbs/favicon.png new file mode 100644 index 000000000..b0fa1cd62 Binary files /dev/null and b/public/img/logos/jerkaoke/thumbs/favicon.png differ diff --git a/public/img/logos/jerkaoke/thumbs/favicon_dark.png b/public/img/logos/jerkaoke/thumbs/favicon_dark.png new file mode 100644 index 000000000..e75217365 Binary files /dev/null and b/public/img/logos/jerkaoke/thumbs/favicon_dark.png differ diff --git a/public/img/logos/jerkaoke/thumbs/favicon_light.png b/public/img/logos/jerkaoke/thumbs/favicon_light.png new file mode 100644 index 000000000..5a9768d91 Binary files /dev/null and b/public/img/logos/jerkaoke/thumbs/favicon_light.png differ diff --git a/public/img/logos/jerkaoke/thumbs/jerkaoke.png b/public/img/logos/jerkaoke/thumbs/jerkaoke.png index fcd276526..1093c5f00 100644 Binary files a/public/img/logos/jerkaoke/thumbs/jerkaoke.png and b/public/img/logos/jerkaoke/thumbs/jerkaoke.png differ diff --git a/public/img/logos/jerkaoke/thumbs/network.png b/public/img/logos/jerkaoke/thumbs/network.png index fe0184b3e..100788e8e 100644 Binary files a/public/img/logos/jerkaoke/thumbs/network.png and b/public/img/logos/jerkaoke/thumbs/network.png differ diff --git a/src/scrapers/modelmedia.js b/src/scrapers/modelmedia.js index bbe2ab4c4..568e91203 100644 --- a/src/scrapers/modelmedia.js +++ b/src/scrapers/modelmedia.js @@ -14,10 +14,38 @@ function scrapeAll(scenes) { const { origin, pathname, searchParams } = new URL(url); release.url = `${origin}${pathname}`; - release.actors = searchParams.get('models_name')?.split(','); + release.shootId = pathname.match(/((LA)|(LT)|(MA)|(MD)|(MM)|(MS)|(MT)|(RR))[\w-]+/)?.[0]; // pathname sometimes contains other text, match at least two letters to prevent false positives + + release.actors = searchParams.get('models_name')?.split(',').map((actor) => { + const [han, english] = actor.split('/').map((name) => name.trim()); + + if (/amateur/i.test(english)) { + // not a name + return null; + } + + return { + name: english || han, + alias: english && han, + }; + }).filter(Boolean); + } + + const rawTitle = query.content('.video-title div')?.replace(release.shootId, ''); + + if (rawTitle) { + // find / closest to Han in case there are multiple, account for no / at all + const hanIndex = rawTitle.match(/\p{Script_Extensions=Han}/u)?.index; + const splitIndex = rawTitle.slice(0, hanIndex).lastIndexOf('/') || hanIndex; + + if (hanIndex && splitIndex > -1) { + release.title = rawTitle.slice(0, splitIndex).trim(); + release.altTitles = [rawTitle.slice(splitIndex + 1).trim()]; + } else { + release.title = rawTitle; + } } - release.title = query.content('.video-title div'); release.duration = query.duration('.timestamp'); const poster = query.img('img', { attribute: 'data-src' }); @@ -31,8 +59,6 @@ function scrapeAll(scenes) { release.teaser = query.video(null, { attribute: 'data-video-src' }); - console.log(release); - return release; }); } @@ -49,17 +75,16 @@ function scrapeProfile({ query }) { } profile.description = query.content('h2') || null; - profile.height = query.number('//span[text()="Measurements"]/following-sibling::span', { match: /(\d+) cm/, matchIndex: 1 }); + profile.height = query.number('//span[text()="Height"]/following-sibling::span', { match: /(\d+) cm/, matchIndex: 1 }); profile.weight = query.number('//span[text()="Weight"]/following-sibling::span', { match: /(\d+) kg/, matchIndex: 1 }); - profile.measurements = query.number('//span[text()="Birth Place"]/following-sibling::span', { match: /(\d+) cm/, matchIndex: 1 }); + // can't find a single profile wiht this information available, but add for good measure + profile.measurements = query.content('//span[text()="Measurements"]/following-sibling::span'); profile.birthPlace = query.number('//span[text()="Birth Place"]/following-sibling::span'); profile.banner = query.img('div[class*="banner"] > img'); profile.photos = query.imgs('#MusModelSwiper img'); - console.log(profile); - return profile; } diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index 555f11c07..3f17d06c2 100755 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -82,6 +82,7 @@ const scrapers = { americanpornstar, amateureuro: porndoe, archangel, + asiam: modelmedia, assylum, aziani, badoink, @@ -115,6 +116,7 @@ const scrapers = { interracialpass: hush, inthecrack, jayrock, + jerkaoke: modelmedia, jesseloadsmonsterfacials, julesjordan, karups, @@ -178,6 +180,7 @@ const scrapers = { analviolation: fullpornnetwork, anilos: nubiles, archangel, + asiam: modelmedia, aziani, babes: mindgeek, babevr: badoink, @@ -234,6 +237,7 @@ const scrapers = { interracialpovs: hush, inthecrack, jamesdeen: fullpornnetwork, + jerkaoke: modelmedia, julesjordan, karups, kellymadison, diff --git a/src/store-releases.js b/src/store-releases.js index b3a5c6e24..5b4766bbb 100755 --- a/src/store-releases.js +++ b/src/store-releases.js @@ -32,6 +32,7 @@ async function curateReleaseEntry(release, batchId, existingRelease, type = 'sce const curatedRelease = { title: decode(release.title), + alt_titles: release.altTitles?.map((title) => decode(title)), entry_id: release.entryId || null, entity_id: release.entity.id, studio_id: release.studio?.id || null, @@ -46,6 +47,8 @@ async function curateReleaseEntry(release, batchId, existingRelease, type = 'sce updated_batch_id: batchId, }; + console.log(curatedRelease); + if (release.id) { // release is updated curatedRelease.id = release.id; diff --git a/src/utils/resolve-place.js b/src/utils/resolve-place.js index c829e863a..2e1bf9704 100755 --- a/src/utils/resolve-place.js +++ b/src/utils/resolve-place.js @@ -1,5 +1,7 @@ 'use strict'; +const config = require('config'); + const knex = require('../knex'); const logger = require('../logger')(__filename); const http = require('./http'); @@ -27,7 +29,7 @@ async function resolvePlace(query) { // https://operations.osmfoundation.org/policies/nominatim/ const res = await http.get(`https://nominatim.openstreetmap.org/search/${encodeURI(query)}?format=json&accept-language=en&addressdetails=1`, { headers: { - 'User-Agent': 'contact at moonloop.adult@protonmail.com', + 'User-Agent': config.location.userAgent, }, interval: 1000, concurrency: 1,