traxxx/seeds/00_tags.js

1964 lines
31 KiB
JavaScript

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 */
priority: 9,
group: 'penetration',
},
{
name: 'amateur',
slug: 'amateur',
},
{
name: 'anal creampie',
slug: 'anal-creampie',
priority: 7,
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. Enjoyable anal sex tends to require practice and patience, a rectal douching ritual, as well and a generous use of water-based lubricant to ensure comfort and prevent small tears that could lead to bacterial infections. Although you cannot get pregnant through anal sex directly, there is an increased risk of passing STDs, so the use of condoms and regular health checks are strongly recommended.',
priority: 9,
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',
priority: 5,
group: 'ethnicity',
},
{
name: 'athletic',
slug: 'athletic',
group: 'body',
},
{
name: 'ass to mouth',
slug: 'atm',
priority: 6,
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',
priority: 6,
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',
priority: 6,
},
{
name: 'ass worship',
slug: 'ass-worship',
},
{
name: 'ball licking',
slug: 'ball-licking',
group: 'oral',
},
{
name: 'ballerina',
slug: 'ballerina',
group: 'roleplay',
},
{
name: 'bathroom',
slug: 'bathroom',
group: 'location',
},
{
name: 'BDSM',
slug: 'bdsm',
priority: 8,
},
{
name: 'BBC',
slug: 'bbc',
group: 'body',
},
{
name: 'behind the scenes',
slug: 'bts',
priority: 6,
},
{
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',
priority: 10,
},
{
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',
priority: 5,
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',
priority: 9,
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: 'bondage',
slug: 'bondage',
},
{
name: 'braces',
slug: 'braces',
},
{
name: 'brunette',
slug: 'brunette',
group: 'hair',
},
{
name: 'bukkake',
slug: 'bukkake',
priority: 8,
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',
priority: 8,
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 swapping',
slug: 'cum-swapping',
},
{
name: 'cumshot',
slug: 'cumshot',
},
{
name: 'curvy',
slug: 'curvy',
},
{
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).',
priority: 8,
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).',
priority: 4,
},
{
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".',
priority: 4,
},
{
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).',
priority: 4,
},
{
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).',
priority: 4,
},
{
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.',
priority: 4,
},
{
name: 'triple anal',
slug: 'tap',
description: 'Getting fucked in the ass by not one, two, but *three* cocks at the same time.',
priority: 7,
group: 'penetration',
},
{
name: 'deepthroat',
slug: 'deepthroat',
priority: 6,
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',
priority: 9,
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).',
priority: 8,
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',
priority: 5,
group: 'ethnicity',
},
{
name: 'electric shock',
slug: 'electric-shock',
},
{
name: 'enhanced boobs',
slug: 'enhanced-boobs',
},
{
name: 'enhanced butt',
slug: 'enhanced-butt',
},
{
name: 'facefucking',
slug: 'facefucking',
priority: 7,
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',
priority: 7,
},
{
name: 'feet',
slug: 'feet',
},
{
name: 'femdom',
slug: 'femdom',
},
{
name: 'fingering',
slug: 'fingering',
},
{
name: 'fisting',
slug: 'fisting',
},
{
name: 'fisting DP',
slug: 'fisting-dp',
},
{
name: 'flexible',
slug: 'flexible',
},
{
name: 'MFF threesome',
slug: 'mff',
priority: 9,
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 */
priority: 9,
group: 'group',
},
{
name: 'glamcore',
slug: 'glamcore',
},
{
name: 'glasses',
slug: 'glasses',
group: 'clothing',
},
{
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.',
priority: 7,
group: 'group',
},
{
name: 'gaping',
slug: 'gaping',
priority: 6,
},
{
name: 'gay',
slug: 'gay',
priority: 10,
},
{
name: 'gloryhole',
slug: 'gloryhole',
},
{
name: 'gonzo',
slug: 'gonzo',
},
{
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: 'indian',
slug: 'indian',
},
{
name: 'innie pussy',
slug: 'innie-pussy',
},
{
name: 'interracial',
slug: 'interracial',
priority: 7,
group: 'ethnicity',
},
{
name: 'kissing',
slug: 'kissing',
},
{
name: 'latex',
slug: 'latex',
},
{
name: 'Latina',
slug: 'latina',
priority: 5,
group: 'ethnicity',
},
{
name: 'leather',
slug: 'leather',
},
{
name: 'lesbian',
slug: 'lesbian',
priority: 9,
},
{
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',
priority: 7,
description: 'Straight porn highlighting the male talent.',
},
{
name: 'masturbation',
slug: 'masturbation',
},
{
name: 'MILF',
slug: 'milf',
priority: 7,
group: 'age',
},
{
name: 'MFM threesome',
slug: 'mfm',
priority: 9,
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: '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: 'nurse',
slug: 'nurse',
group: 'roleplay',
},
{
name: 'cum in mouth',
slug: 'cum-in-mouth',
priority: 7,
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',
priority: 7,
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',
priority: 9,
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',
priority: 6,
},
{
name: 'pissing',
slug: 'pissing',
priority: 8,
},
{
name: 'POV',
slug: 'pov',
},
{
name: 'pussy eating',
slug: 'pussy-eating',
group: 'oral',
},
{
name: 'pussy to mouth',
slug: 'pussy-to-mouth',
priority: 5,
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 cowgirl',
slug: 'reverse-cowgirl',
},
{
name: 'roleplay',
slug: 'roleplay',
},
{
name: 'rough',
slug: 'rough',
priority: 6,
},
{
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: 'spanking',
slug: 'spanking',
},
{
name: 'spooning',
slug: 'spooning',
group: 'position',
},
{
name: 'strapon',
slug: 'strapon',
},
{
name: 'small boobs',
slug: 'small-boobs',
},
{
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: 'suspension',
slug: 'suspension',
},
{
name: 'swallowing',
slug: 'swallowing',
group: 'finish',
priority: 6,
},
{
name: 'swinging',
slug: 'swinging',
group: 'group',
},
{
name: 'tattoos',
slug: 'tattoos',
group: 'body',
},
{
name: 'teacher',
slug: 'teacher',
group: 'roleplay',
},
{
name: 'threesome',
slug: 'threesome',
priority: 8,
group: 'group',
},
{
name: 'throatpie',
slug: 'throatpie',
priority: 6,
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',
},
{
name: 'titty fucking',
slug: 'titty-fucking',
},
{
name: 'toys',
slug: 'toys',
priority: 6,
},
{
name: 'toy anal',
slug: 'toy-anal',
description: 'Stuffing a toy, such as a dildo or buttplug, into the ass',
priority: 7,
},
{
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).',
priority: 4,
},
{
name: 'transsexual',
slug: 'transsexual',
priority: 10,
},
{
name: 'DA triple penetration',
slug: 'da-tp',
priority: 7,
description: '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',
priority: 7,
description: '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',
priority: 7,
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',
priority: 4,
group: 'ethnicity',
},
{
name: 'wet',
slug: 'wet',
},
{
name: 'white',
slug: 'white',
priority: 7,
group: 'ethnicity',
},
{
name: 'white cock',
slug: 'white-cock',
group: 'body',
},
{
name: 'wife',
slug: 'wife',
},
{
name: 'office',
slug: 'office',
group: 'location',
},
];
const aliases = [
{
name: '2on1',
for: 'threesome',
},
{
name: '2-on-1',
for: 'threesome',
},
{
name: '2 on 1',
for: 'threesome',
},
{
name: '3+ on 1',
for: 'gangbang',
},
{
name: 'anal sex',
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: 'ass to other girl\'s mouth',
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: '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: 'deep throat',
for: 'deepthroat',
secondary: true,
},
{
name: 'deepthroating',
for: 'deepthroat',
},
{
name: 'dildo',
for: 'toys',
},
{
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 (dap)',
for: 'dap',
},
{
name: 'dpp',
for: 'dvp',
secondary: true,
},
{
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: 'flagellation',
for: 'corporal-punishment',
},
{
name: 'flogging',
for: 'corporal-punishment',
},
{
name: 'foot fetish',
for: 'feet',
},
{
name: 'french kissing',
for: 'kissing',
},
{
name: 'gape',
for: 'gaping',
secondary: true,
},
{
name: 'gapes',
for: 'gaping',
secondary: true,
},
{
name: 'gapes (gaping asshole)',
for: 'gaping',
},
{
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: 'innie',
for: 'innie-pussy',
},
{
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: 'oral',
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: '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: '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: '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: 'ts',
for: 'transsexual',
},
{
name: 'ts cock',
for: 'transsexual',
},
{
name: 'trimmed pussy',
for: 'trimmed',
},
{
name: 'vr',
for: 'vr',
},
{
name: 'whipping',
for: 'corporal-punishment',
},
{
name: 'caucasian',
for: 'white',
},
{
name: 'work',
for: 'office',
},
{
name: 'workplace',
for: 'office',
},
{
name: 'zapper',
for: 'electric-shock',
},
];
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 tagsWithGroups = tags.map(tag => ({
name: tag.name,
slug: tag.slug || slugify(tag.name),
description: tag.description,
priority: tag.priority || 0,
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');
});