diff --git a/assets/js/fragments.js b/assets/js/fragments.js index 9e6b5af0..6b02c78d 100644 --- a/assets/js/fragments.js +++ b/assets/js/fragments.js @@ -244,7 +244,12 @@ const releaseDirectorFragment = ` `; const releaseTagsFragment = ` - tags: releasesTags(orderBy: TAG_BY_TAG_ID__PRIORITY_DESC) { + tags: releasesTags( + orderBy: TAG_BY_TAG_ID__PRIORITY_DESC + filter: { + tagId: { isNull: false } + } + ) { tag { name priority diff --git a/migrations/20190325001339_releases.js b/migrations/20190325001339_releases.js index b36dab02..24a06694 100644 --- a/migrations/20190325001339_releases.js +++ b/migrations/20190325001339_releases.js @@ -792,7 +792,6 @@ exports.up = knex => Promise.resolve() })) .then(() => knex.schema.createTable('releases_tags', (table) => { table.integer('tag_id', 12) - .notNullable() .references('id') .inTable('tags'); @@ -802,6 +801,8 @@ exports.up = knex => Promise.resolve() .inTable('releases') .onDelete('cascade'); + table.text('original_tag'); + table.unique(['tag_id', 'release_id']); })) .then(() => knex.schema.createTable('releases_search', (table) => { diff --git a/public/img/tags/airtight/emily_willis_blacked.jpeg b/public/img/tags/airtight/emily_willis_blacked.jpeg new file mode 100644 index 00000000..408af24e Binary files /dev/null and b/public/img/tags/airtight/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/airtight/hime_marie_blackedraw.jpeg b/public/img/tags/airtight/hime_marie_blackedraw.jpeg new file mode 100644 index 00000000..a8fab068 Binary files /dev/null and b/public/img/tags/airtight/hime_marie_blackedraw.jpeg differ diff --git a/public/img/tags/airtight/lazy/emily_willis_blacked.jpeg b/public/img/tags/airtight/lazy/emily_willis_blacked.jpeg new file mode 100644 index 00000000..331202c9 Binary files /dev/null and b/public/img/tags/airtight/lazy/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/airtight/lazy/hime_marie_blackedraw.jpeg b/public/img/tags/airtight/lazy/hime_marie_blackedraw.jpeg new file mode 100644 index 00000000..6be78da4 Binary files /dev/null and b/public/img/tags/airtight/lazy/hime_marie_blackedraw.jpeg differ diff --git a/public/img/tags/airtight/thumbs/emily_willis_blacked.jpeg b/public/img/tags/airtight/thumbs/emily_willis_blacked.jpeg new file mode 100644 index 00000000..dabe4a20 Binary files /dev/null and b/public/img/tags/airtight/thumbs/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/airtight/thumbs/hime_marie_blackedraw.jpeg b/public/img/tags/airtight/thumbs/hime_marie_blackedraw.jpeg new file mode 100644 index 00000000..68914fdd Binary files /dev/null and b/public/img/tags/airtight/thumbs/hime_marie_blackedraw.jpeg differ diff --git a/public/img/tags/anal/alexa_flexy_private.jpeg b/public/img/tags/anal/alexa_flexy_private.jpeg new file mode 100644 index 00000000..b3cc46f9 Binary files /dev/null and b/public/img/tags/anal/alexa_flexy_private.jpeg differ diff --git a/public/img/tags/anal/alexa_flexy_private_1.jpeg b/public/img/tags/anal/alexa_flexy_private_1.jpeg new file mode 100644 index 00000000..e816abd4 Binary files /dev/null and b/public/img/tags/anal/alexa_flexy_private_1.jpeg differ diff --git a/public/img/tags/anal/lazy/alexa_flexy_private.jpeg b/public/img/tags/anal/lazy/alexa_flexy_private.jpeg new file mode 100644 index 00000000..b5fd3957 Binary files /dev/null and b/public/img/tags/anal/lazy/alexa_flexy_private.jpeg differ diff --git a/public/img/tags/anal/lazy/alexa_flexy_private_1.jpeg b/public/img/tags/anal/lazy/alexa_flexy_private_1.jpeg new file mode 100644 index 00000000..67a6ddc3 Binary files /dev/null and b/public/img/tags/anal/lazy/alexa_flexy_private_1.jpeg differ diff --git a/public/img/tags/anal/thumbs/alexa_flexy_private.jpeg b/public/img/tags/anal/thumbs/alexa_flexy_private.jpeg new file mode 100644 index 00000000..4f2aa601 Binary files /dev/null and b/public/img/tags/anal/thumbs/alexa_flexy_private.jpeg differ diff --git a/public/img/tags/anal/thumbs/alexa_flexy_private_1.jpeg b/public/img/tags/anal/thumbs/alexa_flexy_private_1.jpeg new file mode 100644 index 00000000..9dfa921a Binary files /dev/null and b/public/img/tags/anal/thumbs/alexa_flexy_private_1.jpeg differ diff --git a/public/img/tags/bukkake/lazy/yui_kawagoe_spermmania.jpeg b/public/img/tags/bukkake/lazy/yui_kawagoe_spermmania.jpeg new file mode 100644 index 00000000..9c088ee9 Binary files /dev/null and b/public/img/tags/bukkake/lazy/yui_kawagoe_spermmania.jpeg differ diff --git a/public/img/tags/bukkake/lazy/yui_kawagoe_spermmania_1.jpeg b/public/img/tags/bukkake/lazy/yui_kawagoe_spermmania_1.jpeg new file mode 100644 index 00000000..87ca6697 Binary files /dev/null and b/public/img/tags/bukkake/lazy/yui_kawagoe_spermmania_1.jpeg differ diff --git a/public/img/tags/bukkake/thumbs/yui_kawagoe_spermmania.jpeg b/public/img/tags/bukkake/thumbs/yui_kawagoe_spermmania.jpeg new file mode 100644 index 00000000..94de2d9e Binary files /dev/null and b/public/img/tags/bukkake/thumbs/yui_kawagoe_spermmania.jpeg differ diff --git a/public/img/tags/bukkake/thumbs/yui_kawagoe_spermmania_1.jpeg b/public/img/tags/bukkake/thumbs/yui_kawagoe_spermmania_1.jpeg new file mode 100644 index 00000000..9ec30dfd Binary files /dev/null and b/public/img/tags/bukkake/thumbs/yui_kawagoe_spermmania_1.jpeg differ diff --git a/public/img/tags/bukkake/yui_kawagoe_spermmania.jpeg b/public/img/tags/bukkake/yui_kawagoe_spermmania.jpeg new file mode 100644 index 00000000..4f94ebc1 Binary files /dev/null and b/public/img/tags/bukkake/yui_kawagoe_spermmania.jpeg differ diff --git a/public/img/tags/bukkake/yui_kawagoe_spermmania_1.jpeg b/public/img/tags/bukkake/yui_kawagoe_spermmania_1.jpeg new file mode 100644 index 00000000..bd1bdb12 Binary files /dev/null and b/public/img/tags/bukkake/yui_kawagoe_spermmania_1.jpeg differ diff --git a/public/img/tags/gangbang/emily_willis_blacked.jpeg b/public/img/tags/gangbang/emily_willis_blacked.jpeg new file mode 100644 index 00000000..af11fb2e Binary files /dev/null and b/public/img/tags/gangbang/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/gangbang/lazy/emily_willis_blacked.jpeg b/public/img/tags/gangbang/lazy/emily_willis_blacked.jpeg new file mode 100644 index 00000000..c98429c9 Binary files /dev/null and b/public/img/tags/gangbang/lazy/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/gangbang/thumbs/emily_willis_blacked.jpeg b/public/img/tags/gangbang/thumbs/emily_willis_blacked.jpeg new file mode 100644 index 00000000..d13f5609 Binary files /dev/null and b/public/img/tags/gangbang/thumbs/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/mfm/emily_willis_blacked.jpeg b/public/img/tags/mfm/emily_willis_blacked.jpeg new file mode 100644 index 00000000..7d702a6e Binary files /dev/null and b/public/img/tags/mfm/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/mfm/lazy/emily_willis_blacked.jpeg b/public/img/tags/mfm/lazy/emily_willis_blacked.jpeg new file mode 100644 index 00000000..4d070741 Binary files /dev/null and b/public/img/tags/mfm/lazy/emily_willis_blacked.jpeg differ diff --git a/public/img/tags/mfm/thumbs/emily_willis_blacked.jpeg b/public/img/tags/mfm/thumbs/emily_willis_blacked.jpeg new file mode 100644 index 00000000..eccff92a Binary files /dev/null and b/public/img/tags/mfm/thumbs/emily_willis_blacked.jpeg differ diff --git a/seeds/02_sites.js b/seeds/02_sites.js index e67667bf..c5df7a6f 100644 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -10471,7 +10471,7 @@ const sites = [ name: 'West Coast Productions', slug: 'westcoastproductions', url: 'https://westcoastproductions.com', - alias: ['wcp'], + alias: ['wcp', 'wcpclub'], tags: ['black-cock'], parameters: { studio: false, diff --git a/seeds/04_media.js b/seeds/04_media.js index 33ff097a..8c314178 100644 --- a/seeds/04_media.js +++ b/seeds/04_media.js @@ -594,10 +594,12 @@ const tagMedia = [ ['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', 'adriana_chechik_hope_howell_hopehowellxxx_1', 'Adriana Chechik and Hope Howell in "Hope And Adriana\'s Gangbang', 'hopehowellxxx'], ['airtight', 7, 'Lana Rhoades in "Gangbang Me 3"', 'hardx'], + ['airtight', 'hime_marie_blackedraw', 'Hime Marie', 'blackedraw'], ['airtight', 6, 'Remy Lacroix in "Ass Worship 14"', 'julesjordan'], ['airtight', 'anissa_kate_legalporno', 'Anissa Kate in GP1962', 'legalporno'], - ['airtight', 'adriana_chechik_hope_howell_hopehowellxxx_1', 'Adriana Chechik and Hope Howell in "Hope And Adriana\'s Gangbang', 'hopehowellxxx'], + ['airtight', 'emily_willis_blacked', 'Emily Willis', 'blacked'], ['airtight', 'diamond_foxxx_milfslikeitbig', 'Diamond Foxx in "Diamond\'s Bday Gangbang"', 'milfslikeitbig'], ['airtight', 'tory_lane_bigtitsatwork', 'Tory Lane in "I\'m Your Christmas Bonus"', 'bigtitsatwork'], ['airtight', 11, 'Malena Nazionale in "Rocco\'s Perverted Secretaries 2: Italian Edition"', 'roccosiffredi'], @@ -610,6 +612,7 @@ const tagMedia = [ ['airtight', 5, 'Chloe Amour in "DP Masters 4"', 'julesjordan'], ['airtight', 9, 'Cindy Shine in GP1658'], ['anal', 5, 'Abella Danger', 'hardx'], + ['anal', 'alexa_flexy_private_1', 'Alexa Flexy in "Seeks Anal Volunteers"', 'private'], ['anal', 'kira_noir_julesjordan', 'Kira Noir in "Kira Noir Opens Her Ass For Manuel"', 'julesjordan'], ['anal', 'courtney_taylor_brazzers', 'Courtney Taylor in "Pounding That Pussy By The Pool"', 'brazzers'], ['anal', 'kelly_oliveira_teenfidelity_1', 'Kelly Oliveira in "Keep It Going"', 'teenfidelity'], @@ -689,6 +692,7 @@ const tagMedia = [ ['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', 'yui_kawagoe_spermmania', 'Yui Kawagoe', 'spermmania'], ['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'], @@ -896,6 +900,7 @@ const tagMedia = [ ['free-use', 'veruca_james_brazzersexxtra', 'Veruca James in "The Perfect Maid"', 'brazzersexxtra'], ['gangbang', 5, 'Carter Cruise\'s first gangbang in "Slut Puppies 9"', 'julesjordan'], ['gangbang', 'kristen_scott_julesjordan', 'Kristen Scott in "Interracial Gangbang!"', 'julesjordan'], + ['gangbang', 'emily_willis_blacked', 'Emily Willis', 'blacked'], ['gangbang', 'monika_fox_legalporno', 'Monika Fox in GL479', 'legalporno'], ['gangbang', 7, 'Alexa Flexy in GL376', 'legalporno'], ['gangbang', 'silvia_dellai_legalporno', 'Silvia Dellai in GIO1825', 'legalporno'], @@ -940,6 +945,7 @@ const tagMedia = [ ['mff', 'azul_hermosa_isis_love_pornstarslikeitbig', 'Azul Hermosa, Isis Love and Zac Wild in "She Likes Rough Quickies"', 'pornstarslikeitbig'], ['mfm', 'kyra_black_21sextury', 'Kyra Black', '21sextury'], ['mfm', 'juelz_ventura_babygotboobs_3a', 'Juelz Ventura in "A Deep DP For Dessert"', 'babygotboobs'], + ['mfm', 'emily_willis_blacked', 'Emily Willis', 'blacked'], ['mfm', 0, 'Vina Sky in "Jules Jordan\'s Three Ways"', 'julesjordan'], ['mfm', 'anne_amari_wefuckblackgirls', 'Anne Amari', 'wefuckblackgirls'], ['mfm', 8, 'Ariana Marie in "DP Masters 7"', 'julesjordan'], diff --git a/src/tags.js b/src/tags.js index c1146071..6aa5898e 100644 --- a/src/tags.js +++ b/src/tags.js @@ -117,22 +117,26 @@ async function getEntityTags(releases) { function buildReleaseTagAssociations(releases, tagIdsBySlug, entityTagIdsByEntityId, type) { const tagAssociations = releases .map((release) => { - const entityTagIds = entityTagIdsByEntityId[release.entity?.id] || []; - const releaseTags = release.tags || []; + const entityTagIds = entityTagIdsByEntityId[release.entity?.id].map(tag => ({ id: tag.id, origin: tag.name })) || []; + const releaseTags = release.tags?.filter(Boolean) || []; - const releaseTagIds = releaseTags.every(tag => typeof tag === 'number') + const releaseTagsWithIds = releaseTags.every(tag => typeof tag === 'number') ? releaseTags // obsolete scraper returned pre-matched tags - : releaseTags.map(tag => tagIdsBySlug[slugify(tag)]); + : releaseTags.map(tag => ({ + id: tagIdsBySlug[slugify(tag)], + original: tag, + })); const tags = [...new Set( // filter duplicates and empties - releaseTagIds + releaseTagsWithIds .concat(entityTagIds) .filter(Boolean), )] - .map(tagId => ({ + .map(tag => ({ [`${type}_id`]: release.id, - tag_id: tagId, + tag_id: tag.id, + original_tag: tag.original, })); return tags;