traxxx/seeds/04_media.js

265 lines
12 KiB
JavaScript

const upsert = require('../src/utils/upsert');
const tagPosters = [
['airtight', 1, 'Jynx Maze in "Pump My Ass Full of Cum 3" for Jules Jordan'],
['anal', 2, 'Sheena Shaw for Bang Bros'],
['anal-creampie', 0, 'Gina Valentina and Jane Wilde in "A Very Special Anniversary" for Tushy'],
['asian', 'poster', 'Vina Sky in "Young and Glamorous 10" for Jules Jordan'],
['ass-to-mouth', 'poster', 'Alysa Gap and Logan in "Anal Buffet 4" for Evil Angel'],
['bdsm', 0, 'Dani Daniels in "The Traning of Dani Daniels, Day 2" for The Training of O at Kink'],
['behind-the-scenes', 0, 'Janice Griffith in "Day With A Pornstar: Janice" for Brazzers'],
['blowbang', 'poster'],
['blowjob', 0, 'Adriana Chechik in "The Dinner Party" for Real Wife Stories (Brazzers)'],
['bukkake', 'poster'],
['caucasian', 1, 'Sheena Shaw for Brazzers'],
['creampie', 'poster'],
['da-tp', 0, 'Natasha Teen in LegalPorno SZ2164'],
['deepthroat', 0, 'Chanel Grey in "Deepthroating Is Fun" for Throated'],
['double-anal', 2, 'Lana Rhoades in "Lana Rhoades Unleashed" for HardX'],
['double-penetration', 'poster', 'Mia Malkova in "DP Me Vol. 8" for HardX'],
['double-vaginal', 'poster', 'Riley Reid in "Pizza That Ass" for Reid My Lips'],
['dv-tp', 'poster', 'Juelz Ventura in "Gangbanged 5" for Elegant Angel'],
['ebony', 1, 'Sarah Banks for Brazzers'],
['facefucking', 1, 'Carrie for Young Throats'],
['facial', 'poster'],
['gangbang', 'poster', 'Kristen Scott in "Interracial Gangbang!" for Jules Jordan'],
['gaping', 1, 'Vina Sky in "Vina Sky Does Anal" for HardX'],
['interracial', 'poster'],
['latina', 'poster'],
['mff', 0, 'Madison Ivy and Adriana Chechik in "Day With A Pornstar" for Brazzers'],
['mfm', 1, 'Jynx Maze in "Don\'t Make Me Beg 4" for Evil Angel'],
['oral-creampie', 1, 'Keisha Grey in Brazzers House'],
['orgy', 'poster'],
['schoolgirl', 1, 'Eliza Ibarra for Brazzers'],
['swallowing', 'poster'],
['tattoo', 'poster', 'Kali Roses in "Goes All In For Anal" for Hussie Pass'],
['trainbang', 'poster', 'Kali Roses in "Passing Me Around" for Blacked'],
['triple-anal', 'poster', 'Kristy Black in SZ1986 for LegalPorno'],
]
.map(([slug, filename, comment], index) => ({
tagSlug: slug,
path: `tags/${slug}/${filename}.jpeg`,
thumbnail: `tags/${slug}/${filename}_thumb.jpeg`,
mime: 'image/jpeg',
index,
comment,
}));
const tagPhotos = [
['airtight', 2, 'Dakota Skye in "Dakota Goes Nuts" for ArchAngel'],
['airtight', 3, 'Anita Bellini in "Triple Dick Gangbang" for Hands On Hardcore (DDF Network)'],
['anal', 'poster', 'Jynx Maze in "Anal Buffet 6" for Evil Angel'],
['anal', 1, 'Veronica Leal and Tina Kay in "Agents On Anal Mission" for Asshole Fever'],
['anal', 0],
['caucasian', 'poster'],
['da-tp', 1, 'Francys Belle in SZ1702 for LegalPorno'],
['da-tp', 2, 'Angel Smalls in GIO408 for LegalPorno'],
['da-tp', 3, 'Evelina Darling in GIO294'],
['da-tp', 4, 'Ninel Mojado aka Mira Cuckold in GIO063 for LegalPorno'],
['double-anal', 6, 'Sheena Shaw in "Ass Worship 14" for Jules Jordan'],
['double-anal', 5, 'Riley Reid in "The Gangbang of Riley Reid" for Jules Jordan'],
['double-anal', 'poster', 'Haley Reed in "Young Hot Ass" for Evil Angel'],
['double-anal', 0, 'Nicole Black doing double anal during a gangbang in GIO971 for LegalPorno'],
['double-anal', 1, 'Ria Sunn in SZ1801 for LegalPorno'],
['double-penetration', 0, 'Zoey Monroe in "Slut Puppies 7" for Jules Jordan'],
['double-penetration', 1, 'Jynx Maze in "Don\'t Make Me Beg 4" for Evil Angel'],
['double-vaginal', 0, 'Aaliyah Hadid in "Squirting From Double Penetration With Anal" for Bang Bros'],
['dv-tp', 1, 'Adriana Chechik in "Adriana\'s Triple Anal Penetration!"'],
['dv-tp', 0, 'Luna Rival in LegalPorno SZ1490'],
['facefucking', 2, 'Jynx Maze for Throated'],
['gangbang', 0, '"4 On 1 Gangbangs" for Doghouse Digital'],
['gangbang', 1, 'Ginger Lynn in "Gangbang Mystique", a photoset shot by Suze Randall for Puritan No. 10, 1984. This photo pushed the boundaries of pornography at the time, as depicting a woman \'fully occupied\' was unheard of.'],
['gangbang', 2, 'Riley Reid\'s double anal in "The Gangbang of Riley Reid" for Jules Jordan'],
['gaping', 'poster', 'Paulina in "Anal Buffet 4" for Evil Angel'],
['gaping', 0, 'McKenzee Miles in "Anal Buffet 4" for Evil Angel'],
['mfm', 'poster', 'Vina Sky for Jules Jordan'],
['trainbang', 0, 'Nicole Black in GIO971 for LegalPorno'],
['triple-anal', 1, 'Natasha Teen in SZ2098 for LegalPorno'],
['triple-anal', 2, 'Kira Thorn in GIO1018 for LegalPorno'],
['oral-creampie', 'poster', 'Khloe Kapri'],
]
.map(([slug, fileIndex, comment], index) => ({
tagSlug: slug,
path: `tags/${slug}/${fileIndex}.jpeg`,
thumbnail: `tags/${slug}/${fileIndex}_thumb.jpeg`,
mime: 'image/jpeg',
index,
comment,
}));
const sfw = Object.entries({
kittens: [
['fEK4jvgnApg', 'Kim Davies'],
['FCx5h0erwnA', 'Lorraine Steriopol'],
['RcGUiP9dphM', 'Kym Ellis'],
['gAPXLS1LRVE', 'Olya Kuzovkina'],
['JHf_O0inuHg', 'Prasad Panchakshari'],
['CKsDMYPDgCs', 'Jacalyn Beales'],
['mQquoOszMRM', 'Dimitri Houtteman'],
['MNju0A6EeE0', 'Amy Baugess'],
['emI7VUcvLi0', 'The Lucky Neko'],
['Aq4e2-v7UuQ', 'Mario Peter'],
['6vY_jbV12kQ', 'Kazuky Akayashi'],
['1BfCps2-XjQ', 'Ramiz Dedaković'],
['iNEXVlX-RLs', 'Lucija Ros'],
['b8g-ywrrl5Y', 'Leighann Blackwood'],
['Y3gjv5x38Wc', 'Agustin Fernandez'],
['TYXh7h4QxX0', 'Leighann Blackwood'],
['6EchiwVg7C4', 'Jesse Borovnica'],
['fGh_mgAcKYY', 'Šárka Jonášová'],
['V8o2n1GbMWc', 'Hunt Han'],
['TEnrxLKakgI', 'Diver Zhang'],
['XZuTLRfxwcU', 'Diana Parkhouse'],
['rpvS2T2Tl0c', 'Luiza Braun'],
['1S08ciB6Fy4', 'Екатерина Балабанова'],
['iuBVMDnwaho', 'Shaun Meintjes'],
['02kGh5lGsb8', 'Kym Ellis'],
['8ELEgu78IbU', 'Kristin Wilson'],
['TQ0XD_mGC8c', 'Kamal Bilal'],
['zgvb8Knw_AU', 'Zoë Gayah Jonker'],
['GGb-AyBZhjY', 'Brett Jordan'],
['DyD9hx5lvpg', 'James Pond'],
],
architecture: [
['jBanV-D3T-Q', 'Dimitry Anikin'],
['VoQ35NRfZro', 'Dabbas'],
['_u_wI4LaT7o', 'Alex Hudson'],
['oSmn4cbhl8w', 'Jorge Gardner'],
['c8GdokJMjWU', 'Mert Kahveci'],
['nfPguKj20Ac', 'Ilya Panasenko'],
['GGxUyCgfORg', 'photo_comments'],
['oLUPaceKme0', 'Jack Schwartz'],
['bo6oz4m4OXY', 'Vinicius Henrique'],
['7HYbCXD2GSA', 'Theme Inn'],
['6K4hh4VX3T0', 'SaiKrishna Saketh'],
['lTxOZBNZ9yM', '[2Ni]'],
['H3mL3kocOQ4', 'Artur Matosyan'],
['ijxxeMO3c8E', 'Larry Teo'],
['WMrd7-CjyF0', 'Anna Claire Schellenberg'],
['FJIFiUCOTfc', 'Kirsten Drew'],
['9daKXiWx5Eg', 'Anastasia Dulgier'],
['47QjuZBn5dQ', 'Murugavel Oli'],
['yjR2ne1gtAA', 'Marius'],
['y9vO3FWDZb0', 'bckfwd'],
['Ro6CB6x-VUg', 'Andreas NextVoyagePL'],
['2td44mctvmI', 'Cameron Venti'],
['M1uoNRrNrkE', 'Willian Justen de Vasconcellos'],
['L-2jRW74fPY', 'Daryan Shamkhali'],
['NrzNScsGgp8', 'Guy Basabose'],
['Qr5pi1_GlvY', 'Benno Klandt'],
['twruXW0M2Mw', 'sk'],
['B8vwUO2NM9Y', 'Stuart Frisby'],
['p9jBrqMSU6Q', 'Han Leentvaar'],
['4rGlazYAV3I', 'Dmitry Bayer'],
],
flowers: [
['4QLKuXKAy7k', 'BEAUFIGEAU CELINE'],
['DlYzHwAl32g', 'HISANARI KUNIMOTO'],
['3TXuFNun-5Q', 'Erik Andres Reynoso'],
['Rrhfeq9yeQ0', 'NeONBRAND'],
['YaQdJyulJdU', 'Natasha V'],
['wt4u1wNiT9I', 'Teo Zac'],
['HG5RcKEawLA', 'Varshesh Joshi'],
['VBtdWGCQ2yw', 'Vanessa Ochotorena'],
['a-lIQzpvbHs', 'Thomas AE'],
['D5RScffd8WU', 'NeONBRAND'],
['mXQyEcINwa8', 'Thought Catalog'],
['REczfcmwooE', 'Steve Harvey'],
['7pGehyH7o64', 'Leonardo Wong'],
['wvGQYtZ_c08', 'chuttersnap'],
['jjqZ0gvHLYc', 'Suresh Purohit'],
['9wQ-aGu0gBs', 'Joël de Vriend'],
['8ANiHTtHbAQ', 'Nick Karvounis'],
['Ehko8EbURbk', 'Chris Barbalis'],
['Rlxfn__azLQ', 'Annie Spratt'],
['q8I3Jeph4uU', 'Jake Dela Concepcion'],
['wQjjYp8_a0Y', 'Henry Lorenzatto'],
['GnwWHUXBfYI', 'Will Svec'],
['pwFNVBlj5XU', 'Danijela Froki'],
['RWz313DUECo', 'Laura Baker'],
['lffwXgsqChg', 'Nils Schirmer'],
['e1O6NCmhUt4', 'Brian McGowan'],
],
food: [
['XPSXhLx143g', 'Wouter Meijering'],
['VpxavZd4S-I', 'Mr Lemon'],
['9vHOhKoNlNw', 'Edrece Stansberry'],
['uScYRjZ2ol8', 'donald modeste'],
['fCE-pTmFrPI', 'Valeriu Bondarenco'],
['1ZTccDpF71k', 'Austin Paquette'],
['Au-LzDMd_Cw', 'Stephanie McCabe'],
['9cfHdC2Asak', 'cindy fernandez'],
['4-rmvQRL2nY', 'Annie Spratt'],
['8Yvwy4Kbd1g', 'Alex Kondratiev'],
['4PtChDuxsDI', 'Dronile Hiraldo'],
['Mi1SNlsyWAk', 'Louis Hansel @shotsoflouis'],
['nn0whk6nzv4', 'Yulia Chinato'],
['8JIIoSFtEbo', 'Massimo Virgilio'],
['44eKcVXzFoc', 'Alonso Romero'],
['JpbtAb-f3JA', 'Dollar Gill'],
['Hvrm3efPYIA', 'Delaney Van'],
['4E0dknSrQVU', 'Matteo Maretto'],
['krNP2ESq-54', 'Joshua Bedford'],
['DPNrBT1WCMs', 'Egor Lyfar'],
['Yy-dHQP-Ax0', 'Markus Spiske'],
['BKSntHf8oiU', 'Melissa Walker Horn'],
['asaGSZEyltQ', 'Noora AlHammadi'],
['U3hCd1S7FQ4', 'Louis Hansel @shotsoflouis'],
['VOpJTnP6S9g', 'Liana Mikah'],
['9TWavGempJc', 'Ashleigh Robertson'],
['I2tgHl69Dco', 'Louis Hansel @shotsoflouis'],
['fyQr1T3GE34', 'Petr Sevcovic'],
['pGe5mc4Eip8', 'Daniel Park'],
['gZsgKrNc8es', 'Dan Gold'],
],
})
.map(([category, photos]) => photos.map(([photo, copyright], index) => ({
path: `sfw/${category}/${photo}.jpeg`,
thumbnail: `sfw/${category}/thumbs/${photo}.jpeg`,
mime: 'image/jpeg',
sfw_media_id: null,
group: category,
index,
copyright,
comment: `Courtesy of ${copyright}`,
})))
.flat();
/* eslint-disable max-len */
exports.seed = knex => Promise.resolve()
.then(async () => {
const { inserted } = await upsert('media', sfw, 'path');
const sfwMediaIds = inserted.map(mediaEntry => ({ media_id: mediaEntry.id }));
await upsert('media_sfw', sfwMediaIds, 'media_id');
})
.then(async () => {
const tagMedia = tagPosters.concat(tagPhotos);
const tags = await knex('tags').whereIn('slug', tagMedia.map(item => item.tagSlug));
const { inserted, updated } = await upsert('media', tagMedia.map(({
path, thumbnail, mime, index, comment,
}) => ({
path, thumbnail, mime, index, comment,
})), 'path', knex);
const tagIdsBySlug = tags.reduce((acc, tag) => ({ ...acc, [tag.slug]: tag.id }), {});
const mediaIdsByPath = inserted.concat(updated).reduce((acc, item) => ({ ...acc, [item.path]: item.id }), {});
const tagPosterEntries = tagPosters.map(poster => ({
tag_id: tagIdsBySlug[poster.tagSlug],
media_id: mediaIdsByPath[poster.path],
}));
const tagPhotoEntries = tagPhotos.map(photo => ({
tag_id: tagIdsBySlug[photo.tagSlug],
media_id: mediaIdsByPath[photo.path],
}));
return Promise.all([
upsert('tags_posters', tagPosterEntries, 'tag_id', knex),
upsert('tags_photos', tagPhotoEntries, ['tag_id', 'media_id'], knex),
]);
});