forked from DebaucheryLibrarian/traxxx
				
			Refactored AnalVids so studios are channels, excluded most channels from daily update.
This commit is contained in:
		
							parent
							
								
									d89ced2e6e
								
							
						
					
					
						commit
						5374d6fd39
					
				
							
								
								
									
										11903
									
								
								analvids-studios.json
								
								
								
								
							
							
						
						
									
										11903
									
								
								analvids-studios.json
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -1,7 +1,6 @@ | |||
| [ | ||||
|     "50tinhaxxx", | ||||
|     "aaronrockxxx", | ||||
|     "abuseme", | ||||
|     "adalynnx", | ||||
|     "adelinelafouinestudio", | ||||
|     "adiraallure", | ||||
|  | @ -39,7 +38,50 @@ | |||
|     "analmaniacsbyladydee", | ||||
|     "analpantyhoseaddicts", | ||||
|     "analpornworld", | ||||
|     "analvidsabuseme", | ||||
|     "analvidsbaitbus", | ||||
|     "analvidsbarebackattack", | ||||
|     "analvidsbarebackcasting", | ||||
|     "analvidsblackloads", | ||||
|     "analvidsblackpatrol", | ||||
|     "analvidsblacksonmoms", | ||||
|     "analvidsbluepillmen", | ||||
|     "analvidsbrandibelle", | ||||
|     "analvidsbustyadventures", | ||||
|     "analvidscfnmshow", | ||||
|     "analvidscollegerules", | ||||
|     "analvidsculioneros", | ||||
|     "analvidsdancingbear", | ||||
|     "analvidsdontfuckmydaughter", | ||||
|     "analvidsexbf", | ||||
|     "analvidsfilthyfamily", | ||||
|     "analvidsfuckysucky", | ||||
|     "analvidsfutanari", | ||||
|     "analvidsgirlsgonewild", | ||||
|     "analvidsgostosasvideo", | ||||
|     "analvidshazeher", | ||||
|     "analvidshazehim", | ||||
|     "analvidshentaied", | ||||
|     "analvidsimmorallive", | ||||
|     "analvidsitsgonnahurt", | ||||
|     "analvidsjayspov", | ||||
|     "analvidsmiakhalifa", | ||||
|     "analvidsmranal", | ||||
|     "analvidsmygf", | ||||
|     "analvidsoutinpublic", | ||||
|     "analvidspoundhisass", | ||||
|     "analvidsprivateblack", | ||||
|     "analvidsprojectcitybus", | ||||
|     "analvidspublicinvasion", | ||||
|     "analvidsrichardmannsworld", | ||||
|     "analvidsrubhim", | ||||
|     "analvidssausageparty", | ||||
|     "analvidssexbusters", | ||||
|     "analvidstaylorbow", | ||||
|     "analvidstestedefudelidade", | ||||
|     "analvidsthughunter", | ||||
|     "analvidsungloryhole", | ||||
|     "analvidsxxxpawn", | ||||
|     "anastasiagree", | ||||
|     "andrealatina", | ||||
|     "andycasanova", | ||||
|  | @ -78,12 +120,9 @@ | |||
|     "badassbitchxx", | ||||
|     "badbardotclub", | ||||
|     "baileybase", | ||||
|     "baitbus", | ||||
|     "bangbros", | ||||
|     "barbaraalves", | ||||
|     "barebackattack", | ||||
|     "barebackbitchgril", | ||||
|     "barebackcasting", | ||||
|     "bazilhornydeer", | ||||
|     "bazinga", | ||||
|     "bbwblackbrazilian", | ||||
|  | @ -101,19 +140,14 @@ | |||
|     "bisexcouplefamily", | ||||
|     "bitchstudio", | ||||
|     "bixbaestudio", | ||||
|     "blackloads", | ||||
|     "blackpatrol", | ||||
|     "blackqueen", | ||||
|     "blacksonmoms", | ||||
|     "blessexxx", | ||||
|     "bluepillmen", | ||||
|     "bluezao", | ||||
|     "boliviahot", | ||||
|     "bollocksdooodle", | ||||
|     "boringkate", | ||||
|     "borisschwarzstudio", | ||||
|     "bradmontanastudio", | ||||
|     "brandibelle", | ||||
|     "brebrew", | ||||
|     "brianabanderasstudio", | ||||
|     "briannadymond", | ||||
|  | @ -121,7 +155,6 @@ | |||
|     "btsofdesires", | ||||
|     "buddhabangxxx", | ||||
|     "bumbumgigante", | ||||
|     "bustyadventures", | ||||
|     "bustybella", | ||||
|     "bustyworld", | ||||
|     "butterloads", | ||||
|  | @ -140,7 +173,6 @@ | |||
|     "catalinacruz", | ||||
|     "cedrikgarcia", | ||||
|     "celineginger", | ||||
|     "cfnmshow", | ||||
|     "chameleonproduction", | ||||
|     "chantalchannel", | ||||
|     "cherryacid", | ||||
|  | @ -156,7 +188,6 @@ | |||
|     "clubedapernocas", | ||||
|     "clubtmfr", | ||||
|     "colexchurchstudio", | ||||
|     "collegerules", | ||||
|     "comerz", | ||||
|     "coupleluna", | ||||
|     "coupleotakucuckoldcasalotakucorno", | ||||
|  | @ -165,12 +196,10 @@ | |||
|     "crisangelo", | ||||
|     "crisanto999", | ||||
|     "crunchboy", | ||||
|     "culioneros", | ||||
|     "cutiepiiechubby", | ||||
|     "daddyenjoy", | ||||
|     "damasevagabundos", | ||||
|     "danaxmuscles", | ||||
|     "dancingbear", | ||||
|     "dankreamer", | ||||
|     "daphneelecerf", | ||||
|     "darkberry101", | ||||
|  | @ -194,7 +223,6 @@ | |||
|     "dirtyvision", | ||||
|     "discoliisa", | ||||
|     "donteinfernostudio", | ||||
|     "dontfuckmydaughter", | ||||
|     "doriandelisla", | ||||
|     "dotmenvideos", | ||||
|     "dreaminskies", | ||||
|  | @ -218,7 +246,6 @@ | |||
|     "estudioalarconsherly", | ||||
|     "evaelfie", | ||||
|     "evansjack", | ||||
|     "exbf", | ||||
|     "fabriciolorenco", | ||||
|     "facialcastingstudio", | ||||
|     "faplex", | ||||
|  | @ -228,7 +255,6 @@ | |||
|     "fetishaura", | ||||
|     "fetishbody", | ||||
|     "fiftiweive69studio", | ||||
|     "filthyfamily", | ||||
|     "firstanalteensstudio", | ||||
|     "firstgape", | ||||
|     "fit18", | ||||
|  | @ -242,8 +268,6 @@ | |||
|     "frenchprod", | ||||
|     "fucktotum", | ||||
|     "fuckyoucracker", | ||||
|     "fuckysucky", | ||||
|     "futanari", | ||||
|     "gabyespecialistaemsexooral", | ||||
|     "gabyhotstudio", | ||||
|     "gallastudio", | ||||
|  | @ -258,7 +282,6 @@ | |||
|     "ggwnextgeneration", | ||||
|     "giadasgh", | ||||
|     "girlfriendsfilms", | ||||
|     "girlsgonewild", | ||||
|     "girlsinthewild", | ||||
|     "glassdeskproductions", | ||||
|     "goddessizabel", | ||||
|  | @ -276,10 +299,7 @@ | |||
|     "hardpornworld", | ||||
|     "harleenvanhynten", | ||||
|     "harshpleasuremachine", | ||||
|     "hazeher", | ||||
|     "hazehim", | ||||
|     "helenamoellerstudio", | ||||
|     "hentaied", | ||||
|     "herbalsommelier", | ||||
|     "hexxgirlakarubyhexx", | ||||
|     "heygrimystudio", | ||||
|  | @ -297,11 +317,9 @@ | |||
|     "hotwifeteen18", | ||||
|     "hpgproduction", | ||||
|     "ieatpinktacoz", | ||||
|     "immorallive", | ||||
|     "infiltrateproxy", | ||||
|     "innofsin", | ||||
|     "irogeniastudio", | ||||
|     "itsgonnahurt", | ||||
|     "ivanamontanastudio", | ||||
|     "ivylopez", | ||||
|     "jackecah", | ||||
|  | @ -312,7 +330,6 @@ | |||
|     "japanpornjunky", | ||||
|     "jasonsteelxxxstudio", | ||||
|     "jaxslayhertv", | ||||
|     "jayspov", | ||||
|     "jbstudio", | ||||
|     "jeffsmodels", | ||||
|     "jennanoelle", | ||||
|  | @ -446,7 +463,6 @@ | |||
|     "melinamay", | ||||
|     "mentelocodotadoestudio", | ||||
|     "messalinagod", | ||||
|     "miakhalifa", | ||||
|     "miamolotov", | ||||
|     "miax", | ||||
|     "milfliciousstudio", | ||||
|  | @ -470,7 +486,6 @@ | |||
|     "monikafoxxxstudio", | ||||
|     "montycash", | ||||
|     "mooneysweety", | ||||
|     "mranal", | ||||
|     "mrandersonsanalacademy", | ||||
|     "mrnuttz", | ||||
|     "mrpussylicking", | ||||
|  | @ -484,7 +499,6 @@ | |||
|     "myclearsky", | ||||
|     "mydirtydesires", | ||||
|     "myfilthydaddy", | ||||
|     "mygf", | ||||
|     "myhornyfamily", | ||||
|     "mylaangel", | ||||
|     "myschoollife", | ||||
|  | @ -533,7 +547,6 @@ | |||
|     "origimax", | ||||
|     "originalgirlsgonewild", | ||||
|     "ouset", | ||||
|     "outinpublic", | ||||
|     "outsidethestudio", | ||||
|     "oxibendini", | ||||
|     "panporn", | ||||
|  | @ -560,21 +573,17 @@ | |||
|     "pornworldvr", | ||||
|     "possiblyneighbours", | ||||
|     "potentialanal", | ||||
|     "poundhisass", | ||||
|     "princepollyproductionz", | ||||
|     "princess18", | ||||
|     "princexpunkin", | ||||
|     "princeyahshua", | ||||
|     "private", | ||||
|     "privateblack", | ||||
|     "privatecastings", | ||||
|     "privateclassics", | ||||
|     "programmerswife", | ||||
|     "projectcitybus", | ||||
|     "projectfundiary", | ||||
|     "prollkingxxl", | ||||
|     "protonvideos", | ||||
|     "publicinvasion", | ||||
|     "pureinfatuation", | ||||
|     "pussykagelovestudio", | ||||
|     "putacalenturastudio", | ||||
|  | @ -598,7 +607,6 @@ | |||
|     "reginanoir", | ||||
|     "rhysdunbar", | ||||
|     "riasunnofficial", | ||||
|     "richardmannsworld", | ||||
|     "rickangelstudio", | ||||
|     "rileycyriis", | ||||
|     "robybianchiproduction", | ||||
|  | @ -606,7 +614,6 @@ | |||
|     "rockcorp", | ||||
|     "romemajor", | ||||
|     "rpsnstudio", | ||||
|     "rubhim", | ||||
|     "sailorboy69", | ||||
|     "samanthagarmendia", | ||||
|     "samanthasissystudio", | ||||
|  | @ -616,11 +623,9 @@ | |||
|     "sarahfonteynacumrecord", | ||||
|     "sarahfonteynaeasysquirter", | ||||
|     "sarahslavestudio", | ||||
|     "sausageparty", | ||||
|     "sbstudio", | ||||
|     "serenitylove001", | ||||
|     "sexartestudio", | ||||
|     "sexbusters", | ||||
|     "sexfoxxxvideos", | ||||
|     "sexwithmilfstella", | ||||
|     "sexxys", | ||||
|  | @ -677,9 +682,7 @@ | |||
|     "taradao", | ||||
|     "tarrawhite", | ||||
|     "tayleewoodstudio", | ||||
|     "taylorbow", | ||||
|     "telanua", | ||||
|     "testedefudelidade", | ||||
|     "tgirlplayhouse", | ||||
|     "thanchetbigdick", | ||||
|     "thatredheadskye", | ||||
|  | @ -690,7 +693,6 @@ | |||
|     "thewondertoystrainingstudio", | ||||
|     "theyloveflaxk", | ||||
|     "thiagomontestudio", | ||||
|     "thughunter", | ||||
|     "tiffanyleiddi", | ||||
|     "tigresavip", | ||||
|     "timeabellaproduction", | ||||
|  | @ -705,7 +707,6 @@ | |||
|     "turndonpodcast", | ||||
|     "tvredfire", | ||||
|     "tylercoxxdzstudio", | ||||
|     "ungloryhole", | ||||
|     "uniquebless", | ||||
|     "unjmdstudio", | ||||
|     "unlimstudio", | ||||
|  | @ -734,7 +735,6 @@ | |||
|     "xsanyany", | ||||
|     "xtvstudio", | ||||
|     "xwar555", | ||||
|     "xxxpawn", | ||||
|     "xxxporn", | ||||
|     "xxxtaylornicole", | ||||
|     "you170", | ||||
|  |  | |||
|  | @ -1,3 +1,5 @@ | |||
| const analvids = require('./analvids.json'); | ||||
| 
 | ||||
| module.exports = { | ||||
| 	database: { | ||||
| 		owner: { | ||||
|  | @ -73,6 +75,8 @@ module.exports = { | |||
| 	}, | ||||
| 	exclude: { | ||||
| 		channels: [ | ||||
| 			// AnalVids secondary channels
 | ||||
| 			...analvids, | ||||
| 			// 21sextreme, no longer updated
 | ||||
| 			'mightymistress', | ||||
| 			'dominatedgirls', | ||||
|  |  | |||
|  | @ -0,0 +1,79 @@ | |||
| exports.up = async (knex) => { | ||||
| 	await knex.schema.createTable('actors_revisions', (table) => { | ||||
| 		table.increments('id'); | ||||
| 
 | ||||
| 		table.integer('actor_id') | ||||
| 			.references('id') | ||||
| 			.inTable('actors') | ||||
| 			.onDelete('set null'); | ||||
| 
 | ||||
| 		table.integer('profile_id') | ||||
| 			.references('id') | ||||
| 			.inTable('actors_profiles') | ||||
| 			.onDelete('set null'); | ||||
| 
 | ||||
| 		table.integer('user_id') | ||||
| 			.references('id') | ||||
| 			.inTable('users') | ||||
| 			.onDelete('set null'); | ||||
| 
 | ||||
| 		table.json('base') | ||||
| 			.notNullable(); | ||||
| 
 | ||||
| 		table.json('deltas') | ||||
| 			.notNullable(); | ||||
| 
 | ||||
| 		table.text('hash') | ||||
| 			.notNullable(); | ||||
| 
 | ||||
| 		table.text('comment'); | ||||
| 
 | ||||
| 		table.boolean('approved'); | ||||
| 
 | ||||
| 		table.integer('reviewed_by') | ||||
| 			.references('id') | ||||
| 			.inTable('users') | ||||
| 			.onDelete('set null'); | ||||
| 
 | ||||
| 		table.datetime('reviewed_at'); | ||||
| 		table.text('feedback'); | ||||
| 
 | ||||
| 		table.datetime('applied_at'); | ||||
| 
 | ||||
| 		table.datetime('created_at') | ||||
| 			.notNullable() | ||||
| 			.defaultTo(knex.fn.now()); | ||||
| 	}); | ||||
| 
 | ||||
| 	await knex.schema.alterTable('actors', (table) => { | ||||
| 		table.integer('boobs_volume'); | ||||
| 		table.integer('butt_volume'); | ||||
| 		table.integer('lips_volume'); | ||||
| 		table.boolean('natural_butt'); | ||||
| 	}); | ||||
| 
 | ||||
| 	await knex.schema.alterTable('actors_profiles', (table) => { | ||||
| 		table.integer('boobs_volume'); | ||||
| 		table.integer('butt_volume'); | ||||
| 		table.integer('lips_volume'); | ||||
| 		table.boolean('natural_butt'); | ||||
| 	}); | ||||
| }; | ||||
| 
 | ||||
| exports.down = async (knex) => { | ||||
| 	await knex.schema.dropTable('actors_revisions'); | ||||
| 
 | ||||
| 	await knex.schema.alterTable('actors', (table) => { | ||||
| 		table.dropColumn('boobs_volume'); | ||||
| 		table.dropColumn('butt_volume'); | ||||
| 		table.dropColumn('lips_volume'); | ||||
| 		table.dropColumn('natural_butt'); | ||||
| 	}); | ||||
| 
 | ||||
| 	await knex.schema.alterTable('actors_profiles', (table) => { | ||||
| 		table.dropColumn('boobs_volume'); | ||||
| 		table.dropColumn('butt_volume'); | ||||
| 		table.dropColumn('lips_volume'); | ||||
| 		table.dropColumn('natural_butt'); | ||||
| 	}); | ||||
| }; | ||||
|  | @ -138,6 +138,13 @@ const networks = [ | |||
| 		name: 'Amnesiac', | ||||
| 		hasLogo: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		slug: 'analvids', | ||||
| 		name: 'AnalVids', | ||||
| 		alias: ['legalporno', 'clip', 'gonzo'], | ||||
| 		url: 'https://www.analvids.com', | ||||
| 		parent: 'wgcz', | ||||
| 	}, | ||||
| 	{ | ||||
| 		slug: 'assylum', | ||||
| 		name: 'Assylum', | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| const upsert = require('../src/utils/upsert'); | ||||
| const analvids = require('./analvids'); | ||||
| 
 | ||||
| /* eslint-disable max-len */ | ||||
| const sites = [ | ||||
|  | @ -5818,16 +5819,8 @@ const sites = [ | |||
| 		description: 'Check out what the hottest KinkMen models have for you. Get a test of this kinky private homemade gay BDSM bondage porn made just for you.', | ||||
| 		parent: 'kinkmen', | ||||
| 	}, | ||||
| 	// LEGALPORNO
 | ||||
| 	{ | ||||
| 		slug: 'analvids', | ||||
| 		name: 'AnalVids', | ||||
| 		alias: ['legalporno', 'clip', 'gonzo'], | ||||
| 		url: 'https://www.analvids.com', | ||||
| 		independent: true, | ||||
| 		showcased: false, // showcased per studio
 | ||||
| 		parent: 'wgcz', | ||||
| 	}, | ||||
| 	// ANALVIDS / LEGALPORNO
 | ||||
| 	...analvids, | ||||
| 	// LETS DOE IT
 | ||||
| 	{ | ||||
| 		name: 'The White Boxxx', | ||||
|  | @ -13971,6 +13964,18 @@ const sites = [ | |||
| 	}, | ||||
| ]; | ||||
| 
 | ||||
| /* | ||||
| sites.reduce((acc, site) => { | ||||
| 	if (acc.has(site.slug)) { | ||||
| 		console.log('DUPLICATE!', site.slug); | ||||
| 	} | ||||
| 
 | ||||
| 	acc.add(site.slug); | ||||
| 
 | ||||
| 	return acc; | ||||
| }, new Set()); | ||||
| */ | ||||
| 
 | ||||
| /* eslint-disable max-len */ | ||||
| exports.seed = (knex) => Promise.resolve() | ||||
| 	.then(async () => { | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ const channelSlugs = sites.map((site) => site.slug); | |||
| 
 | ||||
| const studios = [ | ||||
| 	// ANALVIDS / LEGALPORNO
 | ||||
| 	/* | ||||
| 	{ | ||||
| 		name: 'Giorgio Grandi', | ||||
| 		slug: 'giorgiograndi', | ||||
|  | @ -5254,6 +5255,7 @@ const studios = [ | |||
| 		parent: 'analvids', | ||||
| 		description: 'Producing raw amateur porn leaded by Bluff, the creator, filmmaker and photographer. The models are from a circle of friends that creates and share all together. Through webcam nights, professionally made productions or from spontaneous projects, the general desire always was to produce high quality amateur porn. A wide variety of content is offered. *No custom video request *all models are 18+ and consented to appear in the photos/videos.', | ||||
| 	}, | ||||
| 	*/ | ||||
| 	// TESTE DE FUDELIDADE
 | ||||
| 	{ | ||||
| 		name: 'Teste de Fudelidade Exclusivo', | ||||
|  |  | |||
|  | @ -1094,7 +1094,7 @@ exports.seed = (knex) => Promise.resolve() | |||
| 
 | ||||
| 		const entities = await knex('entities') | ||||
| 			.whereIn('slug', tagMedia.map((item) => item.entitySlug).filter(Boolean)) | ||||
| 			.orderBy('type', 'DESC'); | ||||
| 			.orderBy('type', 'asc'); | ||||
| 
 | ||||
| 		const entitiesBySlug = entities.reduce((acc, entity) => ({ | ||||
| 			...acc, | ||||
|  |  | |||
|  | @ -915,13 +915,13 @@ const campaigns = [ | |||
| 		comment: 'default offer', | ||||
| 	}, | ||||
| 	{ | ||||
| 		channel: 'analvids', | ||||
| 		network: 'analvids', | ||||
| 		banner: 'pornworld_600_120_1', | ||||
| 		url: 'https://www.analvids.com/new-videos?aff=BW90MHT1DP____', | ||||
| 		comment: 'default offer', | ||||
| 	}, | ||||
| 	{ | ||||
| 		channel: 'analvids', | ||||
| 		network: 'analvids', | ||||
| 		banner: 'pornworld_600_120_2', | ||||
| 		url: 'https://www.analvids.com/new-videos?aff=BW90MHT1DP____', | ||||
| 		comment: 'default offer', | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -25,7 +25,7 @@ function scrapeAll(scenes, channel) { | |||
| 		release.title = query.content('.card-scene__text'); | ||||
| 		release.shootId = extractTitle(release.title).shootId; | ||||
| 
 | ||||
| 		release.date = query.date('.label--time:nth-child(2)', 'YYYY-MM-DD'); | ||||
| 		release.date = query.date('.label--time:nth-child(2)', 'YYYY-MM-DD'); // only available on front-page, not on studio page
 | ||||
| 		release.duration = query.duration('.label--time:first-child'); | ||||
| 
 | ||||
| 		release.poster = query.img('.card-scene__view img', { attribute: 'data-src' }); | ||||
|  | @ -64,10 +64,9 @@ function scrapeScene({ query }, { url }) { | |||
| 
 | ||||
| 	release.tags = query.contents('.genres-list a[href*="/genre"]'); | ||||
| 
 | ||||
| 	release.studio = slugify(query.content('.genres-list a[href*="/studios"]'), '', { removePunctuation: true }); | ||||
| 	// release.studio = slugify(query.content('.genres-list a[href*="/studios"]'), '', { removePunctuation: true });
 | ||||
| 
 | ||||
| 	release.poster = query.img('.watch__video video', { attribute: 'data-poster' }); | ||||
| 	release.photoCount = query.number('.bi-eye'); | ||||
| 
 | ||||
| 	release.trailer = query.all('.watch__video source').map((el) => ({ | ||||
| 		src: unprint.query.video(el, null, { attribute: 'src' }), | ||||
|  | @ -91,7 +90,8 @@ function scrapeProfile({ query }, url, channel) { | |||
| } | ||||
| 
 | ||||
| async function fetchLatest(channel, page) { | ||||
| 	const res = await unprint.get(`${channel.url}/new-videos/${page}`, { selectAll: '.card-scene' }); | ||||
| 	// const res = await unprint.get(`https://www.analvids.com/new-videos/${page}`, { selectAll: '.card-scene' }); // analvids as channel
 | ||||
| 	const res = await unprint.get(`${channel.url}/latest/${page}`, { selectAll: '.card-scene' }); // studios as channels
 | ||||
| 
 | ||||
| 	if (res.ok) { | ||||
| 		return scrapeAll(res.context, channel); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue