Fixed slugify behavior.
This commit is contained in:
parent
e84beacca1
commit
19dbd624ca
|
|
@ -73,6 +73,9 @@ module.exports = {
|
||||||
},
|
},
|
||||||
exclude: {
|
exclude: {
|
||||||
channels: [
|
channels: [
|
||||||
|
// aylo
|
||||||
|
'pornhub',
|
||||||
|
'spicevids',
|
||||||
// 21sextreme, no longer updated
|
// 21sextreme, no longer updated
|
||||||
'mightymistress',
|
'mightymistress',
|
||||||
'dominatedgirls',
|
'dominatedgirls',
|
||||||
|
|
@ -125,8 +128,6 @@ module.exports = {
|
||||||
'ncversocinema',
|
'ncversocinema',
|
||||||
'pussybabes',
|
'pussybabes',
|
||||||
'uksinners',
|
'uksinners',
|
||||||
// mindgeek
|
|
||||||
'pornhub',
|
|
||||||
// insex
|
// insex
|
||||||
'paintoy',
|
'paintoy',
|
||||||
'aganmedon',
|
'aganmedon',
|
||||||
|
|
|
||||||
|
|
@ -557,10 +557,11 @@ const networks = [
|
||||||
url: 'https://www.mikeadriano.com',
|
url: 'https://www.mikeadriano.com',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'milehighmedia',
|
slug: 'adultmobile',
|
||||||
name: 'Mile High Media',
|
rename: 'milehighmedia',
|
||||||
url: 'https://www.milehighmedia.com',
|
name: 'Adult Mobile',
|
||||||
description: 'MileHighMedia.com is the only niche porn network you need! Watch lesbian sex, hardcore fucking and family porn stories with the hottest teens & MILFs!',
|
alias: ['mile high media', 'mile high'],
|
||||||
|
url: 'https://www.adultmobile.com',
|
||||||
parent: 'aylo',
|
parent: 'aylo',
|
||||||
parameters: {
|
parameters: {
|
||||||
forceDeep: true, // Mile High Media has movie and series information not available in the latest updates API
|
forceDeep: true, // Mile High Media has movie and series information not available in the latest updates API
|
||||||
|
|
|
||||||
|
|
@ -6903,9 +6903,10 @@ const sites = [
|
||||||
parent: 'aylo',
|
parent: 'aylo',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'tube8vip',
|
slug: 'spicevids',
|
||||||
name: 'Tube8Vip',
|
rename: 'tube8vip',
|
||||||
url: 'https://www.tube8vip.com',
|
name: 'Spicevids',
|
||||||
|
url: 'https://www.spicevids.com',
|
||||||
description: '',
|
description: '',
|
||||||
parameters: { native: true },
|
parameters: { native: true },
|
||||||
parent: 'aylo',
|
parent: 'aylo',
|
||||||
|
|
@ -6996,23 +6997,24 @@ const sites = [
|
||||||
parent: 'milehighmedia',
|
parent: 'milehighmedia',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'milehighmedia',
|
slug: 'adultmobile',
|
||||||
name: 'Mile High Media',
|
rename: 'milehighmedia',
|
||||||
|
name: 'Adult Mobile',
|
||||||
url: 'https://www.milehighmedia.com/scenes?site=323',
|
url: 'https://www.milehighmedia.com/scenes?site=323',
|
||||||
alias: ['mhm'],
|
alias: ['mhm', 'mile high media', 'mile high'],
|
||||||
parameters: { siteId: 323 },
|
parameters: { siteId: 323 },
|
||||||
parent: 'milehighmedia',
|
parent: 'adultmobile',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'realityjunkies',
|
slug: 'realityjunkies',
|
||||||
name: 'Reality Junkies',
|
name: 'Reality Junkies',
|
||||||
url: 'https://www.realityjunkies.com',
|
url: 'https://www.adultmobile.com/scenes?site=324',
|
||||||
alias: ['rj'],
|
alias: ['rj'],
|
||||||
parameters: {
|
parameters: {
|
||||||
siteId: 324,
|
siteId: 324,
|
||||||
native: true,
|
native: true,
|
||||||
},
|
},
|
||||||
parent: 'milehighmedia',
|
parent: 'adultmobile',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'sweetheartvideo',
|
slug: 'sweetheartvideo',
|
||||||
|
|
@ -7023,7 +7025,7 @@ const sites = [
|
||||||
siteId: 325,
|
siteId: 325,
|
||||||
native: true,
|
native: true,
|
||||||
},
|
},
|
||||||
parent: 'milehighmedia',
|
parent: 'adultmobile',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'sweetsinner',
|
slug: 'sweetsinner',
|
||||||
|
|
@ -7034,7 +7036,7 @@ const sites = [
|
||||||
siteId: 326,
|
siteId: 326,
|
||||||
native: true,
|
native: true,
|
||||||
},
|
},
|
||||||
parent: 'milehighmedia',
|
parent: 'adultmobile',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'familysinners',
|
slug: 'familysinners',
|
||||||
|
|
@ -7046,7 +7048,7 @@ const sites = [
|
||||||
siteId: 317,
|
siteId: 317,
|
||||||
native: true,
|
native: true,
|
||||||
},
|
},
|
||||||
parent: 'milehighmedia',
|
parent: 'adultmobile',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'iconmale',
|
slug: 'iconmale',
|
||||||
|
|
@ -7058,7 +7060,7 @@ const sites = [
|
||||||
siteId: 328,
|
siteId: 328,
|
||||||
native: true,
|
native: true,
|
||||||
},
|
},
|
||||||
parent: 'milehighmedia',
|
parent: 'adultmobile',
|
||||||
},
|
},
|
||||||
// MISSA X
|
// MISSA X
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -363,7 +363,7 @@ function scrapeProfile(data, networkName, _releases = []) {
|
||||||
profile.gender = data.gender === 'other' ? 'transsexual' : data.gender;
|
profile.gender = data.gender === 'other' ? 'transsexual' : data.gender;
|
||||||
|
|
||||||
if (profile.gender === 'male') {
|
if (profile.gender === 'male') {
|
||||||
profile.penisLength = Number(data.measurements);
|
profile.penisLength = Number(data.measurements) || null;
|
||||||
} else {
|
} else {
|
||||||
profile.measurements = data.measurements;
|
profile.measurements = data.measurements;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,8 @@ function scrapeAll(scenes, site, entryIdFromTitle) {
|
||||||
|| query.element('.rating_box')?.dataset.id
|
|| query.element('.rating_box')?.dataset.id
|
||||||
|| query.attribute('a img', 'id')?.match(/set-target-(\d+)/)?.[1];
|
|| query.attribute('a img', 'id')?.match(/set-target-(\d+)/)?.[1];
|
||||||
|
|
||||||
|
console.log(release.entryId);
|
||||||
|
|
||||||
return release;
|
return release;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,33 @@ const scrapers = {
|
||||||
// xempire,
|
// xempire,
|
||||||
},
|
},
|
||||||
actors: {
|
actors: {
|
||||||
|
// aylo
|
||||||
|
adultmobile: aylo,
|
||||||
|
babes: aylo,
|
||||||
|
bangbros: aylo,
|
||||||
|
brazzers: aylo,
|
||||||
|
digitalplayground: aylo,
|
||||||
|
doghousedigital: aylo,
|
||||||
|
fakehub: aylo,
|
||||||
|
familysinners: aylo,
|
||||||
|
gaywire: aylo,
|
||||||
|
iconmale: aylo,
|
||||||
|
letsdoeit: aylo,
|
||||||
|
men: aylo,
|
||||||
|
metrohd: aylo,
|
||||||
|
mofos: aylo,
|
||||||
|
propertysex: aylo,
|
||||||
|
realityjunkies: aylo,
|
||||||
|
realitykings: aylo,
|
||||||
|
sexyhub: aylo,
|
||||||
|
spicevids: aylo,
|
||||||
|
squirted: aylo,
|
||||||
|
sweetheartvideo: aylo,
|
||||||
|
sweetsinner: aylo,
|
||||||
|
transangels: aylo,
|
||||||
|
trueamateurs: aylo,
|
||||||
|
twistys: aylo,
|
||||||
|
// etc
|
||||||
'18vr': badoink,
|
'18vr': badoink,
|
||||||
'21sextury': gamma,
|
'21sextury': gamma,
|
||||||
adultempire,
|
adultempire,
|
||||||
|
|
@ -212,13 +239,11 @@ const scrapers = {
|
||||||
aziani,
|
aziani,
|
||||||
'2poles1hole': aziani,
|
'2poles1hole': aziani,
|
||||||
creampiled: aziani,
|
creampiled: aziani,
|
||||||
babes: aylo,
|
|
||||||
babevr: badoink,
|
babevr: badoink,
|
||||||
baddaddypov: fullpornnetwork,
|
baddaddypov: fullpornnetwork,
|
||||||
badoinkvr: badoink,
|
badoinkvr: badoink,
|
||||||
bamvisions,
|
bamvisions,
|
||||||
bang,
|
bang,
|
||||||
bangbros: aylo,
|
|
||||||
bjraw: radical,
|
bjraw: radical,
|
||||||
bluedonkeymedia,
|
bluedonkeymedia,
|
||||||
delphine: modelmedia,
|
delphine: modelmedia,
|
||||||
|
|
@ -227,13 +252,11 @@ const scrapers = {
|
||||||
boobpedia,
|
boobpedia,
|
||||||
bradmontana,
|
bradmontana,
|
||||||
brattysis: nubiles,
|
brattysis: nubiles,
|
||||||
brazzers: aylo,
|
|
||||||
burningangel: gamma,
|
burningangel: gamma,
|
||||||
cherrypimps,
|
cherrypimps,
|
||||||
cumlouder,
|
cumlouder,
|
||||||
deeplush: nubiles,
|
deeplush: nubiles,
|
||||||
devilsfilm: famedigital,
|
devilsfilm: famedigital,
|
||||||
digitalplayground: aylo,
|
|
||||||
dirtyauditions: mikeadriano,
|
dirtyauditions: mikeadriano,
|
||||||
dogfartnetwork: gamma,
|
dogfartnetwork: gamma,
|
||||||
dorcelclub: dorcel,
|
dorcelclub: dorcel,
|
||||||
|
|
@ -242,12 +265,10 @@ const scrapers = {
|
||||||
evilangel: gamma,
|
evilangel: gamma,
|
||||||
exploitedx, // only from known URL that will specify site
|
exploitedx, // only from known URL that will specify site
|
||||||
eyeontheguy: hush,
|
eyeontheguy: hush,
|
||||||
fakehub: aylo,
|
|
||||||
firstanalquest,
|
firstanalquest,
|
||||||
forbondage: porndoe,
|
forbondage: porndoe,
|
||||||
freeones,
|
freeones,
|
||||||
gangbangcreampie: gamma,
|
gangbangcreampie: gamma,
|
||||||
gaywire: aylo,
|
|
||||||
girlfaction: fullpornnetwork,
|
girlfaction: fullpornnetwork,
|
||||||
gloryholesecrets: gamma,
|
gloryholesecrets: gamma,
|
||||||
gotfilled: radical,
|
gotfilled: radical,
|
||||||
|
|
@ -258,7 +279,6 @@ const scrapers = {
|
||||||
hotcrazymess: nubiles,
|
hotcrazymess: nubiles,
|
||||||
hushpass: hush,
|
hushpass: hush,
|
||||||
hussiepass: hush,
|
hussiepass: hush,
|
||||||
iconmale: aylo,
|
|
||||||
inserted: radical,
|
inserted: radical,
|
||||||
interracialpass: hush,
|
interracialpass: hush,
|
||||||
interracialpovs: hush,
|
interracialpovs: hush,
|
||||||
|
|
@ -273,7 +293,6 @@ const scrapers = {
|
||||||
kink,
|
kink,
|
||||||
kinkmen: kink,
|
kinkmen: kink,
|
||||||
kinkvr: kink,
|
kinkvr: kink,
|
||||||
letsdoeit: aylo,
|
|
||||||
loveherfilms,
|
loveherfilms,
|
||||||
loveherfeet: loveherfilms,
|
loveherfeet: loveherfilms,
|
||||||
shelovesblack: loveherfilms,
|
shelovesblack: loveherfilms,
|
||||||
|
|
@ -281,13 +300,9 @@ const scrapers = {
|
||||||
analvids: pornbox,
|
analvids: pornbox,
|
||||||
littlecapricedreams,
|
littlecapricedreams,
|
||||||
mamacitaz: porndoe,
|
mamacitaz: porndoe,
|
||||||
men: aylo,
|
|
||||||
mariskax,
|
mariskax,
|
||||||
metrohd: aylo,
|
|
||||||
milehighmedia: aylo,
|
|
||||||
milfvr: wankzvr,
|
milfvr: wankzvr,
|
||||||
missax,
|
missax,
|
||||||
mofos: aylo,
|
|
||||||
mylf: teamskeet,
|
mylf: teamskeet,
|
||||||
mugfucked: fullpornnetwork,
|
mugfucked: fullpornnetwork,
|
||||||
naughtyamerica,
|
naughtyamerica,
|
||||||
|
|
@ -311,7 +326,6 @@ const scrapers = {
|
||||||
povpornstars: hush,
|
povpornstars: hush,
|
||||||
private: privateNetwork,
|
private: privateNetwork,
|
||||||
purgatoryx,
|
purgatoryx,
|
||||||
realitykings: aylo,
|
|
||||||
realvr: badoink,
|
realvr: badoink,
|
||||||
rickysroom,
|
rickysroom,
|
||||||
roccosiffredi: famedigital,
|
roccosiffredi: famedigital,
|
||||||
|
|
@ -319,7 +333,6 @@ const scrapers = {
|
||||||
score,
|
score,
|
||||||
seehimfuck: hush,
|
seehimfuck: hush,
|
||||||
sexlikereal,
|
sexlikereal,
|
||||||
sexyhub: aylo,
|
|
||||||
silverstonedvd: famedigital,
|
silverstonedvd: famedigital,
|
||||||
silviasaint: famedigital,
|
silviasaint: famedigital,
|
||||||
spermmania: snowvalley,
|
spermmania: snowvalley,
|
||||||
|
|
@ -345,11 +358,9 @@ const scrapers = {
|
||||||
testedefudelidade,
|
testedefudelidade,
|
||||||
thatsitcomshow: nubiles,
|
thatsitcomshow: nubiles,
|
||||||
tokyohot,
|
tokyohot,
|
||||||
transangels: aylo,
|
|
||||||
transbella: porndoe,
|
transbella: porndoe,
|
||||||
tranzvr: wankzvr,
|
tranzvr: wankzvr,
|
||||||
trueanal: mikeadriano,
|
trueanal: mikeadriano,
|
||||||
twistys: aylo,
|
|
||||||
vipsexvault: porndoe,
|
vipsexvault: porndoe,
|
||||||
virtualtaboo,
|
virtualtaboo,
|
||||||
darkroomvr: virtualtaboo,
|
darkroomvr: virtualtaboo,
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ const accentMap = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const plainCharRegex = /[a-zA-Z0-9]/;
|
const plainCharRegex = /[a-zA-Z0-9]/;
|
||||||
const defaultPunctuationRegex = /[.,?!:;&'‘’"“”…()[]{}<>\/*—]/;
|
const defaultPunctuationRegex = /[.,?!:;&'‘’"“”…()[\]{}<>/*—]/;
|
||||||
const defaultSymbolRegex = /[@$€£#%^+=\\~]/;
|
const defaultSymbolRegex = /[@$€£#%^+=\\~]/;
|
||||||
|
|
||||||
function slugify(strings, delimiter = '-', {
|
function slugify(strings, delimiter = '-', {
|
||||||
|
|
@ -50,7 +50,7 @@ function slugify(strings, delimiter = '-', {
|
||||||
lower = true,
|
lower = true,
|
||||||
encode = false,
|
encode = false,
|
||||||
accents: keepAccents = false,
|
accents: keepAccents = false,
|
||||||
punctuation: keepPunctuation = false,
|
punctuation: keepPunctuation = 'split',
|
||||||
punctuationRegex = defaultPunctuationRegex,
|
punctuationRegex = defaultPunctuationRegex,
|
||||||
symbols: keepSymbols = false,
|
symbols: keepSymbols = false,
|
||||||
symbolRegex = defaultSymbolRegex,
|
symbolRegex = defaultSymbolRegex,
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,25 @@ const actors = [
|
||||||
{ entity: 'babes', name: 'Alina Lopez', fields: ['avatar', 'description', 'gender', 'height', 'measurements', 'birthPlace', 'dateOfBirth', 'weight', 'hairColor', 'ethnicity', 'hasTattoos', 'hasPiercings'] },
|
{ entity: 'babes', name: 'Alina Lopez', fields: ['avatar', 'description', 'gender', 'height', 'measurements', 'birthPlace', 'dateOfBirth', 'weight', 'hairColor', 'ethnicity', 'hasTattoos', 'hasPiercings'] },
|
||||||
{ entity: 'letsdoeit', name: 'Nicole Doshi', fields: ['avatar', 'description', 'gender', 'height', 'measurements', 'birthPlace', 'dateOfBirth'] },
|
{ entity: 'letsdoeit', name: 'Nicole Doshi', fields: ['avatar', 'description', 'gender', 'height', 'measurements', 'birthPlace', 'dateOfBirth'] },
|
||||||
{ entity: 'men', name: 'Cade Maddox', fields: ['avatar', 'description', 'gender', 'height', 'ethnicity', 'penisLength', 'dateOfBirth', 'weight', 'hairColor', 'hasTattoos'] },
|
{ entity: 'men', name: 'Cade Maddox', fields: ['avatar', 'description', 'gender', 'height', 'ethnicity', 'penisLength', 'dateOfBirth', 'weight', 'hairColor', 'hasTattoos'] },
|
||||||
|
{ entity: 'metrohd', name: 'April Olsen', fields: ['avatar', 'description', 'gender', 'birthPlace', 'height', 'measurements', 'dateOfBirth', 'weight'] },
|
||||||
|
{ entity: 'mofos', name: 'Ariana Starr', fields: ['avatar', 'description', 'gender', 'birthPlace', 'height', 'measurements', 'dateOfBirth'] },
|
||||||
|
{ entity: 'propertysex', name: 'Desiree Dulce', fields: ['avatar', 'description', 'gender', 'birthPlace', 'height', 'measurements', 'dateOfBirth', 'weight', 'hairColor', 'ethnicity', 'hasPiercings'] },
|
||||||
|
{ entity: 'sexyhub', name: 'Angie Lynx', fields: ['avatar', 'description', 'gender', 'birthPlace', 'height', 'measurements', 'dateOfBirth'] },
|
||||||
|
{ entity: 'squirted', name: 'Nicole Doshi', fields: ['avatar', 'description', 'gender', 'birthPlace', 'height', 'measurements', 'dateOfBirth'] },
|
||||||
|
{ entity: 'transangels', name: 'Aubrey Kate', fields: ['avatar', 'description', 'gender', 'birthPlace', 'height', 'measurements', 'dateOfBirth', 'weight', 'hairColor', 'ethnicity', 'hasTattoos'] },
|
||||||
|
{ entity: 'trueamateurs', name: 'Natalie FLowers', fields: ['avatar', 'gender'] },
|
||||||
|
{ entity: 'spicevids', name: 'Remy LaCroix', fields: ['avatar', 'gender', 'description', 'height', 'measurements', 'dateOfBirth', 'weight'] },
|
||||||
|
{ entity: 'twistys', name: 'Remy LaCroix', fields: ['avatar', 'gender', 'description', 'height', 'measurements', 'dateOfBirth', 'weight', 'birthPlace', 'hairColor', 'ethnicity', 'naturalBoobs', 'hasPiercings'] },
|
||||||
|
// aylo > adult mobile
|
||||||
|
{ entity: 'adultmobile', name: 'Scarlett Alexis', fields: ['avatar', 'gender'] },
|
||||||
|
{ entity: 'doghousedigital', name: 'Scarlett Alexis', fields: ['avatar', 'gender'] },
|
||||||
|
{ entity: 'familysinners', name: 'Scarlett Alexis', fields: ['avatar', 'gender'] },
|
||||||
|
{ entity: 'iconmale', name: 'Troy Accola', fields: ['avatar', 'gender', 'hairColor', 'ethnicity', 'hasTattoos', 'hasPiercings'] },
|
||||||
|
{ entity: 'realityjunkies', name: 'Scarlett Alexis', fields: ['avatar', 'gender'] },
|
||||||
|
{ entity: 'sweetheartvideo', name: 'Lexi Lore', fields: ['avatar', 'gender', 'hairColor', 'ethnicity', 'hasTattoos', 'hasPiercings'] },
|
||||||
|
{ entity: 'sweetsinner', name: 'Anna Claire Clouds', fields: ['avatar', 'gender'] },
|
||||||
|
// bangros
|
||||||
|
{ entity: 'bangbros', name: 'Kira Perez', fields: ['avatar', 'gender', 'ethnicity', 'hairColor'] },
|
||||||
];
|
];
|
||||||
|
|
||||||
const actorScrapers = scrapers.actors;
|
const actorScrapers = scrapers.actors;
|
||||||
|
|
@ -90,9 +109,9 @@ async function validateUrl(url, mime = 'image/') {
|
||||||
|
|
||||||
const validators = {
|
const validators = {
|
||||||
age: (value) => !!Number(value),
|
age: (value) => !!Number(value),
|
||||||
gender: (value) => value && ['female', 'male', 'transsexual'].includes(value.toLowerCase()),
|
gender: (value) => value && ['female', 'male', 'transsexual', 'trans'].includes(value.toLowerCase()),
|
||||||
description: (value) => typeof value === 'string' && value.length > 3,
|
description: (value) => typeof value === 'string' && value.length > 3,
|
||||||
birthPlace: (value) => typeof value === 'string' && value.length > 3,
|
birthPlace: (value) => typeof value === 'string' && value.length > 1, // may return US or USA
|
||||||
birthCountry: (value) => typeof value === 'string' && value.length > 1,
|
birthCountry: (value) => typeof value === 'string' && value.length > 1,
|
||||||
nationality: (value) => typeof value === 'string' && value.length > 3,
|
nationality: (value) => typeof value === 'string' && value.length > 3,
|
||||||
height: (value) => !!Number(value) || /\d'\d{1,2}"/.test(value),
|
height: (value) => !!Number(value) || /\d'\d{1,2}"/.test(value),
|
||||||
|
|
@ -164,7 +183,7 @@ async function init() {
|
||||||
}, include);
|
}, include);
|
||||||
|
|
||||||
console.log(profile);
|
console.log(profile);
|
||||||
console.log('Untested fields', Object.keys(profile).filter((field) => !actor.fields.includes(field)).join(', '));
|
console.log('Untested fields', Object.entries(profile).filter(([field, value]) => !actor.fields.includes(field) && typeof value !== 'undefined' && value !== null).map(([field]) => field).join(', '));
|
||||||
|
|
||||||
if (!profile) {
|
if (!profile) {
|
||||||
assert.fail('profile not found');
|
assert.fail('profile not found');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue