Added Porn+.
This commit is contained in:
		
							parent
							
								
									a8f0c25b50
								
							
						
					
					
						commit
						f5ffc002f0
					
				|  | @ -617,6 +617,15 @@ const networks = [ | |||
| 		description: 'Watch the best HD exclusive movies and videos on Porn Pros. All the hottest new Pornstar and amateur girls in High Definition updated daily.', | ||||
| 		parent: 'whalemember', | ||||
| 	}, | ||||
| 	{ | ||||
| 		slug: 'pornplus', | ||||
| 		name: 'Porn+', | ||||
| 		url: 'https://pornplus.com', | ||||
| 		parent: 'whalemember', | ||||
| 		parameters: { | ||||
| 			layout: 'plus', | ||||
| 		}, | ||||
| 	}, | ||||
| 	{ | ||||
| 		slug: 'private', | ||||
| 		name: 'Private', | ||||
|  |  | |||
|  | @ -13788,6 +13788,7 @@ const sites = [ | |||
| 			id: 'shag-street', | ||||
| 		}, | ||||
| 	}, | ||||
| 	/* | ||||
| 	{ | ||||
| 		slug: 'stayhomemilf', | ||||
| 		name: 'StayHomeMilf', | ||||
|  | @ -13797,6 +13798,7 @@ const sites = [ | |||
| 			id: 'stay-home-milf', | ||||
| 		}, | ||||
| 	}, | ||||
| 	*/ | ||||
| 	// MYLF cross-over
 | ||||
| 	{ | ||||
| 		slug: 'mylfxadultprime', | ||||
|  | @ -15859,6 +15861,164 @@ const sites = [ | |||
| 		parent: 'pornpros', | ||||
| 		hasLogo: false, | ||||
| 	}, | ||||
| 	// PORN PLUS PORN+
 | ||||
| 	{ | ||||
| 		name: 'Passion Fuck', | ||||
| 		slug: 'passionfuck', | ||||
| 		url: 'https://pornplus.com/series/passion-fuck', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Creepy Pa', | ||||
| 		slug: 'creepypa', | ||||
| 		url: 'https://pornplus.com/series/creepy-pa', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Property Exploits', | ||||
| 		slug: 'propertyexploits', | ||||
| 		url: 'https://pornplus.com/series/property-exploits', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Asians Exploited', | ||||
| 		slug: 'asiansexploited', | ||||
| 		url: 'https://pornplus.com/series/asians-exploited', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Shower 4K', | ||||
| 		slug: 'shower4k', | ||||
| 		url: 'https://pornplus.com/series/shower-4k', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Squirt Bomb', | ||||
| 		slug: 'squirtbomb', | ||||
| 		url: 'https://pornplus.com/series/squirt-bomb', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Kinky Sluts 4K', | ||||
| 		slug: 'kinkysluts4k', | ||||
| 		url: 'https://pornplus.com/series/kinky-sluts-4k', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'School of Cock', | ||||
| 		slug: 'schoolofcock', | ||||
| 		url: 'https://pornplus.com/series/school-of-cock', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Facials Galore', | ||||
| 		slug: 'facialsgalore', | ||||
| 		url: 'https://pornplus.com/series/facials-galore', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Game On', | ||||
| 		slug: 'gameon', | ||||
| 		url: 'https://pornplus.com/series/game-on', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Waxxxed', | ||||
| 		slug: 'waxxxed', | ||||
| 		url: 'https://pornplus.com/series/waxxxed', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Double Trouble', | ||||
| 		slug: 'doubletrouble', | ||||
| 		url: 'https://pornplus.com/series/double-trouble', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Boobs 4K', | ||||
| 		slug: 'boobs4k', | ||||
| 		url: 'https://pornplus.com/series/boobs4k', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'BBC POVD', | ||||
| 		slug: 'bbcpovd', | ||||
| 		url: 'https://pornplus.com/series/bbc-povd', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Sexercise', | ||||
| 		slug: 'sexercise', | ||||
| 		url: 'https://pornplus.com/series/sexercise', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Strip Club Tryouts', | ||||
| 		slug: 'stripclubtryouts', | ||||
| 		url: 'https://pornplus.com/series/strip-club-tryouts', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Pornstars in Cars', | ||||
| 		slug: 'pornstarsincars', | ||||
| 		url: 'https://pornplus.com/series/pornstars-in-cars', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'RV Adventures', | ||||
| 		slug: 'rvadventures', | ||||
| 		url: 'https://pornplus.com/series/rv-adventures', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Bikini Smash', | ||||
| 		slug: 'bikinismash', | ||||
| 		alias: ['bikini splash'], | ||||
| 		url: 'https://pornplus.com/series/bikini-splash', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Momcum', | ||||
| 		slug: 'momcum', | ||||
| 		url: 'https://pornplus.com/series/momcum', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Caged Sex', | ||||
| 		slug: 'cagedsex', | ||||
| 		url: 'https://pornplus.com/series/caged-sex', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Glory Hole 4K', | ||||
| 		slug: 'gloryhole4k', | ||||
| 		url: 'https://pornplus.com/series/glory-hole-4k', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Facials4K', | ||||
| 		slug: 'facials4kpro', | ||||
| 		url: 'https://pornplus.com/series/facials4k', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'My Very First Time', | ||||
| 		slug: 'myveryfirsttimepro', | ||||
| 		url: 'https://pornplus.com/series/my-very-first-time', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Mom 4K', | ||||
| 		slug: 'mom4k', | ||||
| 		url: 'https://pornplus.com/series/mom-4k', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'Nanny Spy', | ||||
| 		slug: 'nannyspypro', | ||||
| 		url: 'https://pornplus.com/series/nannyspy', | ||||
| 		parent: 'pornplus', | ||||
| 	}, | ||||
| 	// PRIVATE
 | ||||
| 	{ | ||||
| 		slug: 'analintroductions', | ||||
|  | @ -21020,7 +21180,6 @@ const sites = [ | |||
| 	}, | ||||
| ]; | ||||
| 
 | ||||
| /* | ||||
| sites.reduce((acc, site) => { | ||||
| 	if (acc.has(site.slug)) { | ||||
| 		console.log('DUPLICATE!', site.slug); | ||||
|  | @ -21030,7 +21189,6 @@ sites.reduce((acc, site) => { | |||
| 
 | ||||
| 	return acc; | ||||
| }, new Set()); | ||||
| */ | ||||
| 
 | ||||
| /* eslint-disable max-len */ | ||||
| exports.seed = (knex) => Promise.resolve() | ||||
|  |  | |||
|  | @ -160,6 +160,7 @@ const scrapers = { | |||
| 		pinkyxxx, | ||||
| 		porncz, | ||||
| 		pornpros: whalemember, | ||||
| 		pornplus: whalemember, | ||||
| 		private: privateNetwork, | ||||
| 		purgatoryx, | ||||
| 		radical, | ||||
|  |  | |||
|  | @ -44,6 +44,40 @@ function scrapeLatest(scenes, channel) { | |||
| 	}); | ||||
| } | ||||
| 
 | ||||
| function scrapeLatestPlus(scenes, channel) { | ||||
| 	return scenes.map(({ query, _element }) => { | ||||
| 		const release = {}; | ||||
| 
 | ||||
| 		release.title = query.content('.title'); | ||||
| 		release.date = query.date('.video-thumbnail-footer', 'MM/DD/YYYY'); | ||||
| 
 | ||||
| 		const slug = slugify(release.title); | ||||
| 
 | ||||
| 		release.url = `${new URL(channel.url).origin}/video/${slug}`; | ||||
| 		release.entryId = slug; | ||||
| 
 | ||||
| 		release.actors = query.all('.actor-list a').map((actorEl) => ({ | ||||
| 			name: unprint.query.content(actorEl), | ||||
| 			url: unprint.query.url(actorEl, null, { origin: channel.url }), | ||||
| 		})); | ||||
| 
 | ||||
| 		const poster = query.poster() || query.img('a[data-video-thumbnail-single-image-target] img'); | ||||
| 
 | ||||
| 		if (poster) { | ||||
| 			release.poster = [ | ||||
| 				stripQuery(poster), | ||||
| 				poster, | ||||
| 			]; | ||||
| 		} | ||||
| 
 | ||||
| 		release.teaser = query.video('source', { attribute: 'data-src' }); | ||||
| 
 | ||||
| 		release.channel = slugify(query.attribute('.series-link img', 'alt'), ''); | ||||
| 
 | ||||
| 		return release; | ||||
| 	}); | ||||
| } | ||||
| 
 | ||||
| function scrapeScene({ query }, { url, entity }) { | ||||
| 	const release = {}; | ||||
| 
 | ||||
|  | @ -70,6 +104,8 @@ function scrapeScene({ query }, { url, entity }) { | |||
| 	release.teaser = query.video('#player-wrapper source'); | ||||
| 	release.qualities = query.contents('#trailer_player .resolution').map((resolution) => Number(resolution.split('x')[1])).filter(Boolean); | ||||
| 
 | ||||
| 	console.log(release); | ||||
| 
 | ||||
| 	return release; | ||||
| } | ||||
| 
 | ||||
|  | @ -84,7 +120,22 @@ async function fetchLatest(channel, page = 1) { | |||
| 	return res.status; | ||||
| } | ||||
| 
 | ||||
| async function fetchLatestPlus(channel, page = 1) { | ||||
| 	const url = `${channel.url}?page=${page}`; | ||||
| 	const res = await unprint.get(url, { selectAll: '.video-thumbnail' }); | ||||
| 
 | ||||
| 	if (res.status === 200) { | ||||
| 		return scrapeLatestPlus(res.context, channel); | ||||
| 	} | ||||
| 
 | ||||
| 	return res.status; | ||||
| } | ||||
| 
 | ||||
| module.exports = { | ||||
| 	fetchLatest, | ||||
| 	scrapeScene, | ||||
| 	plus: { | ||||
| 		fetchLatest: fetchLatestPlus, | ||||
| 		scrapeScene, | ||||
| 	}, | ||||
| }; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue