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,