forked from DebaucheryLibrarian/traxxx
2344 lines
37 KiB
JavaScript
Executable File
2344 lines
37 KiB
JavaScript
Executable File
const upsert = require('../src/utils/upsert');
|
|
const slugify = require('../src/utils/slugify');
|
|
|
|
const groups = [
|
|
{
|
|
slug: 'age',
|
|
name: 'Age',
|
|
},
|
|
{
|
|
slug: 'body',
|
|
name: 'Body',
|
|
},
|
|
{
|
|
slug: 'clothing',
|
|
name: 'Clothing',
|
|
},
|
|
{
|
|
slug: 'ethnicity',
|
|
name: 'Ethnicity',
|
|
},
|
|
{
|
|
slug: 'finish',
|
|
name: 'Finish',
|
|
},
|
|
{
|
|
slug: 'group',
|
|
name: 'Group sex',
|
|
},
|
|
{
|
|
slug: 'hair',
|
|
name: 'Hair',
|
|
},
|
|
{
|
|
slug: 'location',
|
|
name: 'Location',
|
|
},
|
|
{
|
|
slug: 'oral',
|
|
name: 'Oral',
|
|
},
|
|
{
|
|
slug: 'orientation',
|
|
name: 'Orientation',
|
|
},
|
|
{
|
|
slug: 'penetration',
|
|
name: 'Penetration',
|
|
},
|
|
{
|
|
slug: 'position',
|
|
name: 'Position',
|
|
},
|
|
{
|
|
slug: 'roleplay',
|
|
name: 'Roleplay',
|
|
},
|
|
];
|
|
|
|
const tags = [
|
|
{
|
|
name: '180°',
|
|
slug: '180',
|
|
},
|
|
{
|
|
name: '60 FPS',
|
|
slug: '60fps',
|
|
},
|
|
{
|
|
name: '3D',
|
|
slug: '3d',
|
|
description: 'Available in 3D.',
|
|
},
|
|
{
|
|
name: '4K',
|
|
slug: '4k',
|
|
description: 'Available in high quality 4K resolution.',
|
|
},
|
|
{
|
|
name: '5K',
|
|
slug: '5k',
|
|
description: 'Available in very high quality 5K resolution.',
|
|
},
|
|
{
|
|
name: '7K',
|
|
slug: '7k',
|
|
description: 'Available in super high quality 7K resolution.',
|
|
},
|
|
{
|
|
name: '8K',
|
|
slug: '8k',
|
|
description: 'Available in extremely high quality 8K resolution.',
|
|
},
|
|
{
|
|
name: '69',
|
|
slug: '69',
|
|
group: 'position',
|
|
},
|
|
{
|
|
name: 'airtight',
|
|
slug: 'airtight',
|
|
description: 'Stuffing one cock in your ass, one in your pussy, and one in your mouth, filling up all of your penetrable holes and getting sealed airtight like a figurative balloon. In other words, simultaneously getting [double penetrated](/tag/dp), and giving a [blowjob](/tag/blowjob) or getting [facefucked](/tag/facefucking). Being airtight implies being [gangbanged](/tag/gangbang).', /* eslint-disable-line max-len */
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'amateur',
|
|
slug: 'amateur',
|
|
},
|
|
{
|
|
name: 'anal creampie',
|
|
slug: 'anal-creampie',
|
|
description: 'Ejaculating into the asshole.',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'anal',
|
|
slug: 'anal',
|
|
description: 'Getting your asshole fucked. Generally considered naughtier, you may or may not find it a pleasurable alternative to vaginal sex.',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'anal fingering',
|
|
slug: 'anal-fingering',
|
|
description: 'Inserting one or multiple fingers into your asshole. If you use your entire hand beyond the knuckles, you are [anal fisting](/tag/anal-fisting).',
|
|
},
|
|
{
|
|
name: 'anal fisting',
|
|
slug: 'anal-fisting',
|
|
description: 'Shoving an entire hand into your asshole.',
|
|
},
|
|
{
|
|
name: 'anal prolapse',
|
|
slug: 'anal-prolapse',
|
|
},
|
|
{
|
|
name: 'animated',
|
|
slug: 'animated',
|
|
},
|
|
{
|
|
name: 'asian',
|
|
slug: 'asian',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'athletic',
|
|
slug: 'athletic',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'ass to mouth',
|
|
slug: 'atm',
|
|
description: 'Sucking off a cock right after it fucked your ass. If it has been in someone else\'s ass, it may be called [ATOGM](/tag/atogm).',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'ass to other girl\'s mouth',
|
|
slug: 'atogm',
|
|
description: '[Ass to mouth](/tag/atm) with a cock that has been in someone else\'s ass. ATOGM may also be the gay variation "ass to other guy\'s mouth".',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'ass eating',
|
|
slug: 'ass-eating',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'ass worship',
|
|
slug: 'ass-worship',
|
|
},
|
|
{
|
|
name: 'babe',
|
|
slug: 'babe',
|
|
},
|
|
{
|
|
name: 'ball licking',
|
|
slug: 'ball-licking',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'ballerina',
|
|
slug: 'ballerina',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'bathroom',
|
|
slug: 'bathroom',
|
|
group: 'location',
|
|
},
|
|
{
|
|
name: 'BDSM',
|
|
slug: 'bdsm',
|
|
},
|
|
{
|
|
name: 'BBC',
|
|
slug: 'bbc',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'behind the scenes',
|
|
slug: 'bts',
|
|
},
|
|
{
|
|
name: 'belgian',
|
|
slug: 'belgian',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'flemish',
|
|
slug: 'flemish',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'big dick',
|
|
slug: 'big-dick',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'big butt',
|
|
slug: 'big-butt',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'big boobs',
|
|
slug: 'big-boobs',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'bisexual',
|
|
slug: 'bisexual',
|
|
},
|
|
{
|
|
name: 'black cock',
|
|
slug: 'black-cock',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'black hair',
|
|
slug: 'black-hair',
|
|
group: 'hair',
|
|
},
|
|
{
|
|
name: 'blindfold',
|
|
slug: 'blindfold',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'blonde',
|
|
slug: 'blonde',
|
|
group: 'hair',
|
|
},
|
|
{
|
|
name: 'blowjob',
|
|
slug: 'blowjob',
|
|
description: 'Taking a dick in your mouth, sucking, licking and kissing it, often while giving a [handjob](/tag/handjob). You may slide it all the way [down your throat](/tag/deepthroat), or let them [fuck your face](/tag/facefucking).',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'blowbang',
|
|
slug: 'blowbang',
|
|
description: 'Pleasuring a gang of three or more cocks by sucking and jerking off as many cocks as you can, often getting [facefucked](/tag/facefucking), groped and rubbed out, and followed by a [bukkake](/tag/bukkake). If you are also getting fucked, it is a [gangbang](/tag/gangbang).',
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'blue eyes',
|
|
slug: 'blue-eyes',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'brown eyes',
|
|
slug: 'brown-eyes',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'green eyes',
|
|
slug: 'green-eyes',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'bondage',
|
|
slug: 'bondage',
|
|
},
|
|
{
|
|
name: 'braces',
|
|
slug: 'braces',
|
|
},
|
|
{
|
|
name: 'brunette',
|
|
slug: 'brunette',
|
|
group: 'hair',
|
|
},
|
|
{
|
|
name: 'bukkake',
|
|
slug: 'bukkake',
|
|
description: 'Getting ejaculated on the face by a group of three or more men, often following a [blowbang](/tag/blowbang) or [gangbang](/tag/gangbang).',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'casting',
|
|
slug: 'casting',
|
|
},
|
|
{
|
|
name: 'cheerleader',
|
|
slug: 'cheerleader',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'choking',
|
|
slug: 'choking',
|
|
},
|
|
{
|
|
name: 'corporal punishment',
|
|
slug: 'corporal-punishment',
|
|
},
|
|
{
|
|
name: 'couples',
|
|
slug: 'couples',
|
|
},
|
|
{
|
|
name: 'cowgirl',
|
|
slug: 'cowgirl',
|
|
},
|
|
{
|
|
name: 'creampie',
|
|
slug: 'creampie',
|
|
description: 'Ejaculalating into her pussy, often shown visibly dripping out afterwards.',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'cuckold',
|
|
slug: 'cuckold',
|
|
},
|
|
{
|
|
name: 'cum drunk',
|
|
slug: 'cum-drunk',
|
|
description: 'Feeling intoxicated after getting filled or covered by a large amount of semen, or literally getting "fucked silly" during intense sex.',
|
|
},
|
|
{
|
|
name: 'cum licking',
|
|
slug: 'cum-licking',
|
|
},
|
|
{
|
|
name: 'cum on butt',
|
|
slug: 'cum-on-butt',
|
|
},
|
|
{
|
|
name: 'cum on boobs',
|
|
slug: 'cum-on-boobs',
|
|
},
|
|
{
|
|
name: 'cum on pussy',
|
|
slug: 'cum-on-pussy',
|
|
},
|
|
{
|
|
name: 'cum on feet',
|
|
slug: 'cum-on-feet',
|
|
},
|
|
{
|
|
name: 'cum feet licking',
|
|
slug: 'cum-feet-licking',
|
|
},
|
|
{
|
|
name: 'cum swapping',
|
|
slug: 'cum-swapping',
|
|
},
|
|
{
|
|
name: 'cumshot',
|
|
slug: 'cumshot',
|
|
},
|
|
{
|
|
name: 'curvy',
|
|
slug: 'curvy',
|
|
},
|
|
{
|
|
name: 'debut',
|
|
slug: 'debut',
|
|
},
|
|
{
|
|
name: 'doctor',
|
|
slug: 'doctor',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'double anal',
|
|
slug: 'dap',
|
|
description: 'Two cocks filling up your ass at the same time. If there\'s a third cock in your pussy, it is [double anal triple penetration](/tag/da-tp).',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'double dildo',
|
|
slug: 'double-dildo',
|
|
description: 'Two girls fucking eachother using either end of a double-sided dildo. They can suck it for a [double dildo blowjob](/tag/double-dildo-blowjob), deepthroat it for a [double dildo kiss](/tag/double-dildo-kiss), or put it up their ass for [double dildo anal](/tag/double-dildo-anal).',
|
|
},
|
|
{
|
|
name: 'double dildo anal',
|
|
slug: 'double-dildo-anal',
|
|
description: 'Two people ass-fucking eachother with either end of a [double-sided dildo](/tag/double-dildo), "ass to ass".',
|
|
},
|
|
{
|
|
name: 'double dildo DP',
|
|
slug: 'double-dildo-dp',
|
|
description: 'Using a [double-sided dildo](/tag/double-dildo) on your ass and pussy [at the same time](/tag/dp).',
|
|
},
|
|
{
|
|
name: 'double dildo blowjob',
|
|
slug: 'double-dildo-blowjob',
|
|
description: 'Two people sucking and gagging on either end of a [double-sided dildo](/tag/double-dildo). They may deepthroat the dildo for a [double dildo kiss](/tag/double-dildo-kiss).',
|
|
},
|
|
{
|
|
name: 'double dildo kiss',
|
|
slug: 'double-dildo-kiss',
|
|
description: 'Deepthroating a [double-sided dildo](/tag/double-dildo) during a [double dildo blowjob](/tag/double-dildo-blowjob), all the way until you can kiss eachother\'s lips.',
|
|
},
|
|
{
|
|
name: 'triple anal',
|
|
slug: 'tap',
|
|
description: 'Getting fucked in the ass by not one, two, but *three* cocks at the same time.',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'triple vaginal',
|
|
slug: 'tvp',
|
|
description: 'Getting your pussy fucked by *three* cocks at the same time.',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'deepthroat',
|
|
slug: 'deepthroat',
|
|
description: 'Shoving a cock down your throat during a [blowjob](/tag/blowjob) or [facefuck](/tag/facefucking), giving them a tight sensation while showing off your skills. Without practice, a cock hitting the back of your mouth will likely make you [gag](/tag/gagging).',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'double penetration',
|
|
slug: 'dp',
|
|
description: 'Getting your [ass](/tag/anal) and pussy fucked at the same time. If you take another cock in your mouth, you are [airtight](/tag/airtight).',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'dungeon',
|
|
slug: 'dungeon',
|
|
},
|
|
{
|
|
name: 'double vaginal',
|
|
slug: 'dvp',
|
|
description: 'Getting fucked with two cocks in your pussy at the same time. If there\'s a third cock in your asshole, it is [double vaginal triple penetration](/tag/dv-tp).',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'double barrel blowjob',
|
|
slug: 'double-barrel-blowjob',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'double blowjob',
|
|
slug: 'double-blowjob',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'doggy style',
|
|
slug: 'doggy-style',
|
|
group: 'position',
|
|
},
|
|
{
|
|
name: 'dress',
|
|
slug: 'dress',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'black',
|
|
slug: 'black',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'electric shock',
|
|
slug: 'electric-shock',
|
|
},
|
|
{
|
|
name: 'enhanced boobs',
|
|
slug: 'enhanced-boobs',
|
|
},
|
|
{
|
|
name: 'enhanced butt',
|
|
slug: 'enhanced-butt',
|
|
},
|
|
{
|
|
name: 'facefucking',
|
|
slug: 'facefucking',
|
|
description: 'A [blowjob](/tag/blowjob) where you give up control, and let them fuck your mouth and [throat](/tag/deepthroat) as if it\'s your pussy.',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'facesitting',
|
|
slug: 'facesitting',
|
|
group: 'position',
|
|
},
|
|
{
|
|
name: 'facial',
|
|
slug: 'facial',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'family',
|
|
slug: 'family',
|
|
},
|
|
{
|
|
name: 'feet',
|
|
slug: 'feet',
|
|
},
|
|
{
|
|
name: 'foot worship',
|
|
slug: 'foot-worship',
|
|
},
|
|
{
|
|
name: 'sole worship',
|
|
slug: 'sole-worship',
|
|
},
|
|
{
|
|
name: 'femdom',
|
|
slug: 'femdom',
|
|
},
|
|
{
|
|
name: 'fingering',
|
|
slug: 'fingering',
|
|
},
|
|
{
|
|
name: 'fisting',
|
|
slug: 'fisting',
|
|
},
|
|
{
|
|
name: 'fisting DP',
|
|
slug: 'fisting-dp',
|
|
},
|
|
{
|
|
name: 'flexible',
|
|
slug: 'flexible',
|
|
},
|
|
{
|
|
name: 'flip-flops',
|
|
slug: 'flip-flops',
|
|
},
|
|
{
|
|
name: 'footjob',
|
|
slug: 'footjob',
|
|
},
|
|
{
|
|
name: 'footjob handjob combo',
|
|
slug: 'footjob-handjob-combo',
|
|
},
|
|
{
|
|
name: 'footjob blowjob combo',
|
|
slug: 'footjob-blowjob-combo',
|
|
},
|
|
{
|
|
name: 'foot gagging',
|
|
slug: 'foot-gagging',
|
|
},
|
|
{
|
|
name: 'foot licking',
|
|
slug: 'foot-licking',
|
|
},
|
|
{
|
|
name: 'foot massage',
|
|
slug: 'foot-massage',
|
|
},
|
|
{
|
|
name: 'foot sex',
|
|
slug: 'foot-sex',
|
|
},
|
|
{
|
|
name: 'free use',
|
|
slug: 'free-use',
|
|
description: 'The fantasy of giving universal consent, and making yourself available for any sexual activity, anywhere, anytime, and possibly anyone, in a society that usually considers your role as a passive sex slave perfectly ordinary. As long as you are accommodating, you may carry on with your regular activities, and pay no attention to how you are being used.',
|
|
},
|
|
{
|
|
name: 'MFF threesome',
|
|
slug: 'mff',
|
|
description: 'A threesome with two women and one guy, in which the women have sex with eachother.',
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'gag',
|
|
slug: 'gag',
|
|
},
|
|
{
|
|
name: 'gagging',
|
|
slug: 'gagging',
|
|
},
|
|
{
|
|
name: 'gangbang',
|
|
slug: 'gangbang',
|
|
description: 'Getting fucked by three or more cocks, at least two at the same time, often but not necessarily involving a [blowbang](/tag/blowbang), [spitroast](/tag/mfm), [double penetration](/tag/dp) and [airtight](/tag/airtight). If you get fucked by one guy at a time, it might be considered a [trainbang](/tag/trainbang). In a reverse gangbang, multiple women fuck one man.', /* eslint-disable-line max-len */
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'older men',
|
|
slug: 'older-men',
|
|
group: 'age',
|
|
},
|
|
{
|
|
name: 'glamcore',
|
|
slug: 'glamcore',
|
|
},
|
|
{
|
|
name: 'glasses',
|
|
slug: 'glasses',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'hentai',
|
|
slug: 'hentai',
|
|
},
|
|
{
|
|
name: 'fake cum',
|
|
slug: 'fake-cum',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'trainbang',
|
|
slug: 'trainbang',
|
|
description: 'Getting fucked by a group of three or more guys taking turns in a [gangbang](/tag/gangbang), one cock after the other, and never more than one at a time.',
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'gaping',
|
|
slug: 'gaping',
|
|
},
|
|
{
|
|
name: 'gay',
|
|
slug: 'gay',
|
|
},
|
|
{
|
|
name: 'gloryhole',
|
|
slug: 'gloryhole',
|
|
},
|
|
{
|
|
name: 'gonzo',
|
|
slug: 'gonzo',
|
|
},
|
|
{
|
|
name: 'gym',
|
|
slug: 'gym',
|
|
},
|
|
{
|
|
name: 'hairy',
|
|
slug: 'hairy',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'handjob',
|
|
slug: 'handjob',
|
|
},
|
|
{
|
|
name: 'hardcore',
|
|
slug: 'hardcore',
|
|
},
|
|
{
|
|
name: 'high heels',
|
|
slug: 'high-heels',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'humiliation',
|
|
slug: 'humiliation',
|
|
},
|
|
{
|
|
name: 'desi',
|
|
slug: 'desi',
|
|
},
|
|
{
|
|
name: 'innie pussy',
|
|
slug: 'innie-pussy',
|
|
},
|
|
{
|
|
name: 'interracial',
|
|
slug: 'interracial',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'JOI',
|
|
slug: 'joi',
|
|
},
|
|
{
|
|
name: 'kissing',
|
|
slug: 'kissing',
|
|
},
|
|
{
|
|
name: 'latex',
|
|
slug: 'latex',
|
|
},
|
|
{
|
|
name: 'Latina',
|
|
slug: 'latina',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'leather',
|
|
slug: 'leather',
|
|
},
|
|
{
|
|
name: 'lesbian',
|
|
slug: 'lesbian',
|
|
},
|
|
{
|
|
name: 'machine dildo',
|
|
slug: 'machine-dildo',
|
|
},
|
|
{
|
|
name: 'lingerie',
|
|
slug: 'lingerie',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'live',
|
|
slug: 'live',
|
|
},
|
|
{
|
|
name: 'maid',
|
|
slug: 'maid',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'massage',
|
|
slug: 'massage',
|
|
},
|
|
{
|
|
name: 'male focus',
|
|
slug: 'male-focus',
|
|
description: 'Straight porn highlighting the male talent.',
|
|
},
|
|
{
|
|
name: 'masturbation',
|
|
slug: 'masturbation',
|
|
},
|
|
{
|
|
name: 'MILF',
|
|
slug: 'milf',
|
|
group: 'age',
|
|
},
|
|
{
|
|
name: 'mature',
|
|
slug: 'mature',
|
|
group: 'age',
|
|
},
|
|
{
|
|
name: 'MFM threesome',
|
|
slug: 'mfm',
|
|
description: 'Two men fucking one woman, but not eachother. Typically involves a \'spitroast\', where one guy gets a blowjob and the other fucks her pussy or ass.',
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'milk',
|
|
slug: 'milk',
|
|
},
|
|
{
|
|
name: 'miniskirt',
|
|
slug: 'miniskirt',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'missionary',
|
|
slug: 'missionary',
|
|
group: 'position',
|
|
},
|
|
{
|
|
name: 'natural boobs',
|
|
slug: 'natural-boobs',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'nipple clamps',
|
|
slug: 'nipple-clamps',
|
|
},
|
|
{
|
|
name: 'nun',
|
|
slug: 'nun',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'oil',
|
|
slug: 'oil',
|
|
},
|
|
{
|
|
name: 'nail polish',
|
|
slug: 'nail-polish',
|
|
},
|
|
{
|
|
name: 'nurse',
|
|
slug: 'nurse',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'cum in mouth',
|
|
slug: 'cum-in-mouth',
|
|
description: 'A guy ejaculating in someone\'s mouth. If they keep their lips wrapped around his cock, it is an [oral creampie](/tag/oral-creampie). They may not be able to resist [swallowing](/tag/swallowing) the cum.',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'oral creampie',
|
|
slug: 'oral-creampie',
|
|
description: 'A guy pumping his semen in someone\'s *closed* [mouth](/tag/cum-in-mouth), a variation of [cum in mouth](/tag/cum-in-mouth). His cock can be [deepthroated](/tag/deepthroat) for a [throatpie](/tag/throatpie)',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'orgy',
|
|
slug: 'orgy',
|
|
description: 'A group of (at least four) people having sex with eachother. If only one person is getting fucked, it is probably a [gangbang](/tag/gangbang).',
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'outdoors',
|
|
slug: 'outdoors',
|
|
group: 'location',
|
|
},
|
|
{
|
|
name: 'outie pussy',
|
|
slug: 'outie-pussy',
|
|
},
|
|
{
|
|
name: 'pain',
|
|
slug: 'pain',
|
|
},
|
|
{
|
|
name: 'parody',
|
|
slug: 'parody',
|
|
},
|
|
{
|
|
name: 'pegging',
|
|
slug: 'pegging',
|
|
},
|
|
{
|
|
name: 'petite',
|
|
slug: 'petite',
|
|
},
|
|
{
|
|
name: 'piercings',
|
|
slug: 'piercings',
|
|
},
|
|
{
|
|
name: 'piss drinking',
|
|
slug: 'piss-drinking',
|
|
},
|
|
{
|
|
name: 'pissing',
|
|
slug: 'pissing',
|
|
},
|
|
{
|
|
name: 'POV',
|
|
slug: 'pov',
|
|
},
|
|
{
|
|
name: 'pussy eating',
|
|
slug: 'pussy-eating',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'pussy to mouth',
|
|
slug: 'pussy-to-mouth',
|
|
description: 'Sucking off a cock right fresh out of your pussy.',
|
|
group: 'oral',
|
|
},
|
|
{
|
|
name: 'pyjamas',
|
|
slug: 'pyjamas',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'redhead',
|
|
slug: 'redhead',
|
|
group: 'hair',
|
|
},
|
|
{
|
|
name: 'reverse blowjob',
|
|
slug: 'reverse-blowjob',
|
|
},
|
|
{
|
|
name: 'reverse cowgirl',
|
|
slug: 'reverse-cowgirl',
|
|
},
|
|
{
|
|
name: 'roleplay',
|
|
slug: 'roleplay',
|
|
},
|
|
{
|
|
name: 'erotic',
|
|
slug: 'erotic',
|
|
},
|
|
{
|
|
name: 'romantic',
|
|
slug: 'romantic',
|
|
},
|
|
{
|
|
name: 'rough',
|
|
slug: 'rough',
|
|
},
|
|
{
|
|
name: 'saliva',
|
|
slug: 'saliva',
|
|
},
|
|
{
|
|
name: 'schoolgirl',
|
|
slug: 'schoolgirl',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'sex',
|
|
slug: 'sex',
|
|
},
|
|
{
|
|
name: 'shaved',
|
|
slug: 'shaved',
|
|
},
|
|
{
|
|
name: 'shoes on',
|
|
slug: 'shoes-on',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'short hair',
|
|
slug: 'short-hair',
|
|
group: 'hair',
|
|
},
|
|
{
|
|
name: 'sideways',
|
|
slug: 'sideways',
|
|
group: 'position',
|
|
},
|
|
{
|
|
name: 'skirt',
|
|
slug: 'skirt',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'slapping',
|
|
slug: 'slapping',
|
|
},
|
|
{
|
|
name: 'sloppy blowjob',
|
|
slug: 'sloppy-blowjob',
|
|
},
|
|
{
|
|
name: 'socks',
|
|
slug: 'socks',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'solo',
|
|
slug: 'solo',
|
|
},
|
|
{
|
|
name: 'skinny',
|
|
slug: 'skinny',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'spanking',
|
|
slug: 'spanking',
|
|
},
|
|
{
|
|
name: 'spooning',
|
|
slug: 'spooning',
|
|
group: 'position',
|
|
},
|
|
{
|
|
name: 'strapon',
|
|
slug: 'strapon',
|
|
},
|
|
{
|
|
name: 'slippers',
|
|
slug: 'slippers',
|
|
},
|
|
{
|
|
name: 'small boobs',
|
|
slug: 'small-boobs',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'small butt',
|
|
slug: 'small-butt',
|
|
},
|
|
{
|
|
name: 'speculum',
|
|
slug: 'speculum',
|
|
},
|
|
{
|
|
name: 'squirting',
|
|
slug: 'squirting',
|
|
},
|
|
{
|
|
name: 'standing doggy style',
|
|
slug: 'standing-doggy-style',
|
|
},
|
|
{
|
|
name: 'stockings',
|
|
slug: 'stockings',
|
|
group: 'clothing',
|
|
},
|
|
{
|
|
name: 'strap-on dildo',
|
|
slug: 'strap-on-dildo',
|
|
},
|
|
{
|
|
name: 'stripper',
|
|
slug: 'stripper',
|
|
},
|
|
{
|
|
name: 'suspension',
|
|
slug: 'suspension',
|
|
},
|
|
{
|
|
name: 'swallowing',
|
|
slug: 'swallowing',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'swinging',
|
|
slug: 'swinging',
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'tattoos',
|
|
slug: 'tattoos',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'teacher',
|
|
slug: 'teacher',
|
|
group: 'roleplay',
|
|
},
|
|
{
|
|
name: 'teasing',
|
|
slug: 'teasing',
|
|
},
|
|
{
|
|
name: 'threesome',
|
|
slug: 'threesome',
|
|
group: 'group',
|
|
},
|
|
{
|
|
name: 'throatpie',
|
|
slug: 'throatpie',
|
|
description: 'An [oral creampie](/tag/oral-creampie) with his cock shoved all the way down the throat.',
|
|
group: 'finish',
|
|
},
|
|
{
|
|
name: 'teen',
|
|
slug: 'teen',
|
|
group: 'age',
|
|
description: 'New starlets aged between roughly 18 and 21, but often stretched to well into their 20s.',
|
|
},
|
|
{
|
|
name: 'titty fucking',
|
|
slug: 'titty-fucking',
|
|
},
|
|
{
|
|
name: 'toe sucking',
|
|
slug: 'toe-sucking',
|
|
},
|
|
{
|
|
name: 'toys',
|
|
slug: 'toys',
|
|
},
|
|
{
|
|
name: 'toy anal',
|
|
slug: 'toy-anal',
|
|
description: 'Stuffing a toy, such as a dildo or buttplug, into the ass',
|
|
},
|
|
{
|
|
name: 'toy DP',
|
|
slug: 'toy-dp',
|
|
description: 'Getting [double penetrated](/tag/dp) with dildos, strap-ons or buttplugs. You can use both ends of a [double dildo](/tag/double-dildo) for a [double dildo DP](/tag/double-dildo-dp).',
|
|
},
|
|
{
|
|
name: 'transsexual',
|
|
slug: 'transsexual',
|
|
},
|
|
{
|
|
name: 'DA triple penetration',
|
|
slug: 'da-tp',
|
|
description: '[Triple penetration](/tag/triple-penetration) with [two cocks in your ass](/tag/dap), and one in your pussy. Also see [double vaginal triple penetration](/tag/dv-tp).',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'DV triple penetration',
|
|
slug: 'dv-tp',
|
|
description: '[Triple penetration](/tag/triple-penetration) with [two cocks in your pussy](/tag/dvp), and one in [your ass](/tag/anal). Also see [double anal triple penetration](/tag/da-tp).',
|
|
group: 'penetration',
|
|
},
|
|
{
|
|
name: 'triple penetration',
|
|
slug: 'triple-penetration',
|
|
description: 'Three cocks fucking her from behind at the same time. This can be either [double anal TP](/tag/da-tp), or [double vaginal TP](/tag/dv-tp).',
|
|
},
|
|
{
|
|
name: 'trimmed',
|
|
slug: 'trimmed',
|
|
},
|
|
{
|
|
name: 'uniform',
|
|
slug: 'uniform',
|
|
},
|
|
{
|
|
name: 'van',
|
|
slug: 'van',
|
|
group: 'location',
|
|
},
|
|
{
|
|
name: 'vibrator',
|
|
slug: 'vibrator',
|
|
},
|
|
{
|
|
name: 'voyeur',
|
|
slug: 'voyeur',
|
|
},
|
|
{
|
|
name: 'virtual reality',
|
|
slug: 'vr',
|
|
},
|
|
{
|
|
name: 'quarantine',
|
|
slug: 'quarantine',
|
|
description: 'The 2019 Coronavirus outbreak (COVID-19) forced sensible people to quarantine at home, spawning a new porn theme featuring self-isolation and masks.',
|
|
},
|
|
{
|
|
name: 'Russian',
|
|
slug: 'russian',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'wet',
|
|
slug: 'wet',
|
|
},
|
|
{
|
|
name: 'white',
|
|
slug: 'white',
|
|
group: 'ethnicity',
|
|
},
|
|
{
|
|
name: 'white cock',
|
|
slug: 'white-cock',
|
|
group: 'body',
|
|
},
|
|
{
|
|
name: 'wife',
|
|
slug: 'wife',
|
|
},
|
|
{
|
|
name: 'office',
|
|
slug: 'office',
|
|
group: 'location',
|
|
},
|
|
{
|
|
name: 'young',
|
|
slug: 'young',
|
|
},
|
|
{
|
|
name: 'exotic',
|
|
slug: 'exotic',
|
|
},
|
|
];
|
|
|
|
const aliases = [
|
|
{
|
|
name: '2on1',
|
|
for: 'threesome',
|
|
},
|
|
{
|
|
name: '3some',
|
|
for: 'threesome',
|
|
},
|
|
{
|
|
name: '2-on-1',
|
|
for: 'threesome',
|
|
},
|
|
{
|
|
name: '2 on 1',
|
|
for: 'threesome',
|
|
},
|
|
{
|
|
name: '3+ on 1',
|
|
for: 'gangbang',
|
|
},
|
|
{
|
|
name: 'trio 2 meiden 1 man',
|
|
for: 'mff',
|
|
},
|
|
{
|
|
name: 'trio 1 meid 2 mannen',
|
|
for: 'mfm',
|
|
},
|
|
{
|
|
name: 'anal sex',
|
|
for: 'anal',
|
|
},
|
|
{
|
|
name: 'anale sex',
|
|
for: 'anal',
|
|
},
|
|
{
|
|
name: 'anal drill',
|
|
for: 'anal',
|
|
},
|
|
{
|
|
name: 'anal gape',
|
|
for: 'gaping',
|
|
},
|
|
{
|
|
name: 'anilingus',
|
|
for: 'ass-eating',
|
|
},
|
|
{
|
|
name: 'analingus',
|
|
for: 'ass-eating',
|
|
},
|
|
{
|
|
name: 'analingus male',
|
|
for: 'ass-eating',
|
|
},
|
|
{
|
|
name: 'asians',
|
|
for: 'asian',
|
|
},
|
|
{
|
|
name: 'asian female',
|
|
for: 'asian',
|
|
},
|
|
{
|
|
name: 'ass fingering',
|
|
for: 'anal-fingering',
|
|
},
|
|
{
|
|
name: 'anal toys',
|
|
for: 'toy-anal',
|
|
},
|
|
{
|
|
name: 'ass licking',
|
|
for: 'ass-eating',
|
|
},
|
|
{
|
|
name: 'asslicking',
|
|
for: 'ass-eating',
|
|
},
|
|
{
|
|
name: 'ass fucking',
|
|
for: 'anal',
|
|
},
|
|
{
|
|
name: 'ass to ass',
|
|
for: 'double-dildo-anal',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'ATOGM',
|
|
for: 'atogm',
|
|
},
|
|
{
|
|
name: 'ass to other girls mouth',
|
|
for: 'atogm',
|
|
},
|
|
{
|
|
name: 'ass to other mouth',
|
|
for: 'atogm',
|
|
},
|
|
{
|
|
name: 'ass to other mouth',
|
|
for: 'atom',
|
|
},
|
|
{
|
|
name: 'atm',
|
|
for: 'atm',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'a2m',
|
|
for: 'atm',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'bald pussy',
|
|
for: 'shaved',
|
|
},
|
|
{
|
|
name: 'ball gag',
|
|
for: 'gag',
|
|
},
|
|
{
|
|
name: 'ball lick',
|
|
for: 'ball-licking',
|
|
},
|
|
{
|
|
name: 'ball suck',
|
|
for: 'ball-licking',
|
|
},
|
|
{
|
|
name: 'ball sucking',
|
|
for: 'ball-licking',
|
|
},
|
|
{
|
|
name: 'boob fucking',
|
|
for: 'titty-fucking',
|
|
},
|
|
{
|
|
name: 'bts',
|
|
for: 'bts',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'behind the scene',
|
|
for: 'bts',
|
|
},
|
|
{
|
|
name: 'blindfolded',
|
|
for: 'blindfold',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'making of',
|
|
for: 'bts',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'mfm',
|
|
for: 'mmf',
|
|
},
|
|
{
|
|
name: 'fmf',
|
|
for: 'mff',
|
|
},
|
|
{
|
|
name: 'mff',
|
|
for: 'mff',
|
|
},
|
|
{
|
|
name: 'ffm',
|
|
for: 'mff',
|
|
},
|
|
{
|
|
name: 'bgb',
|
|
for: 'mfm',
|
|
},
|
|
{
|
|
name: 'big ass',
|
|
for: 'big-butt',
|
|
},
|
|
{
|
|
name: 'big black cock',
|
|
for: 'bbc',
|
|
},
|
|
{
|
|
name: 'big black cocks',
|
|
for: 'bbc',
|
|
},
|
|
{
|
|
name: 'big cocks',
|
|
for: 'big-dick',
|
|
},
|
|
{
|
|
name: 'big cock',
|
|
for: 'big-dick',
|
|
},
|
|
{
|
|
name: 'big booty',
|
|
for: 'big-butt',
|
|
},
|
|
{
|
|
name: 'big butts',
|
|
for: 'big-butt',
|
|
},
|
|
{
|
|
name: 'big tits',
|
|
for: 'big-boobs',
|
|
},
|
|
{
|
|
name: 'busty - big boobs',
|
|
for: 'big-boobs',
|
|
},
|
|
{
|
|
name: 'busty: big beautiful breast',
|
|
for: 'big-boobs',
|
|
},
|
|
{
|
|
name: 'buttrose',
|
|
for: 'anal-prolapse',
|
|
},
|
|
{
|
|
name: 'butt rose',
|
|
for: 'anal-prolapse',
|
|
},
|
|
{
|
|
name: 'bi',
|
|
for: 'bisexual',
|
|
},
|
|
{
|
|
name: 'ebony',
|
|
for: 'black',
|
|
},
|
|
{
|
|
name: 'blonde hair',
|
|
for: 'blonde',
|
|
},
|
|
{
|
|
name: 'blonde female',
|
|
for: 'blonde',
|
|
},
|
|
{
|
|
name: 'blondes',
|
|
for: 'blonde',
|
|
},
|
|
{
|
|
name: 'blow job',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'blowjobs',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'blowjob pov',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'blowjob (double)',
|
|
for: 'double-blowjob',
|
|
},
|
|
{
|
|
name: 'blowjob - double',
|
|
for: 'double-blowjob',
|
|
},
|
|
{
|
|
name: 'blowjob (pov)',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'blowjob - pov',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'fake boobs',
|
|
for: 'enhanced-boobs',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'boob job',
|
|
for: 'titty-fucking',
|
|
},
|
|
{
|
|
name: 'boobjob',
|
|
for: 'enhanced-boobs',
|
|
},
|
|
{
|
|
name: 'brown hair',
|
|
for: 'brunette',
|
|
},
|
|
{
|
|
name: 'brunettes',
|
|
for: 'brunette',
|
|
},
|
|
{
|
|
name: 'buttplug',
|
|
for: 'anal-toys',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'butt plug',
|
|
for: 'anal-toys',
|
|
},
|
|
{
|
|
name: 'butt plugs',
|
|
for: 'anal-toys',
|
|
},
|
|
{
|
|
name: 'caning',
|
|
for: 'corporal-punishment',
|
|
},
|
|
{
|
|
name: 'cattle prod',
|
|
for: 'electric-shock',
|
|
},
|
|
{
|
|
name: 'cheer leader',
|
|
for: 'cheerleader',
|
|
},
|
|
{
|
|
name: 'clover clamps',
|
|
for: 'nipple-clamps',
|
|
},
|
|
{
|
|
name: 'couples fantasies',
|
|
for: 'couples',
|
|
},
|
|
{
|
|
name: 'couple sex',
|
|
for: 'couples',
|
|
},
|
|
{
|
|
name: 'creampies',
|
|
for: 'creampie',
|
|
},
|
|
{
|
|
name: 'creampie - anal',
|
|
for: 'anal-creampie',
|
|
},
|
|
{
|
|
name: 'crop', // a type of whip, not [sic] short for corporal
|
|
for: 'corporal-punishment',
|
|
},
|
|
{
|
|
name: 'cum cleaning',
|
|
for: 'cum-licking',
|
|
},
|
|
{
|
|
name: 'cuck',
|
|
for: 'cuckold',
|
|
},
|
|
{
|
|
name: 'oral creampie',
|
|
for: 'cum-in-mouth',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'cum on ass',
|
|
for: 'cum-on-butt',
|
|
},
|
|
{
|
|
name: 'cum on tits',
|
|
for: 'cum-on-boobs',
|
|
},
|
|
{
|
|
name: 'cum swallow',
|
|
for: 'swallowing',
|
|
},
|
|
{
|
|
name: 'cum swallowing',
|
|
for: 'swallowing',
|
|
},
|
|
{
|
|
name: 'cum shot',
|
|
for: 'cumshot',
|
|
},
|
|
{
|
|
name: 'cunnilingus',
|
|
for: 'pussy-eating',
|
|
},
|
|
{
|
|
name: 'cunilingus',
|
|
for: 'pussy-eating',
|
|
},
|
|
{
|
|
name: 'pussy licking',
|
|
for: 'pussy-eating',
|
|
},
|
|
{
|
|
name: 'debutanten',
|
|
for: 'debut',
|
|
},
|
|
{
|
|
name: 'deep throat',
|
|
for: 'deepthroat',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'deepthroating',
|
|
for: 'deepthroat',
|
|
},
|
|
{
|
|
name: 'dildo',
|
|
for: 'toys',
|
|
},
|
|
{
|
|
name: 'dikke tieten',
|
|
for: 'big-boobs',
|
|
},
|
|
{
|
|
name: 'doggystyle',
|
|
for: 'doggy-style',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'doggy style - pov',
|
|
for: 'doggy-style',
|
|
},
|
|
{
|
|
name: 'doggie style',
|
|
for: 'doggy-style',
|
|
},
|
|
{
|
|
name: 'doggystyle (standing)',
|
|
for: 'standing-doggy-style',
|
|
},
|
|
{
|
|
name: 'doggystyle - standing',
|
|
for: 'standing-doggy-style',
|
|
},
|
|
{
|
|
name: 'doggystyle regular',
|
|
for: 'doggy-style',
|
|
},
|
|
{
|
|
name: 'dom',
|
|
for: 'bdsm',
|
|
},
|
|
{
|
|
name: 'domination',
|
|
for: 'bdsm',
|
|
},
|
|
{
|
|
name: 'dominatrix',
|
|
for: 'femdom',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'dp',
|
|
for: 'dp',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'double dildo deepthroat',
|
|
for: 'double-dildo-kiss',
|
|
},
|
|
{
|
|
name: 'double penetration (dp)',
|
|
for: 'dp',
|
|
},
|
|
{
|
|
name: 'double penetration - dp',
|
|
for: 'dp',
|
|
},
|
|
{
|
|
name: 'double anal (dap)',
|
|
for: 'dap',
|
|
},
|
|
{
|
|
name: 'double anal penetration',
|
|
for: 'dap',
|
|
},
|
|
{
|
|
name: 'double anal penetration (dap)',
|
|
for: 'dap',
|
|
},
|
|
{
|
|
name: 'dpp',
|
|
for: 'dvp',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'tpp',
|
|
for: 'tvp',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'tvp',
|
|
for: 'tvp',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'double vag',
|
|
for: 'dvp',
|
|
},
|
|
{
|
|
name: 'double vaginal penetration',
|
|
for: 'dvp',
|
|
},
|
|
{
|
|
name: 'double vaginal (dvp)',
|
|
for: 'dvp',
|
|
},
|
|
{
|
|
name: 'double vaginal penetration (dvp)',
|
|
for: 'dvp',
|
|
},
|
|
{
|
|
name: 'double vaginal (dpp)',
|
|
for: 'dvp',
|
|
},
|
|
{
|
|
name: 'double pussy penetration',
|
|
for: 'dvp',
|
|
},
|
|
{
|
|
name: 'double pussy penetration (dpp)',
|
|
for: 'dvp',
|
|
},
|
|
{
|
|
name: 'drool',
|
|
for: 'saliva',
|
|
},
|
|
{
|
|
name: 'enhanced',
|
|
for: 'enhanced-boobs',
|
|
},
|
|
{
|
|
name: 'enhanced tits',
|
|
for: 'enhanced-boobs',
|
|
},
|
|
{
|
|
name: 'fake butt',
|
|
for: 'enhanced-butt',
|
|
},
|
|
{
|
|
name: 'enhanced ass',
|
|
for: 'enhanced-butt',
|
|
},
|
|
{
|
|
name: 'fake ass',
|
|
for: 'enhanced-butt',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'facefuck',
|
|
for: 'facefucking',
|
|
},
|
|
{
|
|
name: 'face fuck',
|
|
for: 'facefucking',
|
|
},
|
|
{
|
|
name: 'face fucking',
|
|
for: 'facefucking',
|
|
},
|
|
{
|
|
name: 'face sitting',
|
|
for: 'facesitting',
|
|
},
|
|
{
|
|
name: 'facial cumshot',
|
|
for: 'facial',
|
|
},
|
|
{
|
|
name: 'facials',
|
|
for: 'facial',
|
|
},
|
|
{
|
|
name: 'facial - multiple',
|
|
for: 'facial',
|
|
},
|
|
{
|
|
name: 'fake tits',
|
|
for: 'enhanced-boobs',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'feet sex',
|
|
for: 'foot-sex',
|
|
},
|
|
{
|
|
name: 'foot porn',
|
|
for: 'feet',
|
|
},
|
|
{
|
|
name: 'flagellation',
|
|
for: 'corporal-punishment',
|
|
},
|
|
{
|
|
name: 'flip-flop',
|
|
for: 'flip-flops',
|
|
},
|
|
{
|
|
name: 'flip flops',
|
|
for: 'flip-flops',
|
|
},
|
|
{
|
|
name: 'flipflops',
|
|
for: 'flip-flops',
|
|
},
|
|
{
|
|
name: 'flogging',
|
|
for: 'corporal-punishment',
|
|
},
|
|
{
|
|
name: 'foot fetish',
|
|
for: 'feet',
|
|
},
|
|
{
|
|
name: 'freeuse',
|
|
for: 'free-use',
|
|
},
|
|
{
|
|
name: 'french kissing',
|
|
for: 'kissing',
|
|
},
|
|
{
|
|
name: 'gang bang',
|
|
for: 'gangbang',
|
|
},
|
|
{
|
|
name: 'gape',
|
|
for: 'gaping',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'gapes',
|
|
for: 'gaping',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'gapes (gaping asshole)',
|
|
for: 'gaping',
|
|
},
|
|
{
|
|
name: 'gilf',
|
|
for: 'mature',
|
|
},
|
|
{
|
|
name: 'girl girl',
|
|
for: 'lesbian',
|
|
},
|
|
{
|
|
name: 'girl-girl',
|
|
for: 'lesbian',
|
|
},
|
|
{
|
|
name: 'girl/girl',
|
|
for: 'lesbian',
|
|
},
|
|
{
|
|
name: 'glam',
|
|
for: 'glamcore',
|
|
},
|
|
{
|
|
name: 'glory hole',
|
|
for: 'gloryhole',
|
|
},
|
|
{
|
|
name: 'group sex',
|
|
for: 'orgy',
|
|
},
|
|
{
|
|
name: 'huge tits',
|
|
for: 'big-boobs',
|
|
},
|
|
{
|
|
name: 'huge toys',
|
|
for: 'toys',
|
|
},
|
|
{
|
|
name: 'incest',
|
|
for: 'family',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'incest fantasy',
|
|
for: 'family',
|
|
},
|
|
{
|
|
name: 'indian',
|
|
for: 'desi',
|
|
},
|
|
{
|
|
name: 'innie',
|
|
for: 'innie-pussy',
|
|
},
|
|
{
|
|
name: 'jerk off instructions',
|
|
for: 'joi',
|
|
},
|
|
{
|
|
name: 'jerk-off instructions',
|
|
for: 'joi',
|
|
},
|
|
{
|
|
name: 'jonge meid',
|
|
for: 'young',
|
|
},
|
|
{
|
|
name: 'lashing',
|
|
for: 'corporal-punishment',
|
|
},
|
|
{
|
|
name: 'lezdom',
|
|
for: 'lesbian',
|
|
},
|
|
{
|
|
name: 'mini-skirt',
|
|
for: 'miniskirt',
|
|
},
|
|
{
|
|
name: 'mmf',
|
|
for: 'mfm',
|
|
},
|
|
{
|
|
name: 'mature & milf',
|
|
for: 'milf',
|
|
},
|
|
{
|
|
name: 'milfs',
|
|
for: 'milf',
|
|
},
|
|
{
|
|
name: 'natural',
|
|
for: 'natural-boobs',
|
|
},
|
|
{
|
|
name: 'natural tits',
|
|
for: 'natural-boobs',
|
|
},
|
|
{
|
|
name: 'oiled',
|
|
for: 'oil',
|
|
},
|
|
{
|
|
name: 'old & young',
|
|
for: 'older-men',
|
|
},
|
|
{
|
|
name: 'oral',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'oral sex',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'outie',
|
|
for: 'outie-pussy',
|
|
},
|
|
{
|
|
name: 'piercing',
|
|
for: 'piercings',
|
|
},
|
|
{
|
|
name: 'pierced',
|
|
for: 'piercings',
|
|
},
|
|
{
|
|
name: 'piss',
|
|
for: 'pissing',
|
|
},
|
|
{
|
|
name: 'pee',
|
|
for: 'pissing',
|
|
},
|
|
{
|
|
name: 'peeing',
|
|
for: 'pissing',
|
|
},
|
|
{
|
|
name: 'point of view',
|
|
for: 'pov',
|
|
},
|
|
{
|
|
name: 'point-of-view',
|
|
for: 'pov',
|
|
},
|
|
{
|
|
name: 'prolapse',
|
|
for: 'anal-prolapse',
|
|
},
|
|
{
|
|
name: 'prolapsing',
|
|
for: 'anal-prolapse',
|
|
},
|
|
{
|
|
name: 'pussy fingering',
|
|
for: 'fingering',
|
|
},
|
|
{
|
|
name: 'raven',
|
|
for: 'black-hair',
|
|
},
|
|
{
|
|
name: 'raven hair',
|
|
for: 'black-hair',
|
|
},
|
|
{
|
|
name: 'red hair',
|
|
for: 'redhead',
|
|
},
|
|
{
|
|
name: 'red head',
|
|
for: 'redhead',
|
|
},
|
|
{
|
|
name: 'riding',
|
|
for: 'cowgirl',
|
|
},
|
|
{
|
|
name: 'ginger',
|
|
for: 'redhead',
|
|
},
|
|
{
|
|
name: 'redhead babes',
|
|
for: 'redhead',
|
|
},
|
|
{
|
|
name: 'rimming',
|
|
for: 'ass-eating',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'rimjob',
|
|
for: 'ass-eating',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'role play',
|
|
for: 'roleplay',
|
|
},
|
|
{
|
|
name: 'rope bondage',
|
|
for: 'bondage',
|
|
},
|
|
{
|
|
name: 'rough sex',
|
|
for: 'rough',
|
|
},
|
|
{
|
|
name: 'russian pornstar',
|
|
for: 'russian',
|
|
},
|
|
{
|
|
name: 'school girl',
|
|
for: 'schoolgirl',
|
|
},
|
|
{
|
|
name: 'sadomasochism',
|
|
for: 'bdsm',
|
|
},
|
|
{
|
|
name: 'sadism',
|
|
for: 'bdsm',
|
|
},
|
|
{
|
|
name: 'scissoring',
|
|
for: 'lesbian',
|
|
},
|
|
{
|
|
name: 'sex toys',
|
|
for: 'toys',
|
|
},
|
|
{
|
|
name: 'shaved pussy',
|
|
for: 'shaved',
|
|
},
|
|
{
|
|
name: 'shoes',
|
|
for: 'shoes-on',
|
|
},
|
|
{
|
|
name: 'side fuck',
|
|
for: 'sideways',
|
|
},
|
|
{
|
|
name: 'slave',
|
|
for: 'bdsm',
|
|
},
|
|
{
|
|
name: 'small ass',
|
|
for: 'small-butt',
|
|
},
|
|
{
|
|
name: 'small tits',
|
|
for: 'small-boobs',
|
|
},
|
|
{
|
|
name: 'spit',
|
|
for: 'saliva',
|
|
},
|
|
{
|
|
name: 'spitroast',
|
|
for: 'mfm',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'spoon',
|
|
for: 'spooning',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'sport',
|
|
for: 'gym',
|
|
},
|
|
{
|
|
name: 'sports',
|
|
for: 'gym',
|
|
},
|
|
{
|
|
name: 'sex toy',
|
|
for: 'toys',
|
|
},
|
|
{
|
|
name: 'standing doggystyle',
|
|
for: 'standing-doggy-style',
|
|
},
|
|
{
|
|
name: 'swallow',
|
|
for: 'swallowing',
|
|
},
|
|
{
|
|
name: 'swingers',
|
|
for: 'swinging',
|
|
},
|
|
{
|
|
name: 'strap-on',
|
|
for: 'strap-on-dildo',
|
|
},
|
|
{
|
|
name: 'strap on',
|
|
for: 'strap-on-dildo',
|
|
},
|
|
{
|
|
name: 'strap on dildo',
|
|
for: 'strap-on-dildo',
|
|
},
|
|
{
|
|
name: 'sub',
|
|
for: 'bdsm',
|
|
},
|
|
{
|
|
name: 'submission',
|
|
for: 'bdsm',
|
|
},
|
|
{
|
|
name: 'squirt',
|
|
for: 'squirting',
|
|
},
|
|
{
|
|
name: 'tap',
|
|
for: 'tap',
|
|
},
|
|
{
|
|
name: 'triple vaginal penetration',
|
|
for: 'tvp',
|
|
},
|
|
{
|
|
name: 'tease',
|
|
for: 'teasing',
|
|
},
|
|
{
|
|
name: 'tattoo',
|
|
for: 'tattoos',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'teens',
|
|
for: 'teen',
|
|
},
|
|
{
|
|
name: 'throat fucking',
|
|
for: 'facefucking',
|
|
},
|
|
{
|
|
name: 'tiny boobs',
|
|
for: 'small-boobs',
|
|
},
|
|
{
|
|
name: 'tiny tits',
|
|
for: 'small-boobs',
|
|
},
|
|
{
|
|
name: 'tittyfuck',
|
|
for: 'titty-fucking',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'tp',
|
|
for: 'triple-penetration',
|
|
},
|
|
{
|
|
name: 'trans',
|
|
for: 'transsexual',
|
|
},
|
|
{
|
|
name: 'transgender',
|
|
for: 'transsexual',
|
|
secondary: true,
|
|
},
|
|
{
|
|
name: 'triple anal (tap)',
|
|
for: 'tap',
|
|
},
|
|
{
|
|
name: 'shemale',
|
|
for: 'transsexual',
|
|
},
|
|
{
|
|
name: 'tranny',
|
|
for: 'transsexual',
|
|
},
|
|
{
|
|
name: 'ts',
|
|
for: 'transsexual',
|
|
},
|
|
{
|
|
name: 'ts cock',
|
|
for: 'transsexual',
|
|
},
|
|
{
|
|
name: 'trimmed pussy',
|
|
for: 'trimmed',
|
|
},
|
|
{
|
|
name: 'upside down blowjob',
|
|
for: 'reverse-blowjob',
|
|
},
|
|
{
|
|
name: 'vr',
|
|
for: 'vr',
|
|
},
|
|
{
|
|
name: 'whipping',
|
|
for: 'corporal-punishment',
|
|
},
|
|
{
|
|
name: 'caucasian',
|
|
for: 'white',
|
|
},
|
|
{
|
|
name: 'vlaams',
|
|
for: 'flemish',
|
|
},
|
|
{
|
|
name: 'work',
|
|
for: 'office',
|
|
},
|
|
{
|
|
name: 'workplace',
|
|
for: 'office',
|
|
},
|
|
{
|
|
name: 'zapper',
|
|
for: 'electric-shock',
|
|
},
|
|
{
|
|
name: 'amateur sex',
|
|
for: 'amateur',
|
|
},
|
|
{
|
|
name: 'lesbische sex',
|
|
for: 'lesbian',
|
|
},
|
|
{
|
|
name: 'neuken 1 op 1',
|
|
for: 'sex',
|
|
},
|
|
{
|
|
name: 'exotische meid',
|
|
for: 'exotic',
|
|
},
|
|
{
|
|
name: 'rollenspel',
|
|
for: 'roleplay',
|
|
},
|
|
{
|
|
name: 'blondje',
|
|
for: 'blonde',
|
|
},
|
|
{
|
|
name: 'rossig',
|
|
for: 'redhead',
|
|
},
|
|
{
|
|
name: 'grote-billen',
|
|
for: 'big-butt',
|
|
},
|
|
{
|
|
name: 'interraciaal',
|
|
for: 'interracial',
|
|
},
|
|
{
|
|
name: 'squirten',
|
|
for: 'squirting',
|
|
},
|
|
{
|
|
name: 'buitensex',
|
|
for: 'outdoors',
|
|
},
|
|
{
|
|
name: 'volle vrouw',
|
|
for: 'curvy',
|
|
},
|
|
{
|
|
name: 'romantische sex',
|
|
for: 'romantic',
|
|
},
|
|
{
|
|
name: 'pijpbeurt',
|
|
for: 'blowjob',
|
|
},
|
|
{
|
|
name: 'pijpen',
|
|
for: 'blowjob',
|
|
},
|
|
];
|
|
|
|
const priorities = [ // higher index is higher priority
|
|
['double-dildo', 'double-dildo-blowjob', 'double-dildo-kiss', 'double-dildo-anal', 'double-dildo-dp'],
|
|
['toys', 'toy-anal', 'toy-dp', 'piss-drinking'],
|
|
['family'],
|
|
['blowjob', 'deepthroat'],
|
|
['asian', 'black', 'latina', 'white', 'interracial'],
|
|
['bdsm', 'bts'],
|
|
['facefucking', 'gaping', 'atm', 'atogm', 'pussy-to-mouth', 'ass-eating'],
|
|
['facial', 'swallowing', 'creampie', 'anal-creampie', 'oral-creampie', 'cum-in-mouth', 'throatpie'],
|
|
['lesbian', 'rough', 'milf', 'male-focus'],
|
|
['threesome', 'mfm', 'mff', 'trainbang', 'pissing'],
|
|
['anal', 'bukkake'],
|
|
['dp', 'dap', 'tap', 'dvp', 'tvp', 'airtight'],
|
|
['gangbang', 'blowbang', 'orgy'],
|
|
['gay', 'transsexual', 'bisexual', 'hentai'],
|
|
].reduce((acc, slugs, index) => {
|
|
slugs.forEach((slug) => { acc[slug] = index; });
|
|
|
|
return acc;
|
|
}, {});
|
|
|
|
exports.seed = (knex) => Promise.resolve()
|
|
.then(async () => upsert('tags_groups', groups, 'slug', knex))
|
|
.then(async () => {
|
|
const groupEntries = await knex('tags_groups').select('*');
|
|
const groupsMap = groupEntries.reduce((acc, { id, slug }) => ({ ...acc, [slug]: id }), {});
|
|
|
|
const uniqueTags = new Set();
|
|
|
|
const tagsWithGroups = tags.map((tag) => {
|
|
if (uniqueTags.has(tag.slug)) {
|
|
// database error doesn't reveal conflict details, so pre-check for more insight
|
|
throw new Error(`Duplicate tag: ${tag.slug}`);
|
|
}
|
|
|
|
uniqueTags.add(tag.slug);
|
|
|
|
return {
|
|
name: tag.name,
|
|
slug: tag.slug || slugify(tag.name),
|
|
description: tag.description,
|
|
// priority: tag.priority || 0,
|
|
priority: typeof priorities[tag.slug] === 'undefined' ? -1 : priorities[tag.slug],
|
|
group_id: tag.group ? groupsMap[tag.group] : null,
|
|
alias_for: null,
|
|
};
|
|
});
|
|
|
|
return upsert('tags', tagsWithGroups, 'slug');
|
|
})
|
|
.then(async () => {
|
|
const tagEntries = await knex('tags').select('*').where({ alias_for: null });
|
|
const tagsMap = tagEntries.reduce((acc, { id, slug }) => ({ ...acc, [slug]: id }), {});
|
|
|
|
const tagAliases = aliases.map((alias) => ({
|
|
name: alias.name,
|
|
alias_for: tagsMap[alias.for],
|
|
secondary: !!alias.secondary,
|
|
}));
|
|
|
|
return upsert('tags', tagAliases, 'name');
|
|
});
|