diff --git a/assets/components/campaigns/campaign.vue b/assets/components/campaigns/campaign.vue
index bd593065..9999ab2d 100644
--- a/assets/components/campaigns/campaign.vue
+++ b/assets/components/campaigns/campaign.vue
@@ -7,7 +7,7 @@
>
Promise.resolve()
.unique()
.notNullable();
+ table.string('type')
+ .defaultTo('jpg');
+
table.integer('width')
.notNullable();
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_305_99_moretta_11975.jpg b/public/img/banners/kink/boundgangbangs/boundgangbangs_305_99_moretta_11975.jpg
new file mode 100644
index 00000000..bb297729
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_305_99_moretta_11975.jpg differ
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_305_99_moretta_11975_animated.gif b/public/img/banners/kink/boundgangbangs/boundgangbangs_305_99_moretta_11975_animated.gif
new file mode 100644
index 00000000..12f8b7d8
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_305_99_moretta_11975_animated.gif differ
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_315_300_lou_charmelle_12402.jpg b/public/img/banners/kink/boundgangbangs/boundgangbangs_315_300_lou_charmelle_12402.jpg
new file mode 100644
index 00000000..bed77a24
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_315_300_lou_charmelle_12402.jpg differ
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_315_300_lou_charmelle_12402_animated.gif b/public/img/banners/kink/boundgangbangs/boundgangbangs_315_300_lou_charmelle_12402_animated.gif
new file mode 100644
index 00000000..b4979360
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_315_300_lou_charmelle_12402_animated.gif differ
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_770_76_amy_brooke_11965.gif b/public/img/banners/kink/boundgangbangs/boundgangbangs_770_76_amy_brooke_11965.gif
new file mode 100644
index 00000000..39d9e926
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_770_76_amy_brooke_11965.gif differ
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_770_76_anissa_kate_19662.jpg b/public/img/banners/kink/boundgangbangs/boundgangbangs_770_76_anissa_kate_19662.jpg
new file mode 100644
index 00000000..d7563f08
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_770_76_anissa_kate_19662.jpg differ
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_970_90_sasha_swift_18815.jpg b/public/img/banners/kink/boundgangbangs/boundgangbangs_970_90_sasha_swift_18815.jpg
new file mode 100644
index 00000000..5f3c3dad
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_970_90_sasha_swift_18815.jpg differ
diff --git a/public/img/banners/kink/boundgangbangs/boundgangbangs_970_90_skylar_price_12403.gif b/public/img/banners/kink/boundgangbangs/boundgangbangs_970_90_skylar_price_12403.gif
new file mode 100644
index 00000000..3093469d
Binary files /dev/null and b/public/img/banners/kink/boundgangbangs/boundgangbangs_970_90_skylar_price_12403.gif differ
diff --git a/public/img/banners/kink/hardcoregangbang/hardcoregangbang_1000_100.jpg b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_1000_100.jpg
new file mode 100644
index 00000000..38de2f62
Binary files /dev/null and b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_1000_100.jpg differ
diff --git a/public/img/banners/kink/hardcoregangbang/hardcoregangbang_300_250_kira_noir_44157.jpg b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_300_250_kira_noir_44157.jpg
new file mode 100644
index 00000000..4948be80
Binary files /dev/null and b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_300_250_kira_noir_44157.jpg differ
diff --git a/public/img/banners/kink/hardcoregangbang/hardcoregangbang_305_99_kira_noir.jpg b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_305_99_kira_noir.jpg
new file mode 100644
index 00000000..b7daae07
Binary files /dev/null and b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_305_99_kira_noir.jpg differ
diff --git a/public/img/banners/kink/hardcoregangbang/hardcoregangbang_900_250_gloves_blonde.jpg b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_900_250_gloves_blonde.jpg
new file mode 100644
index 00000000..8c9041bc
Binary files /dev/null and b/public/img/banners/kink/hardcoregangbang/hardcoregangbang_900_250_gloves_blonde.jpg differ
diff --git a/public/img/tags/anal/gia_derza_julesjordan.jpeg b/public/img/tags/anal/gia_derza_julesjordan.jpeg
new file mode 100644
index 00000000..a195c08c
Binary files /dev/null and b/public/img/tags/anal/gia_derza_julesjordan.jpeg differ
diff --git a/public/img/tags/anal/gia_derza_julesjordan_1.jpeg b/public/img/tags/anal/gia_derza_julesjordan_1.jpeg
new file mode 100644
index 00000000..e572990f
Binary files /dev/null and b/public/img/tags/anal/gia_derza_julesjordan_1.jpeg differ
diff --git a/public/img/tags/anal/lazy/gia_derza_julesjordan.jpeg b/public/img/tags/anal/lazy/gia_derza_julesjordan.jpeg
new file mode 100644
index 00000000..52572a1c
Binary files /dev/null and b/public/img/tags/anal/lazy/gia_derza_julesjordan.jpeg differ
diff --git a/public/img/tags/anal/lazy/gia_derza_julesjordan_1.jpeg b/public/img/tags/anal/lazy/gia_derza_julesjordan_1.jpeg
new file mode 100644
index 00000000..76d6d2f4
Binary files /dev/null and b/public/img/tags/anal/lazy/gia_derza_julesjordan_1.jpeg differ
diff --git a/public/img/tags/anal/thumbs/gia_derza_julesjordan.jpeg b/public/img/tags/anal/thumbs/gia_derza_julesjordan.jpeg
new file mode 100644
index 00000000..9e1a0fe6
Binary files /dev/null and b/public/img/tags/anal/thumbs/gia_derza_julesjordan.jpeg differ
diff --git a/public/img/tags/anal/thumbs/gia_derza_julesjordan_1.jpeg b/public/img/tags/anal/thumbs/gia_derza_julesjordan_1.jpeg
new file mode 100644
index 00000000..eb5e9e12
Binary files /dev/null and b/public/img/tags/anal/thumbs/gia_derza_julesjordan_1.jpeg differ
diff --git a/public/img/tags/blowbang/ana_foxxx_hardx.jpeg b/public/img/tags/blowbang/ana_foxxx_hardx.jpeg
new file mode 100644
index 00000000..dd4474c3
Binary files /dev/null and b/public/img/tags/blowbang/ana_foxxx_hardx.jpeg differ
diff --git a/public/img/tags/blowbang/lazy/ana_foxxx_hardx.jpeg b/public/img/tags/blowbang/lazy/ana_foxxx_hardx.jpeg
new file mode 100644
index 00000000..e417949f
Binary files /dev/null and b/public/img/tags/blowbang/lazy/ana_foxxx_hardx.jpeg differ
diff --git a/public/img/tags/blowbang/lazy/monika_fox_legalporno.jpeg b/public/img/tags/blowbang/lazy/monika_fox_legalporno.jpeg
new file mode 100644
index 00000000..4f8da257
Binary files /dev/null and b/public/img/tags/blowbang/lazy/monika_fox_legalporno.jpeg differ
diff --git a/public/img/tags/blowbang/lazy/monika_fox_legalporno_1.jpeg b/public/img/tags/blowbang/lazy/monika_fox_legalporno_1.jpeg
new file mode 100644
index 00000000..0d760ba5
Binary files /dev/null and b/public/img/tags/blowbang/lazy/monika_fox_legalporno_1.jpeg differ
diff --git a/public/img/tags/blowbang/monika_fox_legalporno.jpeg b/public/img/tags/blowbang/monika_fox_legalporno.jpeg
new file mode 100644
index 00000000..747c5194
Binary files /dev/null and b/public/img/tags/blowbang/monika_fox_legalporno.jpeg differ
diff --git a/public/img/tags/blowbang/monika_fox_legalporno_1.jpeg b/public/img/tags/blowbang/monika_fox_legalporno_1.jpeg
new file mode 100644
index 00000000..7f5b2981
Binary files /dev/null and b/public/img/tags/blowbang/monika_fox_legalporno_1.jpeg differ
diff --git a/public/img/tags/blowbang/thumbs/ana_foxxx_hardx.jpeg b/public/img/tags/blowbang/thumbs/ana_foxxx_hardx.jpeg
new file mode 100644
index 00000000..d99442e0
Binary files /dev/null and b/public/img/tags/blowbang/thumbs/ana_foxxx_hardx.jpeg differ
diff --git a/public/img/tags/blowbang/thumbs/monika_fox_legalporno.jpeg b/public/img/tags/blowbang/thumbs/monika_fox_legalporno.jpeg
new file mode 100644
index 00000000..65fdb706
Binary files /dev/null and b/public/img/tags/blowbang/thumbs/monika_fox_legalporno.jpeg differ
diff --git a/public/img/tags/blowbang/thumbs/monika_fox_legalporno_1.jpeg b/public/img/tags/blowbang/thumbs/monika_fox_legalporno_1.jpeg
new file mode 100644
index 00000000..e1683b22
Binary files /dev/null and b/public/img/tags/blowbang/thumbs/monika_fox_legalporno_1.jpeg differ
diff --git a/public/img/tags/bukkake/ana_foxxx_hardx.jpeg b/public/img/tags/bukkake/ana_foxxx_hardx.jpeg
new file mode 100644
index 00000000..bc35e340
Binary files /dev/null and b/public/img/tags/bukkake/ana_foxxx_hardx.jpeg differ
diff --git a/public/img/tags/bukkake/jasmine_byrne_julesjordan.jpeg b/public/img/tags/bukkake/jasmine_byrne_julesjordan.jpeg
new file mode 100644
index 00000000..b6476a98
Binary files /dev/null and b/public/img/tags/bukkake/jasmine_byrne_julesjordan.jpeg differ
diff --git a/public/img/tags/bukkake/jasmine_byrne_julesjordan_1.jpeg b/public/img/tags/bukkake/jasmine_byrne_julesjordan_1.jpeg
new file mode 100644
index 00000000..6f6ff92b
Binary files /dev/null and b/public/img/tags/bukkake/jasmine_byrne_julesjordan_1.jpeg differ
diff --git a/public/img/tags/bukkake/jasmine_byrne_julesjordan_2.jpeg b/public/img/tags/bukkake/jasmine_byrne_julesjordan_2.jpeg
new file mode 100644
index 00000000..40aba275
Binary files /dev/null and b/public/img/tags/bukkake/jasmine_byrne_julesjordan_2.jpeg differ
diff --git a/public/img/tags/bukkake/jasmine_byrne_julesjordan_3.jpeg b/public/img/tags/bukkake/jasmine_byrne_julesjordan_3.jpeg
new file mode 100644
index 00000000..f5c6ac7a
Binary files /dev/null and b/public/img/tags/bukkake/jasmine_byrne_julesjordan_3.jpeg differ
diff --git a/public/img/tags/bukkake/jasmine_byrne_julesjordan_4.jpeg b/public/img/tags/bukkake/jasmine_byrne_julesjordan_4.jpeg
new file mode 100644
index 00000000..b4343665
Binary files /dev/null and b/public/img/tags/bukkake/jasmine_byrne_julesjordan_4.jpeg differ
diff --git a/public/img/tags/bukkake/jasmine_byrne_julesjordan_5.jpeg b/public/img/tags/bukkake/jasmine_byrne_julesjordan_5.jpeg
new file mode 100644
index 00000000..4702e67e
Binary files /dev/null and b/public/img/tags/bukkake/jasmine_byrne_julesjordan_5.jpeg differ
diff --git a/public/img/tags/bukkake/jasmine_byrne_julesjordan_6.jpeg b/public/img/tags/bukkake/jasmine_byrne_julesjordan_6.jpeg
new file mode 100644
index 00000000..d2301b5c
Binary files /dev/null and b/public/img/tags/bukkake/jasmine_byrne_julesjordan_6.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/ana_foxxx_hardx.jpeg b/public/img/tags/bukkake/lazy/ana_foxxx_hardx.jpeg
new file mode 100644
index 00000000..c8dfbdc7
Binary files /dev/null and b/public/img/tags/bukkake/lazy/ana_foxxx_hardx.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan.jpeg b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan.jpeg
new file mode 100644
index 00000000..db746720
Binary files /dev/null and b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_1.jpeg b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_1.jpeg
new file mode 100644
index 00000000..e6056b64
Binary files /dev/null and b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_1.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_2.jpeg b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_2.jpeg
new file mode 100644
index 00000000..d365a9c9
Binary files /dev/null and b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_2.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_3.jpeg b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_3.jpeg
new file mode 100644
index 00000000..64529a48
Binary files /dev/null and b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_3.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_4.jpeg b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_4.jpeg
new file mode 100644
index 00000000..18d7f3bf
Binary files /dev/null and b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_4.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_5.jpeg b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_5.jpeg
new file mode 100644
index 00000000..5fc7ae21
Binary files /dev/null and b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_5.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_6.jpeg b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_6.jpeg
new file mode 100644
index 00000000..05d5e6e7
Binary files /dev/null and b/public/img/tags/bukkake/lazy/jasmine_byrne_julesjordan_6.jpeg differ
diff --git a/public/img/tags/bukkake/lazy/megan_rain_julesjordan.jpeg b/public/img/tags/bukkake/lazy/megan_rain_julesjordan.jpeg
new file mode 100644
index 00000000..c1740794
Binary files /dev/null and b/public/img/tags/bukkake/lazy/megan_rain_julesjordan.jpeg differ
diff --git a/public/img/tags/bukkake/megan_rain_julesjordan.jpeg b/public/img/tags/bukkake/megan_rain_julesjordan.jpeg
new file mode 100644
index 00000000..f3159c15
Binary files /dev/null and b/public/img/tags/bukkake/megan_rain_julesjordan.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/ana_foxxx_hardx.jpeg b/public/img/tags/bukkake/thumbs/ana_foxxx_hardx.jpeg
new file mode 100644
index 00000000..96f93957
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/ana_foxxx_hardx.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan.jpeg b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan.jpeg
new file mode 100644
index 00000000..cf518ac6
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_1.jpeg b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_1.jpeg
new file mode 100644
index 00000000..21739f70
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_1.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_2.jpeg b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_2.jpeg
new file mode 100644
index 00000000..2d03c942
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_2.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_3.jpeg b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_3.jpeg
new file mode 100644
index 00000000..8c13f1b2
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_3.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_4.jpeg b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_4.jpeg
new file mode 100644
index 00000000..7b979a63
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_4.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_5.jpeg b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_5.jpeg
new file mode 100644
index 00000000..26a02ab4
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_5.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_6.jpeg b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_6.jpeg
new file mode 100644
index 00000000..ddd49049
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/jasmine_byrne_julesjordan_6.jpeg differ
diff --git a/public/img/tags/bukkake/thumbs/megan_rain_julesjordan.jpeg b/public/img/tags/bukkake/thumbs/megan_rain_julesjordan.jpeg
new file mode 100644
index 00000000..956c8c1e
Binary files /dev/null and b/public/img/tags/bukkake/thumbs/megan_rain_julesjordan.jpeg differ
diff --git a/public/img/tags/deepthroat/cathy_heaven_brazzers.jpeg b/public/img/tags/deepthroat/cathy_heaven_brazzers.jpeg
new file mode 100644
index 00000000..4a0c7a06
Binary files /dev/null and b/public/img/tags/deepthroat/cathy_heaven_brazzers.jpeg differ
diff --git a/public/img/tags/deepthroat/cathy_heaven_brazzers_1.jpeg b/public/img/tags/deepthroat/cathy_heaven_brazzers_1.jpeg
new file mode 100644
index 00000000..7807e339
Binary files /dev/null and b/public/img/tags/deepthroat/cathy_heaven_brazzers_1.jpeg differ
diff --git a/public/img/tags/deepthroat/lazy/cathy_heaven_brazzers.jpeg b/public/img/tags/deepthroat/lazy/cathy_heaven_brazzers.jpeg
new file mode 100644
index 00000000..5a6ea7f5
Binary files /dev/null and b/public/img/tags/deepthroat/lazy/cathy_heaven_brazzers.jpeg differ
diff --git a/public/img/tags/deepthroat/lazy/cathy_heaven_brazzers_1.jpeg b/public/img/tags/deepthroat/lazy/cathy_heaven_brazzers_1.jpeg
new file mode 100644
index 00000000..ba260bb3
Binary files /dev/null and b/public/img/tags/deepthroat/lazy/cathy_heaven_brazzers_1.jpeg differ
diff --git a/public/img/tags/deepthroat/thumbs/cathy_heaven_brazzers.jpeg b/public/img/tags/deepthroat/thumbs/cathy_heaven_brazzers.jpeg
new file mode 100644
index 00000000..2643a88f
Binary files /dev/null and b/public/img/tags/deepthroat/thumbs/cathy_heaven_brazzers.jpeg differ
diff --git a/public/img/tags/deepthroat/thumbs/cathy_heaven_brazzers_1.jpeg b/public/img/tags/deepthroat/thumbs/cathy_heaven_brazzers_1.jpeg
new file mode 100644
index 00000000..5690a8dc
Binary files /dev/null and b/public/img/tags/deepthroat/thumbs/cathy_heaven_brazzers_1.jpeg differ
diff --git a/public/img/tags/facefucking/cathy_heaven_roccosiffredi.jpeg b/public/img/tags/facefucking/cathy_heaven_roccosiffredi.jpeg
new file mode 100644
index 00000000..a4372d1b
Binary files /dev/null and b/public/img/tags/facefucking/cathy_heaven_roccosiffredi.jpeg differ
diff --git a/public/img/tags/facefucking/lazy/cathy_heaven_roccosiffredi.jpeg b/public/img/tags/facefucking/lazy/cathy_heaven_roccosiffredi.jpeg
new file mode 100644
index 00000000..5ffb7b12
Binary files /dev/null and b/public/img/tags/facefucking/lazy/cathy_heaven_roccosiffredi.jpeg differ
diff --git a/public/img/tags/facefucking/thumbs/cathy_heaven_roccosiffredi.jpeg b/public/img/tags/facefucking/thumbs/cathy_heaven_roccosiffredi.jpeg
new file mode 100644
index 00000000..adcf9bdf
Binary files /dev/null and b/public/img/tags/facefucking/thumbs/cathy_heaven_roccosiffredi.jpeg differ
diff --git a/public/img/tags/facial/alicia_williams_holed.jpeg b/public/img/tags/facial/alicia_williams_holed.jpeg
new file mode 100644
index 00000000..31c74295
Binary files /dev/null and b/public/img/tags/facial/alicia_williams_holed.jpeg differ
diff --git a/public/img/tags/facial/lazy/alicia_williams_holed.jpeg b/public/img/tags/facial/lazy/alicia_williams_holed.jpeg
new file mode 100644
index 00000000..dd4d49c4
Binary files /dev/null and b/public/img/tags/facial/lazy/alicia_williams_holed.jpeg differ
diff --git a/public/img/tags/facial/thumbs/alicia_williams_holed.jpeg b/public/img/tags/facial/thumbs/alicia_williams_holed.jpeg
new file mode 100644
index 00000000..27630655
Binary files /dev/null and b/public/img/tags/facial/thumbs/alicia_williams_holed.jpeg differ
diff --git a/public/img/tags/gangbang/lazy/monika_fox_legalporno.jpeg b/public/img/tags/gangbang/lazy/monika_fox_legalporno.jpeg
new file mode 100644
index 00000000..8250c28e
Binary files /dev/null and b/public/img/tags/gangbang/lazy/monika_fox_legalporno.jpeg differ
diff --git a/public/img/tags/gangbang/monika_fox_legalporno.jpeg b/public/img/tags/gangbang/monika_fox_legalporno.jpeg
new file mode 100644
index 00000000..29d9569b
Binary files /dev/null and b/public/img/tags/gangbang/monika_fox_legalporno.jpeg differ
diff --git a/public/img/tags/gangbang/thumbs/monika_fox_legalporno.jpeg b/public/img/tags/gangbang/thumbs/monika_fox_legalporno.jpeg
new file mode 100644
index 00000000..0271e7b8
Binary files /dev/null and b/public/img/tags/gangbang/thumbs/monika_fox_legalporno.jpeg differ
diff --git a/public/img/tags/pussy-eating/lazy/lilly_evans_jayme_langford_twistys.jpeg b/public/img/tags/pussy-eating/lazy/lilly_evans_jayme_langford_twistys.jpeg
new file mode 100644
index 00000000..3fea3afe
Binary files /dev/null and b/public/img/tags/pussy-eating/lazy/lilly_evans_jayme_langford_twistys.jpeg differ
diff --git a/public/img/tags/pussy-eating/lilly_evans_jayme_langford_twistys.jpeg b/public/img/tags/pussy-eating/lilly_evans_jayme_langford_twistys.jpeg
new file mode 100644
index 00000000..e93ef409
Binary files /dev/null and b/public/img/tags/pussy-eating/lilly_evans_jayme_langford_twistys.jpeg differ
diff --git a/public/img/tags/pussy-eating/thumbs/lilly_evans_jayme_langford_twistys.jpeg b/public/img/tags/pussy-eating/thumbs/lilly_evans_jayme_langford_twistys.jpeg
new file mode 100644
index 00000000..a8326c15
Binary files /dev/null and b/public/img/tags/pussy-eating/thumbs/lilly_evans_jayme_langford_twistys.jpeg differ
diff --git a/seeds/00_tags.js b/seeds/00_tags.js
index 5ff3ea3c..215e900e 100644
--- a/seeds/00_tags.js
+++ b/seeds/00_tags.js
@@ -934,6 +934,7 @@ const tags = [
name: 'teen',
slug: 'teen',
group: 'age',
+ description: 'New starlets aged between roughly 18 and 21, but often stretched to well into their 20s.',
},
{
name: 'titty fucking',
diff --git a/seeds/04_media.js b/seeds/04_media.js
index 1261bf7e..0db812d9 100644
--- a/seeds/04_media.js
+++ b/seeds/04_media.js
@@ -611,6 +611,7 @@ const tagMedia = [
['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'],
@@ -649,6 +650,8 @@ const tagMedia = [
['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'],
@@ -670,6 +673,9 @@ const tagMedia = [
['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'],
@@ -705,6 +711,7 @@ const tagMedia = [
['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'],
@@ -768,6 +775,7 @@ const tagMedia = [
['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'],
@@ -777,7 +785,8 @@ const tagMedia = [
['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', 'poster', 'Jynx Maze'],
+ ['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'],
@@ -829,8 +838,9 @@ const tagMedia = [
['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', 'lara_frost_legalporno_1', 'Lara Frost in NRX070', 'legalporno'],
+ ['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'],
@@ -901,6 +911,7 @@ const tagMedia = [
['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'],
diff --git a/seeds/06_affiliates.js b/seeds/06_affiliates.js
index 10fc74a5..67ee84e3 100644
--- a/seeds/06_affiliates.js
+++ b/seeds/06_affiliates.js
@@ -155,6 +155,94 @@ const banners = [
network: 'julesjordan',
tags: ['sex', 'blowjob', 'facefucking', 'big-boobs', 'brunette'],
},
+ {
+ id: 'boundgangbangs_305_99_moretta_11975_animated',
+ width: 305,
+ height: 99,
+ type: 'gif',
+ channel: 'boundgangbangs',
+ tags: ['gangbang', 'mfm', 'bdsm', 'blonde'],
+ },
+ {
+ id: 'boundgangbangs_305_99_moretta_11975',
+ width: 305,
+ height: 99,
+ channel: 'boundgangbangs',
+ tags: ['blowbang', 'blowjob', 'bdsm', 'blonde'],
+ },
+ {
+ id: 'boundgangbangs_315_300_lou_charmelle_12402_animated',
+ width: 315,
+ height: 300,
+ type: 'gif',
+ channel: 'boundgangbangs',
+ tags: ['gangbang', 'airtight', 'dp', 'bdsm', 'bondage'],
+ },
+ {
+ id: 'boundgangbangs_315_300_lou_charmelle_12402',
+ width: 315,
+ height: 300,
+ channel: 'boundgangbangs',
+ tags: ['gangbang', 'mfm', 'bdsm', 'bondage'],
+ },
+ {
+ id: 'boundgangbangs_770_76_amy_brooke_11965',
+ width: 770,
+ height: 76,
+ type: 'gif',
+ channel: 'boundgangbangs',
+ tags: ['gangbang', 'airtight', 'mfm', 'bdsm', 'bondage'],
+ },
+ {
+ id: 'boundgangbangs_770_76_anissa_kate_19662',
+ width: 770,
+ height: 76,
+ channel: 'boundgangbangs',
+ tags: ['gangbang', 'airtight', 'bdsm', 'bondage'],
+ },
+ {
+ id: 'boundgangbangs_970_90_sasha_swift_18815',
+ width: 970,
+ height: 90,
+ channel: 'boundgangbangs',
+ tags: ['gangbang', 'blowbang', 'dp', 'blowjob', 'facefucking', 'facial', 'bdsm'],
+ },
+ {
+ id: 'boundgangbangs_970_90_skylar_price_12403',
+ width: 970,
+ height: 90,
+ type: 'gif',
+ channel: 'boundgangbangs',
+ tags: ['gangbang', 'mfm', 'blowbang', 'blowjob', 'blonde', 'bdsm'],
+ },
+ {
+ id: 'hardcoregangbang_300_250_kira_noir_44157',
+ width: 300,
+ height: 250,
+ channel: 'hardcoregangbang',
+ tags: ['blowbang', 'black', 'bdsm'],
+ },
+ {
+ id: 'hardcoregangbang_305_99_kira_noir',
+ width: 305,
+ height: 99,
+ channel: 'hardcoregangbang',
+ tags: ['blowbang', 'black', 'bdsm'],
+ },
+ {
+ id: 'hardcoregangbang_900_250_gloves_blonde',
+ width: 900,
+ height: 250,
+ channel: 'hardcoregangbang',
+ tags: ['blowbang', 'blonde', 'bdsm'],
+ },
+ {
+ id: 'hardcoregangbang_1000_100',
+ width: 1000,
+ height: 100,
+ channel: 'hardcoregangbang',
+ tags: ['gangbang', 'mfm', 'bdsm'],
+ },
{
id: 'manuelferrara_728_90_asses',
width: 728,
@@ -350,6 +438,113 @@ const campaigns = [
url: 'https://enter.julesjordan.com/track/Mzk3MS4yLjMuNi4wLjAuMC4wLjA',
comment: '$30 per signup',
},
+ {
+ network: 'kink',
+ url: 'https://www.kink.com/shoots/latest?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ comment: '50%',
+ },
+ {
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ url: 'https://www.kink.com/channel/hardcore-gangbang?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'hardcoregangbang',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_305_99_moretta_11975',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_305_99_moretta_11975_animated',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_315_300_lou_charmelle_12402',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_315_300_lou_charmelle_12402_animated',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_770_76_amy_brooke_11965',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_770_76_anissa_kate_19662',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_970_90_sasha_swift_18815',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'boundgangbangs_970_90_skylar_price_12403',
+ url: 'https://www.kink.com/channel/bound-gang-bangs?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'boundgangbangs',
+ comment: '50%',
+ },
+ {
+ banner: 'hardcoregangbang_300_250_kira_noir_44157',
+ url: 'https://www.kink.com/channel/hardcore-gangbang?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'hardcoregangbang',
+ comment: '50%',
+ },
+ {
+ banner: 'hardcoregangbang_305_99_kira_noir',
+ url: 'https://www.kink.com/channel/hardcore-gangbang?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'hardcoregangbang',
+ comment: '50%',
+ },
+ {
+ banner: 'hardcoregangbang_900_250_gloves_blonde',
+ url: 'https://www.kink.com/channel/hardcore-gangbang?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'hardcoregangbang',
+ comment: '50%',
+ },
+ {
+ banner: 'hardcoregangbang_1000_100',
+ url: 'https://www.kink.com/channel/hardcore-gangbang?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
+ channel: 'hardcoregangbang',
+ comment: '50%',
+ },
+ {
+ network: 'kellymadison',
+ url: 'https://www2.kellymadison.com/track/MTAxOTE0LjYuMS4xLjAuMC4wLjAuMA',
+ comment: '$25 per signup',
+ },
+ {
+ channel: 'kellymadison',
+ url: 'https://www2.kellymadison.com/track/MTAxOTE0LjYuMS4xLjAuMC4wLjAuMA',
+ comment: '$25 per signup',
+ },
+ {
+ channel: 'pornfidelity',
+ url: 'https://www2.pornfidelity.com/track/MTAxOTE0LjYuMy4zLjAuMC4wLjAuMA',
+ comment: '$25 per signup',
+ },
+ {
+ channel: 'teenfidelity',
+ url: 'https://www2.teenfidelity.com/track/MTAxOTE0LjYuNS42LjAuMC4wLjAuMA',
+ comment: '$25 per signup',
+ },
{
channel: 'manuelferrara',
url: 'https://enter.manuelferrara.com/track/Mzk3MS4yLjcuMTYuMC4wLjAuMC4w',
@@ -452,6 +647,7 @@ exports.seed = async knex => Promise.resolve()
id: banner.id,
width: banner.width,
height: banner.height,
+ type: banner.type,
entity_id: networksBySlug[banner.network]?.id || channelsBySlug[banner.channel]?.id || null,
}));
diff --git a/src/scrapers/bang.js b/src/scrapers/bang.js
index 34665ae0..6a944b19 100644
--- a/src/scrapers/bang.js
+++ b/src/scrapers/bang.js
@@ -15,7 +15,7 @@ const genderMap = {
};
function getScreenUrl(item, scene) {
- return `https://i.bang.com/screenshots/${scene.dvd.id}/movie/${scene.order}/${item.screenId}.jpg`;
+ return `https://i.bang.com/screenshots/${scene.dvd.id}/${scene.type}/${scene.order}/${item.screenId}.jpg`;
}
function encodeId(id) {
@@ -47,7 +47,7 @@ async function fetchPhotos(scene) {
encodeJSON: false,
});
- if (res.ok) {
+ if (res.ok && res.body.images) {
return res.body.images.map(image => qu.prefixUrl(image, 'https://photos.bang.com'));
}
@@ -101,7 +101,7 @@ async function scrapeScene(scene, entity, options) {
}
function scrapeAll(scenes, entity) {
- return scenes.map(({ _source: scene }) => scrapeScene(scene, entity));
+ return Promise.all(scenes.map(({ _source: scene }) => scrapeScene(scene, entity)));
}
async function fetchActorReleases(actor, entity) {
diff --git a/src/scrapers/julesjordan.js b/src/scrapers/julesjordan.js
index e64f12b9..2897d5ef 100644
--- a/src/scrapers/julesjordan.js
+++ b/src/scrapers/julesjordan.js
@@ -284,6 +284,8 @@ async function scrapeScene({ html, query }, url, site, include) {
url: query.url('.update_dvds a'),
title: query.q('.update_dvds a', true),
};
+
+ release.movie.entryId = new URL(release.movie.url).pathname.split('/').slice(-1)[0]?.replace('.html', '');
}
const stars = Number(query.q('.avg_rating', true)?.replace(/[\s|Avg Rating:]/g, ''));
@@ -295,7 +297,7 @@ async function scrapeScene({ html, query }, url, site, include) {
function scrapeMovie({ el, query }, url, site) {
const movie = { url, site };
- movie.entryId = query.q('.rating_box').dataset.id;
+ movie.entryId = new URL(url).pathname.split('/').slice(-1)[0]?.replace('.html', '');
movie.title = query.q('.title_bar span', true);
movie.covers = query.urls('#dvd-cover-flip > a');
movie.channel = slugify(query.q('.update_date a', true), '');