Added Angelo Godshack Original.
This commit is contained in:
parent
22144d3724
commit
e61411ca44
|
@ -252,6 +252,7 @@ module.exports = {
|
||||||
'hitzefrei',
|
'hitzefrei',
|
||||||
'porncz',
|
'porncz',
|
||||||
'czechav',
|
'czechav',
|
||||||
|
'angelogodshackoriginal',
|
||||||
'littlecapricedreams',
|
'littlecapricedreams',
|
||||||
'missyx',
|
'missyx',
|
||||||
'gangbangcreampie',
|
'gangbangcreampie',
|
||||||
|
|
|
@ -776,6 +776,13 @@ const sites = [
|
||||||
profile: 'http://www.american-pornstar.com/models',
|
profile: 'http://www.american-pornstar.com/models',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
// ANGELO GODSHACK ORIGINAL
|
||||||
|
{
|
||||||
|
slug: 'angelogodshackoriginal',
|
||||||
|
name: 'Angelo Godshack Original',
|
||||||
|
alias: ['ago', 'angelogodshackxxx', 'angelo godshack xxx'],
|
||||||
|
url: 'https://angelogodshackxxx.com',
|
||||||
|
},
|
||||||
// ARCH ANGEL
|
// ARCH ANGEL
|
||||||
{
|
{
|
||||||
slug: 'archangel',
|
slug: 'archangel',
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const unprint = require('unprint');
|
||||||
|
|
||||||
|
function scrapeAll(scenes, channel) {
|
||||||
|
return scenes.map(({ query }) => {
|
||||||
|
const release = {};
|
||||||
|
|
||||||
|
release.url = query.url('a.video-container__description--title, a.video-container__image');
|
||||||
|
release.entryId = new URL(release.url).pathname.split('/').at(-1);
|
||||||
|
|
||||||
|
release.title = query.content('.video-container__description--title');
|
||||||
|
|
||||||
|
release.actors = query.all('.video-container__description--author a').map((actorEl) => ({
|
||||||
|
name: unprint.query.content(actorEl),
|
||||||
|
url: unprint.query.url(actorEl, null, { origin: channel.url }),
|
||||||
|
}));
|
||||||
|
|
||||||
|
const poster = query.img('.video-container__image img');
|
||||||
|
|
||||||
|
if (poster) {
|
||||||
|
release.poster = [
|
||||||
|
poster.replace('/videoList', '/videoDetail2x'),
|
||||||
|
poster.replace('/videoList', '/videoDetail'),
|
||||||
|
poster,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return release;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrapeScene({ query }, { url, entity }) {
|
||||||
|
const release = {};
|
||||||
|
|
||||||
|
release.entryId = new URL(url).pathname.split('/').at(-1);
|
||||||
|
|
||||||
|
release.title = query.content('.video-detail__header--container h1');
|
||||||
|
release.description = query.content('.description p');
|
||||||
|
|
||||||
|
release.actors = query.all('.video-detail__description--author a:not(.logo)').map((actorEl) => ({
|
||||||
|
name: unprint.query.content(actorEl, '.title'),
|
||||||
|
url: unprint.query.url(actorEl, null, { origin: entity.url }),
|
||||||
|
}));
|
||||||
|
|
||||||
|
release.poster = query.img('#video', { attribute: 'data-poster' });
|
||||||
|
|
||||||
|
release.photos = query.imgs('.gallery-slider img').map((source) => [
|
||||||
|
source.replace('/galleryList', '/galleryDetail'),
|
||||||
|
source,
|
||||||
|
]);
|
||||||
|
|
||||||
|
release.trailer = query.videos('#video source')?.map((source) => ({
|
||||||
|
src: source,
|
||||||
|
quality: (source.includes('4k') && 2160)
|
||||||
|
|| (source.includes('1080') && 1080)
|
||||||
|
|| (source.includes('720') && 720) // not observed, but just in case
|
||||||
|
|| (source.includes('480') && 480), // not observed, but just in case
|
||||||
|
}));
|
||||||
|
|
||||||
|
return release;
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrapeProfile({ query }) {
|
||||||
|
const profile = {};
|
||||||
|
|
||||||
|
profile.avatar = query.img('img.model-cover-photo');
|
||||||
|
|
||||||
|
return profile;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchLatest(channel, page = 1) {
|
||||||
|
const res = await unprint.get(`${channel.url}/newest?page=${page}`, { selectAll: '.videos .video-container' });
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
return scrapeAll(res.context, channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchProfile({ slug }, entity) {
|
||||||
|
const res = await unprint.get(`${entity.url}/model/${slug}`);
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
return scrapeProfile(res.context, entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
fetchLatest,
|
||||||
|
fetchProfile,
|
||||||
|
scrapeScene,
|
||||||
|
};
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const adultempire = require('./adultempire');
|
const adultempire = require('./adultempire');
|
||||||
|
const angelogodshackoriginal = require('./angelogodshackoriginal');
|
||||||
const archangel = require('./archangel');
|
const archangel = require('./archangel');
|
||||||
const assylum = require('./assylum');
|
const assylum = require('./assylum');
|
||||||
const amateurallure = require('./amateurallure');
|
const amateurallure = require('./amateurallure');
|
||||||
|
@ -85,6 +86,7 @@ const scrapers = {
|
||||||
americanpornstar,
|
americanpornstar,
|
||||||
amateureuro: porndoe,
|
amateureuro: porndoe,
|
||||||
amnesiac,
|
amnesiac,
|
||||||
|
angelogodshackoriginal,
|
||||||
archangel,
|
archangel,
|
||||||
asiam: modelmedia,
|
asiam: modelmedia,
|
||||||
assylum,
|
assylum,
|
||||||
|
@ -188,6 +190,7 @@ const scrapers = {
|
||||||
analbbc: fullpornnetwork,
|
analbbc: fullpornnetwork,
|
||||||
analized: fullpornnetwork,
|
analized: fullpornnetwork,
|
||||||
analviolation: fullpornnetwork,
|
analviolation: fullpornnetwork,
|
||||||
|
angelogodshackoriginal,
|
||||||
anilos: nubiles,
|
anilos: nubiles,
|
||||||
archangel,
|
archangel,
|
||||||
asiam: modelmedia,
|
asiam: modelmedia,
|
||||||
|
|
Loading…
Reference in New Issue