traxxx/seeds/04_media.js

1057 lines
50 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const path = require('path');
const Promise = require('bluebird');
const sharp = require('sharp');
const upsert = require('../src/utils/upsert');
const sfw = Object.entries({
animals: [
['7WXfIIxVlNo', 'David Boca'],
['aMBhrrveocw', 'Ivan Diaz'],
['LTzbD8lj0kw', 'Lionel HESRY'],
['t2I1PTZEx4E', 'Mohamed Nanabhai'],
['0S1qMPpHbkE', 'Thomas Giotopoulos'],
['UnLcVKt7d7I', 'Fernando @cferdo'],
['reXwAuEdkVM', 'Ryan Al Bishri'],
['Hq5N_iPRkOs', 'Axel Holen'],
['GtXsMqOR3ik', 'Sophie Dale'],
['FYJNmIQk7JA', 'Anastasiya Romanova'],
['pQmu6_4VDaI', 'joel herzog'],
['j0iiByCxGfA', 'Jordan Opel'],
['67rtZAf_Jgw', 'Sean Thoman'],
['2puB0ahKDag', 'K. Mitch Hodge'],
['AM9ZtoUss68', 'Erica Nilsson'],
['7r58deUCN4Q', 'Zuriela Benitez'],
['PQJN_Po0O1U', 'Quaid Lagan'],
['rCkstBJusv4', 'Martin Woortman'],
['Tj4lLm49hhM', 'Saketh Upadhya'],
['SjtR_cCEh0w', 'Patti Black'],
['hmn3ZiTDep4', 'Portuguese Gravity'],
['ZC3LibyQxZQ', 'Narges Pms'],
['l-OYOwN2gpQ', 'Pablo Guerrero'],
['E8LxrpUjW7Q', 'Tamara Bellis'],
['xYVRzube0iM', 'Ricardo Braham'],
['7AzUTGOBeJI', 'Adam Thomas'],
['9Ha6VNNsKAA', 'Thomas Evans'],
['GNvCMZzljr0', 'Hari Nandakumar'],
['51u3WqwzXnQ', 'Grace Evans'],
['X8Sck0T0y8s', 'Mélody P'],
],
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'],
],
dogs: [
['f7-aL0xQd6A', 'Mark Galer'],
['kOI1RlSGsfo', 'Mark Zamora'],
['7c8z4KEvgds', 'William Daigneault'],
['oWrZoAVOBS0', 'William Daigneault'],
['xwpF_Hts7jA', 'Carolinie Cavalli'],
['72mXoMwCoq4', 'Yuki Dog'],
['7EKROB9iGFc', 'Yuki Dog'],
['cX-KEISwDIw', 'Cole Keister'],
['6v-lTFEoO6E', 'Camilo Fierro'],
['1-sM8xqPFTM', 'Dimitri Bong'],
['uTRtIcwkbGM', 'Lenin Estrada'],
['dpn6K9e1vzY', 'Evan Clark'],
['M8AKGLnbi90', 'Tatiana Rodriguez'],
['sxGJv1SUlew', 'Jon Tyson'],
['pT9TTuuzivQ', 'William Daigneault'],
['KKNxCHLesGc', 'Julio Arcadio Santamaría Reyes'],
['e_Du6fAT5dI', 'Thomas Fryatt'],
['1IqHMmYaQJE', 'Mitchell Orr'],
['BHh-jKrTIoU', 'NICOLAS TESSARI'],
['l6GlfPH-8y4', 'Tatiana Rodriguez'],
['d7TLLuiwm_c', 'Brett Jordan'],
['I_PBuIa3Bm8', 'Karl Bewick'],
['d2hWXEV8J-8', 'Harrison Kugler'],
['AhKXmqa_7yU', 'Yuki Dog'],
['aH79Nc7Npas', 'Irene Garcia'],
['v3-zcCWMjgM', 'James Barker'],
],
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'],
['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: [
['1ZTccDpF71k', 'Austin Paquette'],
['4-rmvQRL2nY', 'Annie Spratt'],
['44eKcVXzFoc', 'Alonso Romero'],
['4E0dknSrQVU', 'Matteo Maretto'],
['4PtChDuxsDI', 'Dronile Hiraldo'],
['8JIIoSFtEbo', 'Massimo Virgilio'],
['8Yvwy4Kbd1g', 'Alex Kondratiev'],
['9TWavGempJc', 'Ashleigh Robertson'],
['9cfHdC2Asak', 'cindy fernandez'],
['9vHOhKoNlNw', 'Edrece Stansberry'],
['Au-LzDMd_Cw', 'Stephanie McCabe'],
['BKSntHf8oiU', 'Melissa Walker Horn'],
['DPNrBT1WCMs', 'Egor Lyfar'],
['Hvrm3efPYIA', 'Delaney Van'],
['I2tgHl69Dco', 'Louis Hansel @shotsoflouis'],
['JpbtAb-f3JA', 'Dollar Gill'],
['Mi1SNlsyWAk', 'Louis Hansel @shotsoflouis'],
['U3hCd1S7FQ4', 'Louis Hansel @shotsoflouis'],
['VOpJTnP6S9g', 'Liana Mikah'],
['VpxavZd4S-I', 'Mr. Lemon'],
['XPSXhLx143g', 'Wouter Meijering'],
['Yy-dHQP-Ax0', 'Markus Spiske'],
['asaGSZEyltQ', 'Noora AlHammadi'],
['fCE-pTmFrPI', 'Valeriu Bondarenco'],
['fyQr1T3GE34', 'Petr Sevcovic'],
['gZsgKrNc8es', 'Dan Gold'],
['krNP2ESq-54', 'Joshua Bedford'],
['nn0whk6nzv4', 'Yulia Chinato'],
['pGe5mc4Eip8', 'Daniel Park'],
['uScYRjZ2ol8', 'Donald Modeste'],
],
candy: [
['51AhxwkYyHo', 'Viktor Forgacs'],
['rS1GogPLVHk', 'Eaters Collective'],
['9m6NQHyxk-s', 'Brooke Lark'],
['DOmaKmeCp_8', 'Sarah Takforyan'],
['aCPOKOb4qis', 'Jamie Street'],
['On8Ov1TItnU', 'QooQee'],
['KN7tpVQCmWA', 'Nick Fewings'],
['9lmFbtJ2QzM', 'Tim Gouw'],
['54hUU5pNSvo', 'Erol Ahmed'],
['zYH4SubXCWY', 'Наталья Горох'],
['wJHJY7PcDcg', 'Andrew Itaga'],
['BnusUP5jydc', 'Marc Markstein'],
['NI_fJ15rIfI', 'Szabo Viktor'],
['LymVMRIUwPQ', 'Happy Films'],
['mrNVnLEphdo', 'Greg Nunes'],
['CKLF34baCTQ', 'Willian Justen de Vasconcellos'],
['7uGCN9qshsY', 'Siora Photography'],
['xBTnaTgleQE', 'Glen Carrie'],
['sC_HExGwbhI', 'Erik Mclean'],
['1gViVVlEaPc', 'Sérgio André'],
['k9yY0XZTSnI', 'Fernando Hernandez'],
['h1_R9-o9an0', 'emrecan arık'],
['XB0ha-DSGoU', 'Laura Briedis'],
['ONn4OfAnxZY', 'Monique Carrati'],
['24p9dPeXdFA', 'Frederic Köberl'],
['GL6J_sFYHLw', 'Yuiizaa September'],
['LU_fCezP9-o', 'Amit Lahav'],
['CSkAj_XqOVc', 'Mockaroon'],
['xLvIcAYuuMQ', 'Luis Aguila'],
],
fruit: [
['ZLc9yTIFzNk', 'Kelly Sikkema'],
['DoxGtpAsdYY', 'Sanni Sahil'],
['lyEkpuuIrg0', 'kaouther djouada'],
['fDx4zHpnlOM', 'Nanxi wei'],
['0AXNt5SdeXU', 'Sara Cervera'],
['s05XKB6jK2c', 'Markus Spiske'],
['bPMyJzKhCyA', 'Louis Hansel @shotsoflouis'],
['4jeWN4puDrw', 'Carolyn Leber'],
['8EScigZC6AU', 'MF Evelyn'],
['1QbosWMxOx0', 'elCarito'],
['NWA3s8r-1bc', 'Fli Hi'],
['TfNUmbaIjj8', 'Sophie Dale'],
['duskNBVv420', 'Louis Hansel @shotsoflouis'],
['QYupKZjYDbw', 'Moritz Kindler'],
['ozcHSq3XfVs', 'Callum Blacoe'],
['ucY_-U1dM8U', 'Louis Hansel @shotsoflouis'],
['4WLc_dWE-kc', 'Dmitry Mishin'],
['BTqDasyX62E', 'Priscilla Du Preez'],
['SD5dOSkhQdU', 'Alexander Mils'],
['4pJekgmSmPM', 'Rinck Content Studio'],
['0XGWys_GaFo', 'Toa Heftiba'],
['uTZvsJsylYc', 'Louis Hansel @shotsoflouis'],
['vAHaYh5s_Sc', 'RAPHAEL MAKSIAN'],
['0N4A1c5tJSs', 'Miguel Vaz'],
['VAhUq30sW0c', 'Cody Berg'],
['qbO7Mlhq8PQ', 'JOSHUA COLEMAN'],
['dLB32q_bRs0', 'Jason Leung'],
['66itnKdGlC4', 'Fateme Azimi'],
['_DYRZHbCIq0', 'Will Mcmahon'],
],
landscapes: [
['FuaNmJPLAHg', 'MINSUN KIM'],
['8flZ753v87Q', 'Ken Schlabach'],
['6qdO_nFhYoI', 'Clay Banks'],
['VMmPxFmfwfQ', 'Xiaopeng Ma'],
['DAufF3R8B5Q', 'Sangga Rima Roman Selia'],
['5U9n9gip7VY', 'Annie Spratt'],
['Tot7FLHWotI', 'elCarito'],
['vph4L_OjhuI', 'Marek Piwnicki'],
['Nd8h38tRIlc', 'Kevin Horvat'],
['nACRxCEAut8', 'ALEKSEY KUPRIKOV'],
['PjyfZ-Ujut8', 'Denys Nevozhai'],
['X6utHocVX8w', 'Ian Williams'],
['cq6g1WssaJI', 'Tyler Casey'],
['U1ad7OjdHx8', 'Dave Herring'],
['si5673B4PIE', 'Annie Spratt'],
['shv8H0Dv5iE', 'Aditya Chinchure'],
['hjVrWFVyOqE', 'chuttersnap'],
['_skrrHIcsEk', 'Edward Ma'],
['GMNtcgo-KdA', 'Yoav Hornung'],
['313dueuxHls', 'Jamie Street'],
['SncOlKOY7NY', 'Ward Mercer'],
['7R11NCmOY6k', 'Ivan Bandura'],
['YFwOiSisSLM', 'Krzysztof Kotkowicz'],
['gbO7zCOUJIg', 'Brian Kyed'],
['5iwG4xlUgJ4', 'Jason Leung'],
['G_PSim-dsvU', 'Alexandra Jitariuc'],
['gVl6Hsi_pxo', 'Jean-Philippe Delberghe'],
['p8h0_0pyW9k', 'Bence Balla-Schottner'],
],
waterfalls: [
['Cwd0zYOIClY', 'Thomas Ensley'],
['dGCHAo7mb2Q', 'Jamie Melville'],
['bukitR21NO8', 'Jen Theodore'],
['IKIY5bpd9eM', 'Bruno Kelzer'],
['rrVm3b-uxkk', 'Jamie Melville'],
['UegnUIW76gQ', 'Jamie Melville'],
['d0cvao4fC6Q', 'Forest Simon'],
['N8r2hH1siEY', 'Lester Hine'],
['oRmeWoJx_nY', 'Michael Olsen'],
['jVjwlfyJAkA', 'Tom Wheatley'],
['ar6PYxBFgis', 'Gerald Berliner'],
['9fpK7fPw6Is', 'Jamie Melville'],
['jeXkw2HR1SU', 'Julia Caesar'],
['Evs5MnlmUXY', 'Damian Kamp'],
['phstcH4QKJc', 'Jakob Owens'],
['7dmDlBfB9Vk', 'Spencer Watson'],
['SHhaNnNR1xo', 'SaiKrishna Saketh'],
['_6ghImrDiVU', 'Daniel H. Tong'],
['gfaXzDmMY7M', 'RADIN AHMAD MUJAHID'],
['rFbK1PP9LEA', 'Daniel Hernandez'],
['s6Tv7b4SAoo', 'Miltiadis Fragkidis'],
['ir9RUDjVpPo', 'Clay Banks'],
['7emiteIwfuk', 'yunchuan luo'],
['9tqrKo4B98I', 'Austin Farrington'],
['dfazzUCjMro', 'oakie'],
['4HEuHmA7WfM', 'Ketan Morris'],
['eG1_rPekhTk', 'Jack B'],
['_up7EDGdTqU', 'Hari Nandakumar'],
['MhIPEJmVwaA', 'Karthik Chandran'],
],
travel: [
['gC2Q_Tfub6c', 'James Lee'],
['1Tcu61Qz7c0', 'Payas'],
['eLMJ2x7s9ak', 'Alexandre Chambon'],
['aNrRsB2wLDk', 'Ahmet Yalçınkaya'],
['xu2WYJek5AI', 'Anastasia Petrova'],
['xRoexKKv8fs', 'Robson Hatsukami Morgan'],
['qdIer4A0afE', 'Camille Brodard'],
['0lPZBa6-1J8', 'Torbjorn Sandbakk'],
['CLm3pWXrS9Q', 'Tim Trad'],
['D1fs2x11_jk', 'Raul Taciu'],
['BZ3aE3ouAfc', 'Petr Sevcovic'],
['_OUvt8kLf0s', 'GAWN AUSTRALIA'],
['T_6yJJQ_-wA', 'Square Lab'],
['1Z_mX3zzEBc', 'Andy Pearce'],
['lWHJwoSZf7M', 'Joseph Costa'],
['O6Euhw7NMbQ', 'Cosmic Timetraveler'],
['bs1eqd6zSiU', 'Harley-Davidson'],
['_qkuc1V9Gbg', 'Ken Cheung'],
],
cars: [
['w5SZe8hoqlk', 'Rachel Lynette French'],
['Nwk0ye_Y_As', 'Lex Valishvili'],
['P9yqMy_9ZaY', 'Anastasia Dulgier'],
['aGwBtbncMWo', 'Sandra Kaas'],
['jV_QaRjbhWE', 'Clem Onojeghuo'],
['SwmaJDvasuU', 'Gunnar Ridderström'],
['BsJovWrQ7vE', 'Caroline'],
['3t0Q-GYXE0U', 'Austin Park'],
['tlCzxI2RQAc', 'Vinícius Henrique'],
['fecFQcxsUok', 'Zachary Spears'],
['upttrzCo8-U', 'takahiro taguchi'],
['zoHustBfNxA', 'Lukas Werner'],
['UZH69YA50qY', 'Austin Park'],
['tJwY80NMkhk', 'Hanny Naibaho'],
['esfNTaHsR1c', 'Willian Justen de Vasconcellos'],
['Tas1kF-6aNA', 'Tyler Casey'],
['7nrsVjvALnA', 'Denys Nevozhai'],
['CRf3KYexpCA', 'Will Truettner'],
['B8JpogxOnyw', 'Mike Von'],
['mU5vnpJW_CQ', 'Luke Tanis'],
['GaRPxo9Z86M', 'Court Cook'],
['Orp-VAQ_gNA', 'Angello Lopez'],
['q4UZ53rYYy0', 'Ali Moharami'],
['XA2OEcvrrP8', 'Alexander Pidgeon'],
['hXMv04v_py0', 'Patrick Schöpflin'],
['G7sWGEF8pRc', 'Julian Hochgesang'],
['PUnARRf-rE8', 'jean wimmerlin'],
['UIk-rF4Df60', 'Igor Bumba'],
['0dW-eQVL0WQ', 'Michael Heuser'],
],
aviation: [
['bw1hXT_okL4', 'sayhitobel'],
['ecOXN5jGtaU', 'Alexander Lobanov'],
['rFujmwrNv1w', 'Abe Drzycimski'],
['EKYsla2fER8', 'Paola Aguilar'],
['1uiXp6fXd3w', 'Kevin Hackert'],
['tVzGTraJ4T0', 'Samantha Gades'],
['5h1-cHxJz1I', 'Nikli Nodin'],
['u-1cYIua_aI', 'John Torcasio'],
['l2OusPPMLxs', 'yvette Wynne'],
['SUIvWFHBZas', 'Timothy Newman'],
['Tvrnezn1N6g', 'Daniel Eledut'],
['ZN0469D3v98', 'Jason Hafso'],
['LNmKCmZ2pcI', 'Ricardo Resende'],
['P_ExwnnPGyM', 'Tudose Alexandru'],
['1vyWYdyUDGU', 'Ian Cumming'],
['k102QVrpitQ', 'Jake Blucker'],
['eB8-XtMtqZI', 'Miguel Ángel Sanz'],
['1XDZavWyows', 'Samuel Sianipar'],
['7WHD-pdECGU', 'Miguel Ángel Sanz'],
['CN8HsCUCjUQ', 'Cameron Kitson'],
['q_rNy9pRe78', 'Walter Walraven'],
['a9SA6Zs1L9g', 'Tim Dennert'],
['JW50PRr5UbI', 'Roland O'],
['um_6nrOnPZ4', 'Pascal Meier'],
['EpxT58kpBhc', 'Terence Burke'],
['3fbjHj2k0vE', 'Dušan Smetana'],
['9o4p3eCcRBE', 'Jeremy Bishop'],
['sbfLwfoVX7E', 'Nour Betar'],
['4VCJBAtlnNI', 'sippakorn yamkasikorn'],
['LcbsrFbqwGk', 'Angel Barnes'],
],
nature: [
['io0umElGQwU', 'Fabrizio Forte'],
['lh2sQ_L3GaA', 'Daniel Lord'],
['Gyr7o3BMsSc', 'Dave Francis'],
['lRipDukRpd4', 'Kevin'],
['GxymWkdnl4Y', 'Fernando Jorge'],
['rWnw7JL0LPE', 'Rahul Gupta'],
['YKuYS3ChMyw', 'Yuliya Kosolapova'],
['ZsUjLYqbNz8', 'Pau Morfín'],
['x2o3HX6RKG8', 'Dave'],
['Few073pm6aQ', 'Dennis Bertuch'],
['jP-wvLA7uyg', 'Gary Butterfield'],
['euhs3wanL-I', 'Andrew Stapleton'],
['UHt2TG_CHO0', 'Wolfgang Hasselmann'],
['SAIb5NkbAaE', 'Alexis Gethin'],
['tdNjdIW-_OY', 'Lachlan'],
['0NtjFr0-DwM', 'Jane Carmona'],
['fhg_nm1sufU', 'Pascal Debrunner'],
['HJUDECvtxZE', 'jose alfonso sierra'],
['8vS1CwHIEH8', 'Serge Sustavov'],
['oTTnZcwQ2t4', 'Daniel Radford'],
['TNhs9udas8Q', 'Migsar Navarro'],
['zT9g3crTPcE', 'Devin L'],
['hYuNG1zptM4', 'Roberto Gamito'],
['DfOQRep1LKU', 'Wolfgang Rottmann'],
['2sT_iJhIcEg', 'Anamika Pokharel'],
['Zjcl2vaeGdo', 'Lucas Mitchell'],
['b2T6zgFAW1E', 'Theme Inn'],
['EnFQmcTtsjo', 'Yang Jing'],
['PWI-CDVynhw', 'Thomas Galler'],
['gTvLsDi-Uzo', 'Arun Raj'],
],
trees: [
['aSCx7M1E4Vo', 'Markos Mant'],
['3B9MYDjQ-EQ', 'Firasat Durrani'],
['39oaRqfUacc', 'Nick'],
['Y0NLa_KmEgU', 'Michael Ankes'],
['i6nGVkbbUT4', 'Henry McIntosh'],
['_WITb4g1ImY', 'Mark Basarab'],
['prd5CXMsD68', 'JOHN TOWNER'],
['avxSevmCKfw', 'Marta Pawlik'],
['LZf0HMPg-3I', 'Max Brinton'],
['Ovjx9FsXX9c', 'Andy Fitzsimon'],
['YPtfMXRMUe0', 'Corey Agopian'],
['h3y3XPXKoeY', 'Elke Karin Lugert'],
['qeGC1zrsG8U', 'Tycho Atsma'],
['dAkd3xaSDTA', 'Nick West'],
['Prd-KB7CKo4', 'Austin Neill'],
['klNpWLkgezo', 'Wil Stewart'],
['Pm4U5IqI4dM', 'Lena Derevianko'],
['5i664o1oY4c', 'Yannick Pulver'],
['uoMFPm5_Xg8', 'Yoni Kozminsi'],
['Qr2dZRNdf_M', 'Afifi Zulkifle'],
['jxljuYqn8uU', 'Sebastian Pichler'],
['H3mO3zNlvNU', 'Jonathan Knepper'],
['pEb-Xf_qM0s', 'Martin Reisch'],
['prSogOoFmkw', 'Braden Jarvis'],
['y9csmronT3s', 'Alberto Restifo'],
['R8R9H_xuvBY', 'Andrew Pons'],
['fuT-m1yzUG4', 'Ales Krivec'],
],
wildlife: [
['-I0EgcZdV0E', 'Maarten van den Heuvel'],
['F21zt7_icpo', 'Tevin Trinh'],
['gMxgp-MwCyQ', 'James Wainscoat'],
['FFlb5Uj3vhc', 'Sigmund'],
['hglSMjdh83M', 'Srinivasan Venkataraman'],
['UgWcvfl4q5I', 'NOAA'],
['PZ1nEPFNBJQ', 'Third Idea'],
['f4yYs5P5GbA', 'rigel'],
['e94T5ag-9x0', 'Jayden Brand'],
['6Fcllk7ze_Q', 'Vivian Arcidiacono'],
['O7G3II8E2Eo', 'Erik-Jan Leusink'],
['-6UNL6Ghn_c', 'Silvio Kundt'],
['EyZMGYn1Uj4', 'AGL Fotos'],
['nxR7gvSokH8', 'Waldemar Brandt'],
['sAGXVK6bNFc', 'Amar Yashlaha'],
['8zLCXDWETEg', 'Clément ROY'],
['4nPFQ2sUhUE', 'Justin Porter'],
['mUNDTQrfnSk', 'Zahrin Lukman'],
['VXcX0Joa09k', 'Max Rovensky'],
['F_HycxA2lwc', 'Marthijn Brinks'],
['ss01halnU4I', 'Dušan Smetana'],
['lktWv61WoNI', 'Rory Lindholm'],
['myeQ2RH1PX0', 'Alexander Ross'],
['dhIAyAmfjz8', 'Third Idea'],
['AGprQpF4STo', 'Jeff Lemond'],
['P8pBJQVt4UA', 'Christer Gundersen'],
['nt8Ek7sRgdA', 'Mikell Darling'],
['YHv0BDThVOw', 'Nicholas Doherty'],
],
interior: [
['9wGKENQ-qTI', 'Kunj Parekh'],
['x3BCSWCAtrY', 'yann maignan'],
['EF6z_6R94zQ', 'Orlova Maria'],
['dC8NC2QBFyQ', 'Kari Shea'],
['A_AuirVquQY', 'Abbie Bernet'],
['IJf2v-StB4Y', 'yann maignan'],
['frsN89Tf-1Q', 'Joshua Eckstein'],
['s95oB2n9jng', 'Aaron Huber'],
['n_vdmdtNh6M', 'Tiplada Mekvisan'],
['GbiVL6t4T-o', 'gdtography'],
['xx0oSB1YxRE', 'Joseph Albanese'],
['McaNtoPEEcg', 'Brooke Cagle'],
['s65VlkIYSDw', 'Robert Bye'],
['pEaBEqXXk-M', 'Aw Creative'],
['GaX7QTgs8pg', 'Waldemar Brandt'],
['b75FBg97dU0', 'Bao Menglong'],
['5i0GnoTTjSE', 'Philipp Berndt'],
['buhmhprfo3g', 'Kara Eads'],
['L7EwHkq1B2s', 'Kara Eads'],
['gBdirnalxcQ', 'Nick Fewings'],
['ILgaxpiQu0', 'Matteo Maretto'],
['ydcMwcfY5E0', 'Clark Street Mercantile'],
['zLT3VqWEgOQ', 'Sidekix Media'],
['Yg0Rds6_TsY', 'Sergiu Cindea'],
['gbS_fhrFo10', 'Bekah Russom'],
['o3c-euNd_ZM', 'Alessandra Caretto'],
['IEkMMvdZFc0', 'Nick Hillier'],
['hnhE83RhAWg', 'Stefan Steinbauer'],
],
statues: [
['ig8E7Mlrl7Y', 'Vidar Nordli-Mathisen'],
['1ak3Z7ZmtQA', 'Ryan Lum'],
['ntPF02wcTY', 'Gigi'],
['5_i4OPeOAZU', 'Viktor Forgacs'],
['iRON0g6iO0k', 'Alexandre Chambon'],
['PhQ4CpXLEX4', 'Daniels Joffe'],
['EfHqouvZU2Y', 'Bettina Otott Kovács'],
['kaEhf0eZme8', 'Nils'],
['4-4IDc21Gto', 'K. Mitch Hodge'],
['Y8Xh7ZJFU5A', 'Vidar Nordli-Mathisen'],
['fmawALmMLSA', 'Gabriel TRESCH'],
['DUp4B6M0AMc', 'Sebastien'],
['MFZUY4gqvA4', 'James Yarema'],
['50vvwcNFFzU', 'Robert Anasch'],
['TMRi8cD2umM', 'Frank Eiffert'],
['wLx_WCkWvHg', 'Chris A. Tweten'],
['Twoj21Av-so', 'Arthur Reeder'],
['EiGDn8cwU4Y', 'Tessa Rampersad'],
['fVY6UxZuECA', 'Christine Wehrmeier'],
['uJdTBTJ9rbo', 'Christine Wehrmeier'],
['4eEBFTBKx5E', 'Ralph Spandl'],
['HtQRGemW_40', 'Ivan Bertona'],
['uHBcinxOLhQ', 'K. Mitch Hodge'],
['2TmsyZXMNTE', 'Emma Fabbri'],
['9KkPloRgOUY', 'Matteo Maretto'],
['KzPefInJW58', 'JOSHUA COLEMAN'],
['szVTIkisN1M', 'David Siglin'],
['iRzEPkYSETQ', 'Francois Olwage'],
],
technology: [
['QpTCSHzhWuo', 'Joshua Hoehne'],
['0lMpQaXfOCg', 'Barrett Ward'],
['w33-zg-dNL4', 'Rami Al-zayat'],
['MC5WbGo_bZM', 'Tom Pumford'],
['iHJ7xouUyXs', 'Amith Nair'],
['E3I9thV98kQ', 'Tatiana Lapina'],
['JuUK7Er9nR4', 'Mohamed Boumaiza'],
['Dei5oAC_wJc', 'Kenny Luo'],
['ltwEbf_G9bs', 'Mario Caruso'],
['gWdlDR4WpV4', 'Zarak Khan'],
['0Um6Yr1cyx0', 'Antoine Beauvillain'],
['_8S9nEmCZK0', 'Oliur'],
['etFrnBJS1qc', 'NeONBRAND'],
['ZMVtx_KJtOk', 'Thought Catalog'],
['JNuKyKXLh8U', 'Noiseporn'],
['5gzr-RM-rZM', 'Kenny Luo'],
['eWaXmZsXKDs', 'Zane Lee'],
['4qGbMEZb56c', 'Thomas William'],
['hwqWxHoH2wk', 'Markus Spiske'],
['vZJdYl5JVXY', 'Kaitlyn Baker'],
['Lg8xTZjs6Lg', 'Marc Mueller'],
['M5HQPjXrjlQ', 'Matt Hoffman'],
['A-b37b-CrYE', 'Kenny Luo'],
['Kj2SaNHG-hg', 'Christopher Burns'],
['A1v0-iH3T5A', 'Patrick Hendry'],
['iFBIdX54BOk', 'Keagan Henman'],
],
})
.map(([category, photos]) => photos.map(([photo, credit], index) => ({
id: photo,
path: `sfw/${category}/${photo}.jpeg`,
thumbnail: `sfw/${category}/thumbs/${photo}.jpeg`,
lazy: `sfw/${category}/lazy/${photo}.jpeg`,
mime: 'image/jpeg',
is_sfw: true,
sfw_media_id: null,
group: category,
index,
credit,
})))
.flat();
const tagMedia = [
['69', 1, 'Melody Petite'],
['69', 3, 'Anne Amari and Alina Lopez in "Hot Lesbian Seduction"', 'lesbianx'],
['69', 0, 'Abby Lee Brazil and Ramon Nomar', 'wicked'],
['69', 4, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'],
['69', 2, 'Abigail Mac and Kissa Sins in "Lesbian Anal Workout"', 'hardx'],
['airtight', 7, 'Lana Rhoades in "Gangbang Me 3"', 'hardx'],
['airtight', 6, 'Remy Lacroix in "Ass Worship 14"', 'julesjordan'],
['airtight', 11, 'Malena Nazionale in "Rocco\'s Perverted Secretaries 2: Italian Edition"', 'roccosiffredi'],
['airtight', 3, 'Anita Bellini in "Triple Dick Gangbang"', 'handsonhardcore'],
['airtight', 'venera_maxima_legalporno', 'Venera Maxima in LegalPorno SZ2645', 'legalporno'],
['airtight', 'mina_ddfnetwork', 'Remy Lacroix in "Ass Worship 14"', 'julesjordan'],
['airtight', 1, 'Jynx Maze in "Pump My Ass Full of Cum 3"', 'julesjordan'],
['airtight', 10, 'Asa Akira in "Asa Akira To The Limit"', 'julesjordan'],
['airtight', 8, 'Veronica Leal in SZ2520'],
['airtight', 5, 'Chloe Amour in "DP Masters 4"', 'julesjordan'],
['airtight', 9, 'Cindy Shine in GP1658'],
['anal', 5, 'Abella Danger', 'hardx'],
['anal', 'kira_noir_julesjordan', 'Kira Noir in "Kira Noir Opens Her Ass For Manuel"', 'julesjordan'],
['anal', 'jane_wilde_evilangel_2', 'Jane Wilde and Brock Cooper in "The Cock Hungry Chronicles"', 'evilangel'],
['anal', 0, 'Adriana Chechik in "Manuel Creampies Their Asses 3"', 'julesjordan'],
['anal', 'nikki_benz_bigwetbutts', 'Nikki Benz in "Pantyhose Playtime"', 'bigwetbutts'],
['anal', 7, 'Anastasia Brokelyn', 'bangbros'],
['anal', 'gia_derza_julesjordan', 'Gia Derza in "Manuel Opens Their Asses 8"', 'julesjordan'],
['anal', 6, 'Chloe Cherry in "Chloe\'s Big Anal"', 'darkx'],
['anal', 4, 'Lana Roy in "Anal In The Club"', '21naturals'],
['anal', 3, 'Dakota Skye', 'brazzers'],
['anal-creampie', 4, 'Chloe Cherry in "Chloe\'s Big Anal"', 'darkx'],
['anal-creampie', 2, 'Lana Rhoades in "Lana\'s Anal Workout"', 'hardx'],
['anal-creampie', 3, 'Rose Valerie', 'eurosexparties'],
['anal-creampie', 0, 'Gina Valentina and Jane Wilde in "A Very Special Anniversary"', 'tushy'],
['anal-creampie', 1, 'Aleska Diamond in "Aleska Wants More"', 'assholefever'],
['anal-fingering', 0, 'Marry Queen in "Queen of Assholes"', 'assholefever'],
['anal-fingering', 3, 'Rose Valerie', 'pornworld'],
['anal-fingering', 1, 'Cherry Kiss, Veronica Leal and Sybil in "Capture This"', 'lezcuties'],
['anal-fingering', 2, 'Aidra Fox and Cassidy Klein in "Lesbian Anal Yoga"', 'lesbianx'],
['anal-fisting', 1, 'Jane Wilde fisting Alexis Tae in "Jane Wilde is AGAPE"', 'evilangel'],
['asian', 0, 'Vina Sky', 'eroticax', 'eroticax'],
['ass-eating', 2, 'Tina Kay, Lexi Layo and Tiffany Tatum in "Ballerina Beauties"', 'lezcuties'],
['ass-eating', 5, 'Remy LaCroix and Abigail Mac', 'allgirlmassage'],
['ass-eating', 4, 'Vanna Bardot and Isiah Maxwell in "Vanna Craves Isiah\'s Cock!"', 'darkx'],
['ass-eating', 'jane_wilde_evilangel', 'Jane Wilde and Brock Cooper in "The Cock Hungry Chronicles"', 'evilangel'],
['ass-eating', 'zaawaadi_asia_rae_allblackx', 'Zaawaadi and Asia Rae in "All Black Threesome"', 'allblackx'],
['ass-eating', 1, 'Aidra Fox and Cassidy Klein in "Lesbian Anal Yoga"', 'lesbianx'],
['ass-eating', 0, 'Angelica Heart and Leanna Sweet in "ATM Bitches"', 'assholefever'],
['ass-eating', 3, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'],
['atm', 2, 'Jureka Del Mar in "Stretched Out"', 'herlimit'],
['atm', 'rebel_rhyder_analonly_1', 'Rebel Rhyder in "Advanced Anal With Rebel"', 'analonly'],
['atm', 3, 'Natasha Teen in "Work That Ass!"', 'herlimit'],
['atm', 7, 'Mandy Muse in "Mandy\'s Anal Amusement"', 'bigwettbutts'],
['atm', 0, 'Roxy Lips in "Under Her Coat"', '21naturals'],
['atm', 6, 'Jane Wilde in "Teen Anal"', 'evilangel'],
['atogm', 0, 'Alysa Gap and Logan in "Anal Buffet 4"', 'evilangel'],
['bdsm', 0, 'Dani Daniels in "The Traning of Dani Daniels, Day 2"', 'thetrainingofo'],
['black', 2, 'Nia Nacci', 'sweetheartvideo'],
['black', 1, 'Ana Foxxx in "DP Me 4"', 'hardx'],
['black', 'zaawaadi_asia_rae_allblackx', 'Zaawaadi and Asia Rae in "All Black Threesome"', 'allblackx'],
['blindfold', 0, 'Kylie Page in "Natural Blindfolded Beauties"', 'hustler'],
['blonde', 'marry_queen', 'Marry Queen'],
['blonde', 3, 'Kylie Page in "A Juicy Afternoon Delight"', 'newsensations'],
['blonde', 'shawna_lenee_sunrisekings', 'Shawna Lenee', 'sunrisekings'],
['blonde', 2, 'Isabelle Deltore', 'herlimit'],
['blowbang', 'ana_foxxx_hardx', 'Ana Foxxx in "Facialized Vol. 4"', 'hardx'],
['blowbang', 'monika_fox_legalporno', 'Monika Fox in GL479', 'legalporno'],
['blowbang', 0, 'Lacy Lennon in "Lacy Lennon\'s First Blowbang"', 'hardx'],
['blowbang', 'zaawaadi_roccosiffredi_1', 'Zaawaadi in "My Name Is Zaawaadi"', 'roccosiffredi'],
['blowbang', 'gina_gerson_assholefever', 'Gina Gerson in "Oppa Gangbang Style"', 'assholefever'],
['blowbang', 1, 'Nicole Black in GIO1680', 'legalporno'],
['blowjob', 'clanddi_jinkcego_ddfbusty_1', 'Clanddi Jinkcego', 'ddfbusty'],
['blowjob', 4, 'Chloe Cherry in "Chloe\'s Big Anal"', 'darkx'],
['blowjob', 1, 'Kylie Page in "Stepsis Gives Soapy Handjob In Shower"', 'spyfam'],
['blowjob', 'jane_wilde_evilangel', 'Jane Wilde and Brock Cooper in "The Cock Hungry Chronicles"', 'evilangel'],
['blowjob', 'cecilia_lion_wefuckblackgirls', 'Cecilia Lion in "Cecilia Lion\'s Second Appearance"', 'wefuckblackgirls'],
['blowjob', 0, 'Adriana Chechik in "The Dinner Party"', 'realwifestories'],
['blowjob', 5, 'Kaylynn', 'mommyblowsbest'],
['blowjob', 'azul_hermosa_realitykings', 'Azul Hermosa and Scott Nails in "Diva For A Day"', 'brazzers'],
['blowjob', 3, 'Rose Valie', 'handsonhardcore'],
['blowjob', 2, 'Luna Kitsuen in "Gag Reflex"', 'evilangel'],
['bondage', 0, 'Veronica Leal', 'herlimit'],
['brunette', 0, 'Darcie Dolce', 'playboy'],
['bts', '3b', 'Brenna Sparks', 'bangconfessions'],
['bts', 0, 'Janice Griffith in "Day With A Pornstar: Janice"', 'brazzers'],
['bts', 1, 'Madison Ivy in "Day With A Pornstar"', 'brazzers'],
['bts', 2, 'Christy Mack', 'digitalplayground'],
['bukkake', 0, 'Jaye Summers in "Facialized 5"', 'hardx'],
['bukkake', 'ana_foxxx_hardx', 'Ana Foxxx in "Facialized Vol. 4"', 'hardx'],
['bukkake', 'jasmine_byrne_julesjordan', 'Jasmine Byrne in "Flesh Hunter 10"', 'julesjordan'],
['bukkake', 'megan_rain_julesjordan', 'Megan Rain in "Slutty Teen In A 10 Cock Blowbang! It\'s RAINING Cum!"', 'julesjordan'],
['creampie', 1, 'Eveline Dellai', 'nubiles'],
['creampie', 3, 'Silvia Soprina in "Satisfaction"', '5kteens'],
['creampie', 2, 'Natasha Lapiedra in "New and Ready"', '5kporn'],
['creampie', 'poster', 'Alina Lopez in "Making Yourself Unforgettable"', 'blacked'],
['cum-drunk', 0, 'Ashly Anderson in "Rough Love"', 'hookuphotshot'],
['cum-in-mouth', 1, 'Sarah Vandella in "Blow Bang Vandella"', 'hardx'],
['cum-in-mouth', 3, 'Kira Noir', 'hardx'],
['cum-in-mouth', 5, 'Emma Hix in "A Big Dick"', 'darkx'],
['cum-in-mouth', 4, 'Vanna Bardot and Isiah Maxwell in "Vanna Craves Isiah\'s Cock!"', 'darkx'],
['cum-in-mouth', 2, 'Jaye Summers in "Double The Cum"', 'hardx'],
['cum-in-mouth', 'lara_frost_legalporno', 'Lara Frost in NRX059', 'legalporno'],
['cum-in-mouth', 0, 'Vina Sky and Avi Love', 'hardx'],
['cum-on-boobs', 1, 'Kylie Page in "Melt In Your Mouth"', 'twistyshard'],
['cum-on-boobs', 0, 'Alessandra Jane', 'private'],
['cum-on-boobs', 2, 'Blake Blossom in "Naturally Stacked Cutie"', 'hardx'],
['cum-on-butt', 'chloe_temple_macy_meadows_brattysis', 'Chloe Temple and Macy Meadows', 'brattysis'],
['cum-on-butt', 0, 'Jynx Maze in "Don\'t Make Me Beg 4"', 'evilangel'],
['cum-on-pussy', 0, 'Talinka A', 'sexart'],
['da-tp', 7, 'Polly Petrova in YE069', 'legalporno'],
['da-tp', 5, 'Venera Maxima in GIO1287'],
['da-tp', 6, 'Adriana Chechik in "Gangbang Me"', 'hardx'],
['da-tp', 0, 'Natasha Teen in SZ2164'],
['da-tp', 1, 'Francys Belle in SZ1702', 'legalporno'],
['dap', 7, 'Adriana Chechik in "DP Masters 6"', 'julesjordan'],
['dap', 10, 'Kira Noir', 'hardx'],
['dap', 'emily_pink_legalporno', 'Emily Pink', 'legalporno'],
['dap', 9, 'Vicky Sol in GIO1547', 'legalporno'],
['dap', 'cherry_kiss_roccosiffredi', 'Cherry Kiss in "My Name Is Zaawaadi"', 'roccosiffredi'],
['dap', 6, 'Sheena Shaw in "Ass Worship 14"', 'julesjordan'],
['dap', 2, 'Lana Rhoades in "Lana Rhoades Unleashed"', 'hardx'],
['dap', 11, 'Haley Reed in "Young Hot Ass"', 'evilangel'],
['dap', 1, 'Ria Sunn in SZ1801', 'legalporno'],
['dap', 5, 'Riley Reid in "The Gangbang of Riley Reid"', 'julesjordan'],
['dap', 0, 'Nicole Black doing double anal during a gangbang in GIO971', 'legalporno'],
['deepthroat', 2, 'Sarah Vandella', 'throated'],
['deepthroat', 3, 'Kira Noir in "Ebony Throat Vs Monster Cock"', 'throated'],
['deepthroat', 'cathy_heaven_brazzers', 'Cathy Heaven in " 7 Minutes in Mrs. Heaven"', 'brazzers'],
['deepthroat', 4, 'Tammy', 'youngthroats'],
['deepthroat', 1, 'Jynx Maze in "Slutty and Sluttier 13"', 'evilangel'],
['deepthroat', 0, 'Chanel Grey in "Deepthroating Is Fun"', 'throated'],
['doggy-style', 'jane_wilde_evilangel', 'Jane Wilde and Brock Cooper in "The Cock Hungry Chronicles"', 'evilangel'],
['double-blowjob', 1, 'Veronica Rodriguez and Penny Pax in "Fucking Older Guys 5"', 'penthouse'],
['double-blowjob', 0, 'Kira Noir and Kali Roses', 'brazzers'],
['double-blowjob', 'zaawaadi_asia_rae_allblackx', 'Zaawaadi and Asia Rae in "All Black Threesome"', 'allblackx'],
['double-dildo', 3, 'Kelly and Leona in "Sleeping Over"', 'lezcuties'],
['double-dildo', 1, 'Indigo Vanity and Kendall Woods in "My White Stepdad: Part 3"', 'digitalplayground'],
['double-dildo', 9, 'Anissa Kate and Zafira in "Lesbians Play With Double Dong All Day Long"', 'pornworld'],
['double-dildo', 2, 'Jasmine Webb and Aria Alexander in "Homeless Horny"', 'digitalplayground'],
['double-dildo', 7, 'Gina Gerson and Anastasia Brokelyn in "One Double Sided Dildo, Two Cuties"', 'pornworld'],
['double-dildo', 0, 'Kali Roses in "Double Dildo Party"'],
['double-dildo', 4, 'Claudia Macc and Victoria Pure', 'eurogirlsongirls'],
['double-dildo', 8, 'Harmony Wonder, Katie Kush and Jewelz Blu in "Pick Your Pleasure"', 'realitykings'],
['double-dildo', 5, 'Kimber Woods and Mandy Muse in "Big Oiled Asses"', 'naughtyamerica'],
['double-dildo', 6, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'],
['double-dildo-anal', 0, 'Vina Sky and Kenzie Reeves in "Vina Sky\'s 1st Lesbian Anal"', 'hardx'],
['double-dildo-anal', 1, 'Sammie Rhodes and Ainsley Addision in "Tickle Me Pink"', 'welivetogether'],
['double-dildo-anal', 6, 'Anikka Albrite, Jenna Sativa and Tori Black in "Tori Black\'s Lesbian Gangbang"', 'lesbianx'],
['double-dildo-anal', 2, 'Adria Rae and Megan Rain in "Best Friends Anal"', 'holed'],
['double-dildo-anal', 9, 'Veronica Leal, Cherry Kiss and Sybil in "Capture This"', 'lezcuties'],
['double-dildo-anal', 7, 'Alysa and Wildeassholeslut in "Anal Buffet 5"', 'evilangel'],
['double-dildo-anal', 8, 'Tina Kay, Lexi Layo and Tiffany Tatum in "Ballerina Beauties"', 'lezcuties'],
['double-dildo-anal', 3, 'Amber Rayne, Phoenix Marie and Roxy Raye in "Deep Anal Abyss 4"', 'evilangel'],
['double-dildo-anal', 5, 'Jenna Sativa and Tara Morgan in "Little Black Book"', 'digitalplayground'],
['double-dildo-anal', 4, 'Ashley Fires, Sammie Rhodes and Kiara Diane in "Real Romance"', 'realitykings'],
['double-dildo-blowjob', 0, 'Adriana Chechik and Vicki Chase in "Anal Savages"', 'julesjordan'],
['double-dildo-blowjob', 6, 'Indigo Vanity and Kendall Woods in "My White Stepdad: Part 3"', 'digitalplayground'],
['double-dildo-blowjob', 8, 'Morgan Lee and Reena Sky in "Power Play"', 'brazzers'],
['double-dildo-blowjob', 11, 'Anissa Kate and Zafira in "Lesbians Play With Double Dong All Day Long"', 'pornworld'],
['double-dildo-blowjob', 1, 'Aidra Fox and Reena Sky in "Reena\'s Got A Staring Problem"', 'brazzers'],
['double-dildo-blowjob', 7, 'Jasmine Webb and Aria Alexander in "Homeless Horny"', 'digitalplayground'],
['double-dildo-blowjob', 9, 'Kimber Woods and Mandy Muse in "Big Oiled Asses"', 'naughtyamerica'],
['double-dildo-blowjob', 10, 'Kiki Daire and Brittany', 'kenmarcus'],
['double-dildo-blowjob', 3, 'Angela White and Madison Ivy in "Sunbathing Babes"', 'brazzers'],
['double-dildo-blowjob', 4, 'Bonnie Rotten and Gina Valentina in "Scared Un-Straight"', 'brazzers'],
['double-dildo-blowjob', 5, 'Jenna Ivory and Layla Price in "A First Time"', 'brazzers'],
['double-dildo-blowjob', 2, 'Giselle Palmer and Romi Rain in "Punishable Behavior"', 'brazzers'],
['double-dildo-dp', 2, 'Jenna Ivory and Layla Price in "A First Time"', 'brazzers'],
['double-dildo-dp', 0, 'u/LacyCrow "Sometimes you have to do it yourself"'],
['double-dildo-dp', 1, 'Brooklyn Chase and Ana Foxxx', 'zebragirls'],
['double-dildo-kiss', 0, 'Giselle Palmer and Romi Rain in "Punishable Behavior"', 'brazzers'],
['double-dildo-kiss', 1, 'Bonnie Rotten and Gina Valentina in "Scared Un-Straight"', 'brazzers'],
['double-dildo-kiss', 3, 'Kiki Daire and Brittany', 'kenmarcus'],
['double-dildo-kiss', 2, 'Adriana Chechik and Vicki Chase in "Anal Savages"', 'julesjordan'],
['dp', 3, 'Hime Marie in AA047', 'legalporno'],
['dp', 2, 'Megan Rain in "DP Masters 4"', 'julesjordan'],
['dp', 6, 'Kira Noir', 'hardx'],
['dp', 'lara_frost_legalporno', 'Lara Frost in NRX070', 'legalporno'],
['dp', 5, 'Lana Rhoades in "Gangbang Me 3"', 'hardx'],
['dp', 'zaawaadi_roccosiffredi', 'Zaawaadi in "My Name Is Zaawaadi"', 'roccosiffredi'],
['dp', 7, 'Chloe Lamour in "DP Masters 7"', 'julesjordan'],
['dp', 'poster', 'Mia Malkova in "DP Me 8"', 'hardx'],
['dp', 4, 'Rebecca Volpetti', 'handsonhardcore'],
['dvp', 'poster', 'Riley Reid in "Pizza That Ass"', 'reidmylips'],
['dvp', 0, 'Aaliyah Hadid in "Squirting From Double Penetration With Anal"', 'bangbros'],
['dv-tp', 'poster', 'Juelz Ventura in "Gangbanged 5"', 'elegantangel'],
['dv-tp', 1, 'Adriana Chechik in "Adriana\'s Triple Anal Penetration!"'],
['dv-tp', 0, 'Luna Rival in SZ1490'],
['facefucking', 5, 'Mia Moore B', 'throated'],
['facefucking', 6, 'Halle Hayes in "Towering Temptress"', '5kporn'],
['facefucking', 'adria_rae_throated', 'Adria Rae in "Adria Rae Sucks Cock All Day"', 'throated'],
['facefucking', 'cathy_heaven_roccosiffredi', 'Cathy Heaven', 'roccosiffredi'],
['facefucking', 1, 'Paige Owens in "Dark Meat 12"', 'evilangel'],
['facefucking', 7, 'Anya Olsen and Audrey Snow in "Babysitter Busted Giving A BJ"', 'mommyblowsbest'],
['facefucking', 0, 'Ashly Anderson in "Rough Love"', 'hookuphotshot'],
['facefucking', 2, 'Jynx Maze', 'throated'],
['facefucking', 4, 'Brooklyn Gray in "Throats Fucks 6"', 'evilangel'],
['facefucking', 3, 'Adriana Chechik in "Performing Magic Butt Tricks With Jules Jordan. What Will Disappear In Her Ass?"', 'julesjordan'],
['facial', 0, 'Brooklyn Gray in "All About Ass 4"', 'evilangel'],
['facial', 3, 'Paige Owens in "Oral Restraint"', 'babes'],
['facial', 'mia_malkova_manojob_2', 'Mia Malkova in "Covered!"', 'manojob'],
['facial', 'alicia_williams_holed', 'Alicia Wiliams in "Bath and Anal"', 'holed'],
['facial', 'poster', 'Jynx Maze in "Gag Reflex 3"', 'evilangel'],
['facial', 'hope_howell_manojob', 'Hope Howell in "Super Slutty Step-Daugher"', 'manojob'],
['facial', 2, 'Ashly Anderson', 'hookuphotshot'],
['facial', 4, 'Kendra Heart', 'facialsforever'],
['flexible', 'lara_frost_legalporno', 'Lara Frost in NRX059', 'legalporno'],
['enhanced-boobs', 7, 'Charley Atwell', 'icandigirls'],
['enhanced-boobs', 14, 'Rikki Six', 'dreamdolls'],
['enhanced-boobs', 2, 'Gia Milana in "Hot Anal Latina"', 'hardx'],
['enhanced-boobs', 'jenny_poussin_jennypoussinvip', 'Jenny Poussin in "His Shirt"', 'jennypoussinvip'],
['enhanced-boobs', 25, 'Zuleidy', 'private'],
['enhanced-boobs', 17, 'Felina in "With Flowers On The Floor"', 'louisdemirabert'],
['enhanced-boobs', 1, 'Lela Star in "Thick"', 'julesjordan'],
['enhanced-boobs', 18, 'Ebony Godess', 'actiongirls'],
['enhanced-boobs', 'hunter_bryce_penthouse', 'Hunter Bryce in "On The Bed"', 'penthouse'],
['enhanced-boobs', 'clanddi_jinkcego_ddfbusty_5', 'Clanddi Jinkcego & Rebecca Jessop', 'ddfbusty'],
['enhanced-boobs', 'trudy_photodromm_1', 'Trudy', 'photodromm'],
['enhanced-boobs', 'kenzie_anne_playboy', 'Miss Kenzie Anne in "Supercharged"', 'playboy'],
['enhanced-boobs', 9, 'Putri Cinta', 'watch4beauty'],
['enhanced-boobs', 3, 'Ashly Anderson', 'passionhd'],
['enhanced-boobs', 'charlie_atwell_photodromm', 'Charley Atwell', 'photodromm'],
['enhanced-boobs', '23d', 'Lulu Sex Bomb in "Tropical Touch"'],
['enhanced-boobs', 22, 'Sakura Sena'],
['enhanced-boobs', 'mareeva_trudy_photodromm_1', 'Mareeva and Trudy', 'photodromm'],
['enhanced-boobs', 'lara_frost_handsonhardcore', 'Lara Frost in "Handyman & Hubby Try To Satisfy Horny Little Ukrainian Nympho"', 'handsonhardcore'],
['enhanced-boobs', 'shawna_lenee_inthecrack_3', 'Shawna Lenee', 'inthecrack'],
['enhanced-boobs', 'azul_hermosa_pornstarslikeitbig', 'Azul Hermosa in "She Likes Rough Quickies"', 'pornstarslikeitbig'],
['enhanced-boobs', 21, 'Emelie Ekström'],
['enhanced-boobs', 10, 'Tia Cyrus in "Titty-Fucked Yoga Goddess"', 'latinasextapes'],
['enhanced-boobs', 24, 'Shalina Devine in "Rumbling in the Ring, Part 2"', 'pornworld'],
['enhanced-boobs', 20, 'Chloe Lamour', 'ddfbusty'],
['enhanced-boobs', 13, 'Kitana Lure', 'assholefever'],
['enhanced-boobs', 8, 'Amber Alena', 'score'],
['enhanced-boobs', 19, 'Kerrie Lee in "Bricked"', 'studio66tv'],
['enhanced-boobs', 4, 'Capri Cavanni', 'bigtitsinsports'],
['enhanced-butt', '0a', 'Aletta Ocean in "Jerk Off Instructions"', 'alettaoceanlive'],
['fake-cum', 2, 'Mimi Allen', 'fuckedupfacials'],
['fake-cum', 3, 'Alexia Anders in "Thanksgiving Creampies"', 'cum4k'],
['fake-cum', 0, 'Jynx Maze in "Showering Slut Gets Sludged"', 'cumshotsurprise'],
['fake-cum', 'franceska_le_fortyozbounce', 'Franceska Le and Luscious Lopez', 'fortyozbounce'],
['fake-cum', 1, 'Ricki White', 'fuckedupfacials'],
['fake-cum', 4, 'Vina Sky in "Creaming Her Pipes"', 'anal4k'],
['family', 0, 'Teanna Trump in "A Family Appear: Part One"', 'brazzers'],
['femdom', 0, 'Alina Li in "Asian Domination… She Holds Jules Jordan\'s Cock Hostage!"', 'julesjordan'],
['femdom', 1, 'Little Caprice in "Femdom"', 'littlecapricedreams'],
['fingering', 1, 'Marry Queen', 'babespottingtv'],
['fingering', 2, 'Kylie Page and Hadley Viscara in "Busty Blonde Bombshells"', 'lesbianx'],
['fingering', 0, 'Ashly Anderson in "Rough Love"', 'hookuphotshot'],
['fisting', '1a', 'Aletta Ocean in "Solo Fisting"', '21sextury'],
['fisting', 0, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'],
['fisting-dp', 0, 'Janice Griffith and Veronica Avluv in "The Nymphomaniac\'s Apprentice', 'theupperfloor'],
['gangbang', 5, 'Carter Cruise\'s first gangbang in "Slut Puppies 9"', 'julesjordan'],
['gangbang', 'kristen_scott_julesjordan', 'Kristen Scott in "Interracial Gangbang!"', 'julesjordan'],
['gangbang', 'monika_fox_legalporno', 'Monika Fox in GL479', 'legalporno'],
['gangbang', 7, 'Alexa Flexy in GL376', 'legalporno'],
['gangbang', 'lara_frost_legalporno_1', 'Lara Frost in NRX070', 'legalporno'],
['gangbang', 'gina_gerson_assholefever', 'Gina Gerson in "Oppa Gangbang Style"', 'assholefever'],
['gangbang', 0, '"4 On 1 Gangbangs"', 'doghousedigital'],
['gangbang', 4, 'Marley Brinx in "The Gangbang of Marley Brinx"', 'julesjordan'],
['gangbang', 1, 'Ginger Lynn in "Gangbang Mystique", a photoset shot by Suze Randall, 1984. Depicting a woman \'airtight\' pushed the boundaries of pornography at the time.'],
['gaping', 1, 'Vina Sky in "Vina Sky Does Anal"', 'hardx'],
['gaping', 4, 'Nicole Black in GIO1626', 'legalporno'],
['gaping', 'poster', 'Zoey Monroe in "Manuel DPs Them All 5"', 'julesjordan'],
['gaping', 3, 'Jessyka Swan', '21sextury'],
['gaping', 2, 'Alex Grey in "DP Masters 5"', 'julesjordan'],
['handjob', 0, 'Lichelle Marie in "Tug Me Sexy"', 'tugjobs'],
['handjob', 'mia_malkova_manojob', 'Mia Malkova in "Covered!"', 'manojob'],
['handjob', 'hope_howell_manojob', 'Hope Howell in "Super Slutty Step-Daugher"', 'manojob'],
['indian', 0, 'Resha in "Casting Resha"', 'watch4beauty'],
['interracial', 1, 'Caprice and Valerie in "Sexual Attraction"', 'hegre'],
['interracial', 0, 'Jaye Summers and Prince Yahshua in "Platinum Pussy 3"', 'julesjordan'],
['latex', 0, 'Bianca Beauchamp in "Cherry Nun"', 'latexlair'],
['latex', 1, 'Aletta Ocean in "Latex Dream"', 'alettaoceanlive'],
['latina', 3, 'Gina Valentina', 'brazzers'],
['latina', 2, 'Veronica Leal', 'herlimit'],
['latina', 1, 'Jynx Maze in "Big Anal Asses 2"', 'hardx'],
['latina', 0, 'Vienna Black', 'spizoo'],
['lesbian', 0, 'Jenna Sativa and Alina Lopez in "Opposites Attract"', 'girlgirl'],
['maid', 0, 'Whitney Wright in "Dredd Up Your Ass 2"', 'julesjordan'],
['maid', 1, 'Alessandra Jane', 'brazzers'],
['milf', 'nikki_benz_bigwetbutts', 'Nikki Benz in "Pantyhose Playtime"', 'bigwetbutts'],
['milf', 'silvia_saige_ddfnetwork', 'Silvia Saige', 'pornworld'],
['milf', 2, 'Shalina Devine', 'analmom'],
['milf', 1, 'Francesca Le', 'evilangel'],
['mff', 'zaawaadi_asia_rae_allblackx_3', 'Zaawaadi and Asia Rae in "All Black Threesome"', 'allblackx'],
['mff', 0, 'Madison Ivy, Adriana Chechik and Keiran Lee in "Day With A Pornstar"', 'brazzers'],
['mff', 1, 'Anikka Albrite, Kelsi Monroe and Mick Blue', 'hardx'],
['mff', 'azul_hermosa_isis_love_pornstarslikeitbig', 'Azul Hermosa, Isis Love and Zac Wild in "She Likes Rough Quickies"', 'pornstarslikeitbig'],
['mfm', 0, 'Vina Sky in "Jules Jordan\'s Three Ways"', 'julesjordan'],
['mfm', 8, 'Ariana Marie in "DP Masters 7"', 'julesjordan'],
['mfm', 1, 'Lana Rhoades in "Gangbang Me 3"', 'hardx'],
['mfm', 'franceska_jaimes_digitalplayground', 'Franceska Jaimes in "Monarch"', 'digitalplayground'],
['mfm', 'hazel_moore_legalporno', 'Hazel Moore', 'legalporno'],
['mfm', 7, 'Rose Valerie', 'eurosexparties'],
['mfm', 6, 'Honey Gold in "Slut Puppies 12"', 'julesjordan'],
['natural-boobs', 1, 'Nia Nacci', 'firstclasspov'],
['natural-boobs', 4, 'Miela (Marry Queen) in "Pure"', 'femjoy'],
['natural-boobs', 7, 'Layla London', 'inthecrack'],
['natural-boobs', 3, 'Violet Starr in "Violet Starr 1st Lesbian Anal"', 'lesbianx'],
['natural-boobs', 0, 'Valentina Nappi in "Hypnotic Curves"', 'lesbianx'],
['natural-boobs', 6, 'Blake Blossom in "Naturally Stacked Cutie"', 'hardx'],
['natural-boobs', 5, 'Chloe B in "Lamour"', 'metart'],
['natural-boobs', 2, 'Kylie Page', 'allgirlmassage'],
['nun', 0, 'Lady Zee in NF053', 'legalporno'],
['nun', 1, 'Penny Pax and Darcie Dolce in "Confessions Of A Sinful Nun"', 'sweetheartvideo'],
['nun', 3, 'Higurashi Rin in "Naughty Nun"', 'allgravure'],
['nun', 2, 'Lea Lexis in "Confessions Of A Sinful Nun"', 'sweetheartvideo'],
['nurse', 0, 'Sarah Vandella in "Cum"', 'brazzers'],
['nurse', 2, 'Evelina Dellai in "Horny Nurses"', 'private'],
['nurse', 3, 'Lullu Gun in "Hot Nurse Addicted to Anal"', 'private'],
['nurse', 'hunter_bryce_realityjunkies', 'Hunter Bryce', 'realityjunkies'],
['nurse', 1, 'Mia Malkova in "Always Think Happy Thoughts"', 'brazzers'],
['oil', 2, 'Jade Kush', 'passionhd'],
['oil', 1, 'Kissa Sins in "Oil Overload 14"', 'julesjordan'],
['oil', 3, 'Vina Sky', 'lubed'],
['oil', 0, 'Jada Stevens in "Jada Stevens Anal Ass Oiled Up\'s Cock"', 'julesjordan'],
['oral-creampie', 1, 'Valentina Nappi', 'herlimit'],
['oral-creampie', 0, 'Henessy in "B(ass)t Friends"', 'assholefever'],
['orgy', 1, 'Megan Rain (DP), Morgan Lee (anal), Jessa Rhodes, Melissa Moore and Kimmy Granger in "Orgy Masters 8"', 'julesjordan'],
['orgy', 0, 'Vicky Sol and Jolee Love in GIO1550', 'legalporno'],
['orgy', 'zaawaadi_malena_cherry_kiss_roccosiffredi_5', 'Zaawaadi, Cherry Kiss and Malena in "My Name Is Zaawaadi"', 'roccosiffredi'],
['orgy', 'poster', 'Zoey Mornoe (DP), Jillian Janson (sex), Frida Sante, Katerina Kay and Natasha Starr in "Orgy Masters 6"', 'julesjordan'],
['parody', 0, 'Capri Cavanni and Dani Daniels in "The Whore of Wall Street"', 'brazzers'],
['piercings', 0, 'Kaegune in "When The Sun Goes Down"', 'suicidegirls'],
['piss-drinking', 0, 'Scarlet Domingo in GL227', 'legalporno'],
['pussy-eating', 5, 'Claudia Macc and Victoria Pure', 'eurogirlsongirls'],
['pussy-eating', 'lilly_evans_jayme_langford_twistys', 'Jayme Langford and Lilly Evans in "The Morning After"', 'twistys'],
['pussy-eating', 4, 'Anastasia Knight and Jillian Janson in "Teach Me"', 'screwbox'],
['pussy-eating', 'zaawaadi_asia_rae_allblackx', 'Zaawaadi and Asia Rae in "All Black Threesome"', 'allblackx'],
['pussy-eating', 'jane_wilde_evilangel', 'Jane Wilde and Brock Cooper in "The Cock Hungry Chronicles"', 'evilangel'],
['pussy-eating', 2, 'Anikka Albrite and Mia Malkova in "Big Anal Bombshells"', 'lesbianx'],
['pussy-eating', 8, 'Sia Lust and Lacey London in "Naughty Gamer Girls"', 'girlsgonepink'],
['pussy-eating', 7, 'Jewelz Blu and Katie Kush in "Pick Your Pleasure"', 'realitykings'],
['pussy-eating', 3, 'Kylie Page and Kalina Ryu in "Training My Masseuse"', 'allgirlmassage'],
['pussy-eating', 'azul_hermosa_realitykings_1', 'Azul Hermosa and Van Wylde in "Breakup Sex"', 'realitykings'],
['pussy-eating', 0, 'Kali Roses and Emily Willis\' pussy in "Peeping On My Neighbor"', 'girlgirl'],
['pussy-eating', 1, 'Anikka Albrite and Riley Reid', 'inthecrack'],
['pussy-eating', 6, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'],
['redhead', 1, 'Lacy Lennon', 'wicked'],
['redhead', 0, 'Penny Pax in "The Submission of Emma Marx: Boundaries"', 'newsensations'],
['schoolgirl', 2, 'Cindy Shine in "Schoolgirl Stars in Interracial DP Threesome"', 'private'],
['schoolgirl', 1, 'Eliza Ibarra', 'brazzers'],
['sex', 'jane_wilde_evilangel', 'Jane Wilde and Brock Cooper in "The Cock Hungry Chronicles"', 'evilangel'],
['squirting', 0, 'Veronica Rodriguez in "Hot Latina Squirting"', 'julesjordan'],
['squirting', 1, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'],
['swallowing', 0, 'Kira Thorn in GIO1023', 'legalporno'],
['tattoos', 0, 'Tigerlilly in "Wrapped In Blue"', 'suicidegirls'],
['tattoos', 1, 'Joanna Angel', 'joannaangel'],
['teen', 0, 'Alexa Flexy', 'sensualgirl'],
['teen', 1, 'Stalfra aka Precious', 'nubiles'],
['trainbang', 1, 'Ria Sunn', 'private'],
['trainbang', 0, 'Nicole Black in GIO971', 'legalporno'],
['tap', 4, 'Francys Belle in GIO1103', 'legalporno'],
['tap', 3, 'Julia Red in GIO1007', 'legalporno'],
['tap', 1, 'Natasha Teen in SZ2098', 'legalporno'],
['tap', 2, 'Kira Thorn in GIO1018', 'legalporno'],
['titty-fucking', 2, 'Layla London in "Touch Me"', 'bignaturals'],
['titty-fucking', 0, 'Kylie Page in "Stepsis Gives Soapy Handjob In Shower"', 'spyfam'],
['titty-fucking', 4, 'Set 5532', 'tugjobs'],
['titty-fucking', 3, 'Anna Bell Peaks in "Ringing Her Bell"', 'milfvr'],
['titty-fucking', 1, 'Chloe Lamour', 'ddfbusty'],
['toy-anal', 3, 'Kelly and Leona in "Sleeping Over"', 'lezcuties'],
['toy-anal', 'ember_snow_jane_wilde_lesbianx', 'Ember Snow and Jane Wilde in "Ember\'s Wilde Ride"', 'lesbianx'],
['toy-anal', 1, 'Nina North and Cassidy Klein in "Nina\'s First Lesbian Anal"', 'lesbianx'],
['toy-anal', 2, 'Denise, Irina and Laki in "Sexy Slumber"', 'lezcuties'],
['toy-anal', 0, 'Kira Noir in 1225', 'inthecrack'],
['toy-dp', 1, 'Krissy Lynn and London River in "Lesbian DP Workout"', 'lesbianx'],
['toy-dp', 3, 'Tori Black, Ana Foxxx, Anikka Albrite, Jenna Sativa and Abigail Mac in "Tori Black\'s Lesbian Gangbang"', 'lesbianx'],
['toy-dp', 0, 'Marley Brinx, Ivy Lebelle and Lyra Law in "Marley Brinx First GGDP"', 'lesbianx'],
['toys', 1, 'Chloe Lamour in "Curives In All The Right Places"', 'wetandpuffy'],
['toys', 'shawna_lenee_sunrisekings', 'Shawna Lenee', 'sunrisekings'],
['trainbang', 'poster', 'Kali Roses in "Passing Me Around"', 'blacked'],
['trainbang', 'gina_gerson_assholefever', 'Gina Gerson in "Oppa Gangbang Style"', 'assholefever'],
['vr', 0, 'Michelle H', 'metart'],
['vr', '1a', 'Jenna Fox and Tommy Pistol in "Virtual Reality Jenna Fox Fucks So Real"', 'bangbros'],
['white', 2, 'Kenzie Reeves', 'bang'],
['white', 0, 'Remy Lacroix', 'hardx'],
['white', 'jane_wilde_evilangel_1', 'Jane Wilde in "The Cock Hungry Chronicles"', 'evilangel'],
['white', 1, 'Sheena Shaw', 'brazzers'],
]
.map(([slug, fileIndex, comment, entitySlug], index) => ({
id: `${slug}-${fileIndex}`,
tagSlug: slug,
path: `tags/${slug}/${fileIndex}.jpeg`,
thumbnail: `tags/${slug}/thumbs/${fileIndex}.jpeg`,
lazy: `tags/${slug}/lazy/${fileIndex}.jpeg`,
mime: 'image/jpeg',
index,
comment,
entitySlug,
}));
/* eslint-disable max-len */
exports.seed = knex => Promise.resolve()
.then(async () => {
await upsert('media', sfw, 'id');
const tags = await knex('tags').whereIn('slug', tagMedia.map(item => item.tagSlug));
const entities = await knex('entities')
.whereIn('slug', tagMedia.map(item => item.entitySlug).filter(Boolean))
.orderBy('type', 'DESC');
const entitiesBySlug = entities.reduce((acc, entity) => ({
...acc,
[entity.slug]: entity,
}), {});
const tagMediaWithDimensions = await Promise.map(tagMedia, async (media) => {
const { width, height } = await sharp(path.join('public/img', media.path)).metadata(); // size not available from filepath
return {
...media,
width,
height,
};
}, {
concurrency: 20,
});
const { inserted, updated } = await upsert('media', tagMediaWithDimensions.map(media => ({
id: media.id,
path: media.path,
thumbnail: media.thumbnail,
lazy: media.lazy,
mime: media.mime,
index: media.index,
width: media.width,
height: media.height,
comment: media.comment,
entity_id: entitiesBySlug[media.entitySlug]?.id,
})), '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 tagMediaBySlug = tagMedia.reduce((acc, tagPhoto) => ({
...acc,
[tagPhoto.tagSlug]: (acc[tagPhoto.tagSlug] || []).concat(tagPhoto),
}), {});
const tagPosters = Object.values(tagMediaBySlug).map(tag => tag[0]);
const tagPhotos = Object.values(tagMediaBySlug).map(tag => tag.slice(1)).flat();
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],
}));
await Promise.all([
upsert('tags_posters', tagPosterEntries, 'tag_id', knex),
upsert('tags_photos', tagPhotoEntries, ['tag_id', 'media_id'], knex),
]);
// clean up (re)moved tag media
await Promise.all([
knex('tags_posters')
.whereNotIn('media_id', tagPosters.map(photo => photo.id))
.delete(),
knex('tags_photos')
.whereNotIn('media_id', tagPhotos.map(photo => photo.id))
.delete(),
]);
});