diff --git a/public/img/logos/letsdoeit/agirlknows.png b/public/img/logos/letsdoeit/agirlknows.png
new file mode 100644
index 00000000..dcc391e7
Binary files /dev/null and b/public/img/logos/letsdoeit/agirlknows.png differ
diff --git a/public/img/logos/letsdoeit/bitchesabroad.png b/public/img/logos/letsdoeit/bitchesabroad.png
new file mode 100644
index 00000000..d1dfad08
Binary files /dev/null and b/public/img/logos/letsdoeit/bitchesabroad.png differ
diff --git a/public/img/logos/letsdoeit/bumsbesuch.png b/public/img/logos/letsdoeit/bumsbesuch.png
new file mode 100644
index 00000000..92289f63
Binary files /dev/null and b/public/img/logos/letsdoeit/bumsbesuch.png differ
diff --git a/public/img/logos/letsdoeit/bumsbuero.png b/public/img/logos/letsdoeit/bumsbuero.png
new file mode 100644
index 00000000..f4783d74
Binary files /dev/null and b/public/img/logos/letsdoeit/bumsbuero.png differ
diff --git a/public/img/logos/letsdoeit/bumsbus.png b/public/img/logos/letsdoeit/bumsbus.png
new file mode 100644
index 00000000..63fb0496
Binary files /dev/null and b/public/img/logos/letsdoeit/bumsbus.png differ
diff --git a/public/img/logos/letsdoeit/doeprojects.png b/public/img/logos/letsdoeit/doeprojects.png
new file mode 100644
index 00000000..831bfeb2
Binary files /dev/null and b/public/img/logos/letsdoeit/doeprojects.png differ
diff --git a/public/img/logos/letsdoeit/favicon.png b/public/img/logos/letsdoeit/favicon.png
new file mode 100644
index 00000000..34fcc9c2
Binary files /dev/null and b/public/img/logos/letsdoeit/favicon.png differ
diff --git a/public/img/logos/letsdoeit/herlimit.png b/public/img/logos/letsdoeit/herlimit.png
index efc1fcda..a4ddf219 100644
Binary files a/public/img/logos/letsdoeit/herlimit.png and b/public/img/logos/letsdoeit/herlimit.png differ
diff --git a/public/img/logos/letsdoeit/hornyhostel.png b/public/img/logos/letsdoeit/hornyhostel.png
new file mode 100644
index 00000000..9cefb766
Binary files /dev/null and b/public/img/logos/letsdoeit/hornyhostel.png differ
diff --git a/public/img/logos/letsdoeit/kinkyinlaws.png b/public/img/logos/letsdoeit/kinkyinlaws.png
new file mode 100644
index 00000000..e77ab689
Binary files /dev/null and b/public/img/logos/letsdoeit/kinkyinlaws.png differ
diff --git a/public/img/logos/letsdoeit/lazy/agirlknows.png b/public/img/logos/letsdoeit/lazy/agirlknows.png
new file mode 100644
index 00000000..92c1e36b
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/agirlknows.png differ
diff --git a/public/img/logos/letsdoeit/lazy/bitchesabroad.png b/public/img/logos/letsdoeit/lazy/bitchesabroad.png
new file mode 100644
index 00000000..f657a1fa
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/bitchesabroad.png differ
diff --git a/public/img/logos/letsdoeit/lazy/bumsbesuch.png b/public/img/logos/letsdoeit/lazy/bumsbesuch.png
new file mode 100644
index 00000000..61b072f4
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/bumsbesuch.png differ
diff --git a/public/img/logos/letsdoeit/lazy/bumsbuero.png b/public/img/logos/letsdoeit/lazy/bumsbuero.png
new file mode 100644
index 00000000..681ef617
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/bumsbuero.png differ
diff --git a/public/img/logos/letsdoeit/lazy/bumsbus.png b/public/img/logos/letsdoeit/lazy/bumsbus.png
new file mode 100644
index 00000000..6f72cd8b
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/bumsbus.png differ
diff --git a/public/img/logos/letsdoeit/lazy/doeprojects.png b/public/img/logos/letsdoeit/lazy/doeprojects.png
new file mode 100644
index 00000000..181f6494
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/doeprojects.png differ
diff --git a/public/img/logos/letsdoeit/lazy/herlimit.png b/public/img/logos/letsdoeit/lazy/herlimit.png
index 24311540..47c48255 100644
Binary files a/public/img/logos/letsdoeit/lazy/herlimit.png and b/public/img/logos/letsdoeit/lazy/herlimit.png differ
diff --git a/public/img/logos/letsdoeit/lazy/hornyhostel.png b/public/img/logos/letsdoeit/lazy/hornyhostel.png
new file mode 100644
index 00000000..344c2962
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/hornyhostel.png differ
diff --git a/public/img/logos/letsdoeit/lazy/kinkyinlaws.png b/public/img/logos/letsdoeit/lazy/kinkyinlaws.png
new file mode 100644
index 00000000..afc73af1
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/kinkyinlaws.png differ
diff --git a/public/img/logos/letsdoeit/lazy/lets-doe-it.png b/public/img/logos/letsdoeit/lazy/lets-doe-it.png
new file mode 100644
index 00000000..02fe3140
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/lets-doe-it.png differ
diff --git a/public/img/logos/letsdoeit/lazy/mynaughtyalbum.png b/public/img/logos/letsdoeit/lazy/mynaughtyalbum.png
new file mode 100644
index 00000000..abe73a2c
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/mynaughtyalbum.png differ
diff --git a/public/img/logos/letsdoeit/lazy/network.png b/public/img/logos/letsdoeit/lazy/network.png
new file mode 100644
index 00000000..578fda74
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/network.png differ
diff --git a/public/img/logos/letsdoeit/lazy/pornoacademie.png b/public/img/logos/letsdoeit/lazy/pornoacademie.png
new file mode 100644
index 00000000..7475ec98
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/pornoacademie.png differ
diff --git a/public/img/logos/letsdoeit/lazy/questfororgasm.png b/public/img/logos/letsdoeit/lazy/questfororgasm.png
new file mode 100644
index 00000000..5bcb9840
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/questfororgasm.png differ
diff --git a/public/img/logos/letsdoeit/lazy/relaxxxed.png b/public/img/logos/letsdoeit/lazy/relaxxxed.png
new file mode 100644
index 00000000..9170075a
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/relaxxxed.png differ
diff --git a/public/img/logos/letsdoeit/lazy/scamangels.png b/public/img/logos/letsdoeit/lazy/scamangels.png
new file mode 100644
index 00000000..624ed274
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/scamangels.png differ
diff --git a/public/img/logos/letsdoeit/lazy/thewhiteboxxx.png b/public/img/logos/letsdoeit/lazy/thewhiteboxxx.png
new file mode 100644
index 00000000..f6125d34
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/thewhiteboxxx.png differ
diff --git a/public/img/logos/letsdoeit/lazy/xchimera.png b/public/img/logos/letsdoeit/lazy/xchimera.png
new file mode 100644
index 00000000..853335df
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/xchimera.png differ
diff --git a/public/img/logos/letsdoeit/lazy/xxxshades.png b/public/img/logos/letsdoeit/lazy/xxxshades.png
new file mode 100644
index 00000000..e683711c
Binary files /dev/null and b/public/img/logos/letsdoeit/lazy/xxxshades.png differ
diff --git a/public/img/logos/letsdoeit/lets-doe-it.png b/public/img/logos/letsdoeit/lets-doe-it.png
new file mode 100644
index 00000000..400e78f3
Binary files /dev/null and b/public/img/logos/letsdoeit/lets-doe-it.png differ
diff --git a/public/img/logos/letsdoeit/misc/a-girl-knows.svg b/public/img/logos/letsdoeit/misc/a-girl-knows.svg
new file mode 100644
index 00000000..82dda888
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/a-girl-knows.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/bitches-abroad.svg b/public/img/logos/letsdoeit/misc/bitches-abroad.svg
new file mode 100644
index 00000000..dfde4d67
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/bitches-abroad.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/bums-besuch.svg b/public/img/logos/letsdoeit/misc/bums-besuch.svg
new file mode 100644
index 00000000..ca0f2022
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/bums-besuch.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/bums-buero.svg b/public/img/logos/letsdoeit/misc/bums-buero.svg
new file mode 100644
index 00000000..1945c86b
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/bums-buero.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/bums-bus.svg b/public/img/logos/letsdoeit/misc/bums-bus.svg
new file mode 100644
index 00000000..85958538
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/bums-bus.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/doe-projects.svg b/public/img/logos/letsdoeit/misc/doe-projects.svg
new file mode 100644
index 00000000..9d807e71
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/doe-projects.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/favicon_border.png b/public/img/logos/letsdoeit/misc/favicon_border.png
new file mode 100644
index 00000000..34fcc9c2
Binary files /dev/null and b/public/img/logos/letsdoeit/misc/favicon_border.png differ
diff --git a/public/img/logos/letsdoeit/misc/favicon_red.png b/public/img/logos/letsdoeit/misc/favicon_red.png
new file mode 100644
index 00000000..dda0e419
Binary files /dev/null and b/public/img/logos/letsdoeit/misc/favicon_red.png differ
diff --git a/public/img/logos/letsdoeit/misc/favicon_transparent.png b/public/img/logos/letsdoeit/misc/favicon_transparent.png
new file mode 100644
index 00000000..e1c69d8d
Binary files /dev/null and b/public/img/logos/letsdoeit/misc/favicon_transparent.png differ
diff --git a/public/img/logos/letsdoeit/misc/her-limit_dark.png b/public/img/logos/letsdoeit/misc/her-limit_dark.png
new file mode 100644
index 00000000..efc1fcda
Binary files /dev/null and b/public/img/logos/letsdoeit/misc/her-limit_dark.png differ
diff --git a/public/img/logos/letsdoeit/misc/horny-hostel.svg b/public/img/logos/letsdoeit/misc/horny-hostel.svg
new file mode 100644
index 00000000..ac83c50e
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/horny-hostel.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/kinky-inlaws.svg b/public/img/logos/letsdoeit/misc/kinky-inlaws.svg
new file mode 100644
index 00000000..236fe7c8
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/kinky-inlaws.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/lets-doe-it.png b/public/img/logos/letsdoeit/misc/lets-doe-it.png
new file mode 100644
index 00000000..3590b873
Binary files /dev/null and b/public/img/logos/letsdoeit/misc/lets-doe-it.png differ
diff --git a/public/img/logos/letsdoeit/misc/lets-doe-it.svg b/public/img/logos/letsdoeit/misc/lets-doe-it.svg
new file mode 100644
index 00000000..d65753f3
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/lets-doe-it.svg
@@ -0,0 +1,110 @@
+
+
diff --git a/public/img/logos/letsdoeit/misc/my-naughty-album.svg b/public/img/logos/letsdoeit/misc/my-naughty-album.svg
new file mode 100644
index 00000000..3b617bd5
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/my-naughty-album.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/porno-academie.svg b/public/img/logos/letsdoeit/misc/porno-academie.svg
new file mode 100644
index 00000000..87206a72
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/porno-academie.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/quest-for-orgasm.svg b/public/img/logos/letsdoeit/misc/quest-for-orgasm.svg
new file mode 100644
index 00000000..38143796
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/quest-for-orgasm.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/relaxxxed.svg b/public/img/logos/letsdoeit/misc/relaxxxed.svg
new file mode 100644
index 00000000..a0186ec6
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/relaxxxed.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/scam-angels.svg b/public/img/logos/letsdoeit/misc/scam-angels.svg
new file mode 100644
index 00000000..422b1f5c
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/scam-angels.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/the-white-boxxx.svg b/public/img/logos/letsdoeit/misc/the-white-boxxx.svg
new file mode 100644
index 00000000..47d8c6af
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/the-white-boxxx.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/x-chimera.svg b/public/img/logos/letsdoeit/misc/x-chimera.svg
new file mode 100644
index 00000000..8072474b
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/x-chimera.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/misc/xxx-shades.svg b/public/img/logos/letsdoeit/misc/xxx-shades.svg
new file mode 100644
index 00000000..4138d4fe
--- /dev/null
+++ b/public/img/logos/letsdoeit/misc/xxx-shades.svg
@@ -0,0 +1 @@
+
diff --git a/public/img/logos/letsdoeit/mynaughtyalbum.png b/public/img/logos/letsdoeit/mynaughtyalbum.png
new file mode 100644
index 00000000..d030ebb2
Binary files /dev/null and b/public/img/logos/letsdoeit/mynaughtyalbum.png differ
diff --git a/public/img/logos/letsdoeit/network.png b/public/img/logos/letsdoeit/network.png
new file mode 100644
index 00000000..273ec308
Binary files /dev/null and b/public/img/logos/letsdoeit/network.png differ
diff --git a/public/img/logos/letsdoeit/pornoacademie.png b/public/img/logos/letsdoeit/pornoacademie.png
new file mode 100644
index 00000000..385c51c6
Binary files /dev/null and b/public/img/logos/letsdoeit/pornoacademie.png differ
diff --git a/public/img/logos/letsdoeit/questfororgasm.png b/public/img/logos/letsdoeit/questfororgasm.png
new file mode 100644
index 00000000..04ab55fc
Binary files /dev/null and b/public/img/logos/letsdoeit/questfororgasm.png differ
diff --git a/public/img/logos/letsdoeit/relaxxxed.png b/public/img/logos/letsdoeit/relaxxxed.png
new file mode 100644
index 00000000..18c271c5
Binary files /dev/null and b/public/img/logos/letsdoeit/relaxxxed.png differ
diff --git a/public/img/logos/letsdoeit/scamangels.png b/public/img/logos/letsdoeit/scamangels.png
new file mode 100644
index 00000000..d07cb2b7
Binary files /dev/null and b/public/img/logos/letsdoeit/scamangels.png differ
diff --git a/public/img/logos/letsdoeit/thewhiteboxxx.png b/public/img/logos/letsdoeit/thewhiteboxxx.png
new file mode 100644
index 00000000..0f707edc
Binary files /dev/null and b/public/img/logos/letsdoeit/thewhiteboxxx.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/agirlknows.png b/public/img/logos/letsdoeit/thumbs/agirlknows.png
new file mode 100644
index 00000000..97f7d2cf
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/agirlknows.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/bitchesabroad.png b/public/img/logos/letsdoeit/thumbs/bitchesabroad.png
new file mode 100644
index 00000000..9ad18259
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/bitchesabroad.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/bumsbesuch.png b/public/img/logos/letsdoeit/thumbs/bumsbesuch.png
new file mode 100644
index 00000000..6efec476
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/bumsbesuch.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/bumsbuero.png b/public/img/logos/letsdoeit/thumbs/bumsbuero.png
new file mode 100644
index 00000000..58d4d206
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/bumsbuero.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/bumsbus.png b/public/img/logos/letsdoeit/thumbs/bumsbus.png
new file mode 100644
index 00000000..c85525ee
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/bumsbus.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/doeprojects.png b/public/img/logos/letsdoeit/thumbs/doeprojects.png
new file mode 100644
index 00000000..cf1d8e30
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/doeprojects.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/herlimit.png b/public/img/logos/letsdoeit/thumbs/herlimit.png
index f457e4ac..8904fef1 100644
Binary files a/public/img/logos/letsdoeit/thumbs/herlimit.png and b/public/img/logos/letsdoeit/thumbs/herlimit.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/hornyhostel.png b/public/img/logos/letsdoeit/thumbs/hornyhostel.png
new file mode 100644
index 00000000..127450df
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/hornyhostel.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/kinkyinlaws.png b/public/img/logos/letsdoeit/thumbs/kinkyinlaws.png
new file mode 100644
index 00000000..14aaf424
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/kinkyinlaws.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/lets-doe-it.png b/public/img/logos/letsdoeit/thumbs/lets-doe-it.png
new file mode 100644
index 00000000..bb024761
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/lets-doe-it.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/mynaughtyalbum.png b/public/img/logos/letsdoeit/thumbs/mynaughtyalbum.png
new file mode 100644
index 00000000..74b4c12d
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/mynaughtyalbum.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/network.png b/public/img/logos/letsdoeit/thumbs/network.png
new file mode 100644
index 00000000..1ae85e42
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/network.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/pornoacademie.png b/public/img/logos/letsdoeit/thumbs/pornoacademie.png
new file mode 100644
index 00000000..f738efaa
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/pornoacademie.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/questfororgasm.png b/public/img/logos/letsdoeit/thumbs/questfororgasm.png
new file mode 100644
index 00000000..977c45ec
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/questfororgasm.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/relaxxxed.png b/public/img/logos/letsdoeit/thumbs/relaxxxed.png
new file mode 100644
index 00000000..2de6c5f8
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/relaxxxed.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/scamangels.png b/public/img/logos/letsdoeit/thumbs/scamangels.png
new file mode 100644
index 00000000..29eea49c
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/scamangels.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/thewhiteboxxx.png b/public/img/logos/letsdoeit/thumbs/thewhiteboxxx.png
new file mode 100644
index 00000000..37610972
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/thewhiteboxxx.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/xchimera.png b/public/img/logos/letsdoeit/thumbs/xchimera.png
new file mode 100644
index 00000000..ba112f57
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/xchimera.png differ
diff --git a/public/img/logos/letsdoeit/thumbs/xxxshades.png b/public/img/logos/letsdoeit/thumbs/xxxshades.png
new file mode 100644
index 00000000..a8d2d351
Binary files /dev/null and b/public/img/logos/letsdoeit/thumbs/xxxshades.png differ
diff --git a/public/img/logos/letsdoeit/xchimera.png b/public/img/logos/letsdoeit/xchimera.png
new file mode 100644
index 00000000..22619884
Binary files /dev/null and b/public/img/logos/letsdoeit/xchimera.png differ
diff --git a/public/img/logos/letsdoeit/xxxshades.png b/public/img/logos/letsdoeit/xxxshades.png
new file mode 100644
index 00000000..c1730a01
Binary files /dev/null and b/public/img/logos/letsdoeit/xxxshades.png differ
diff --git a/public/img/tags/teen/0.jpeg b/public/img/tags/teen/0.jpeg
index de132dae..cb6e9825 100644
Binary files a/public/img/tags/teen/0.jpeg and b/public/img/tags/teen/0.jpeg differ
diff --git a/public/img/tags/teen/lazy/0.jpeg b/public/img/tags/teen/lazy/0.jpeg
index 8c42b34d..06dcf4ab 100644
Binary files a/public/img/tags/teen/lazy/0.jpeg and b/public/img/tags/teen/lazy/0.jpeg differ
diff --git a/public/img/tags/teen/thumbs/0.jpeg b/public/img/tags/teen/thumbs/0.jpeg
index 421d8605..57842883 100644
Binary files a/public/img/tags/teen/thumbs/0.jpeg and b/public/img/tags/teen/thumbs/0.jpeg differ
diff --git a/seeds/00_tags.js b/seeds/00_tags.js
index ff51224d..42e55439 100644
--- a/seeds/00_tags.js
+++ b/seeds/00_tags.js
@@ -447,6 +447,10 @@ const tags = [
priority: 9,
group: 'group',
},
+ {
+ name: 'glamcore',
+ slug: 'glamcore',
+ },
{
name: 'glasses',
slug: 'glasses',
@@ -700,7 +704,7 @@ const tags = [
{
name: 'rough',
slug: 'rough',
- priority: 7,
+ priority: 6,
},
{
name: 'saliva',
@@ -869,6 +873,11 @@ const tags = [
name: 'uniform',
slug: 'uniform',
},
+ {
+ name: 'van',
+ slug: 'van',
+ group: 'location',
+ },
{
name: 'vibrator',
slug: 'vibrator',
@@ -1329,6 +1338,11 @@ const aliases = [
name: 'enhanced tits',
for: 'fake-boobs',
},
+ {
+ name: 'enhanced boobs',
+ for: 'fake-boobs',
+ secondary: true,
+ },
{
name: 'facefuck',
for: 'facefucking',
@@ -1363,9 +1377,8 @@ const aliases = [
secondary: true,
},
{
- name: 'enhanced boobs',
- for: 'fake-boobs',
- secondary: true,
+ name: 'flagellation',
+ for: 'corporal-punishment',
},
{
name: 'flogging',
@@ -1393,6 +1406,10 @@ const aliases = [
name: 'gapes (gaping asshole)',
for: 'gaping',
},
+ {
+ name: 'glam',
+ for: 'glamcore',
+ },
{
name: 'glory hole',
for: 'gloryhole',
@@ -1401,10 +1418,6 @@ const aliases = [
name: 'group sex',
for: 'orgy',
},
- {
- name: 'flagellation',
- for: 'corporal-punishment',
- },
{
name: 'huge tits',
for: 'big-boobs',
@@ -1536,6 +1549,10 @@ const aliases = [
name: 'rough sex',
for: 'rough',
},
+ {
+ name: 'russian pornstar',
+ for: 'russian',
+ },
{
name: 'school girl',
for: 'schoolgirl',
diff --git a/seeds/01_networks.js b/seeds/01_networks.js
index f538acce..2c7bf1b0 100644
--- a/seeds/01_networks.js
+++ b/seeds/01_networks.js
@@ -256,6 +256,11 @@ const networks = [
url: 'https://www.kink.com',
description: 'Authentic Bondage & Real BDSM Porn Videos. Demystifying and celebrating alternative sexuality by providing the most authentic kinky videos. Experience the other side of porn.',
},
+ {
+ slug: 'letsdoeit',
+ name: 'LetsDoeIt',
+ url: 'https://letsdoeit.com',
+ },
{
slug: 'men',
name: 'Men',
diff --git a/seeds/02_sites.js b/seeds/02_sites.js
index 665e45b4..7771bfe7 100644
--- a/seeds/02_sites.js
+++ b/seeds/02_sites.js
@@ -3231,6 +3231,117 @@ const sites = [
independent: true,
parent: 'wgcz',
},
+ // LETS DOE IT
+ {
+ name: 'The White Boxxx',
+ slug: 'thewhiteboxxx',
+ url: 'https://letsdoeit.com/channels/the-white-boxxx.en.html',
+ tags: ['glamcore'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'A Girl Knows',
+ slug: 'agirlknows',
+ url: 'https://letsdoeit.com/channels/a-girl-knows.en.html',
+ tags: ['lesbian'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Her Limit',
+ slug: 'herlimit',
+ url: 'https://letsdoeit.com/channels/her-limit.en.html',
+ tags: ['rough'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Horny Hostel',
+ slug: 'hornyhostel',
+ url: 'https://letsdoeit.com/channels/horny-hostel.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'xChimera',
+ slug: 'xchimera',
+ url: 'https://letsdoeit.com/channels/xchimera.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Scam Angels',
+ slug: 'scamangels',
+ url: 'https://letsdoeit.com/channels/scam-angels.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Bitches Abroad',
+ slug: 'bitchesabroad',
+ url: 'https://letsdoeit.com/channels/bitches-abroad.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Porno Academie',
+ slug: 'pornoacademie',
+ url: 'https://letsdoeit.com/channels/porno-academie.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Bums Bus',
+ slug: 'bumsbus',
+ url: 'https://letsdoeit.com/channels/bums-bus.en.html',
+ tags: ['van'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'XXX Shades',
+ slug: 'xxxshades',
+ url: 'https://letsdoeit.com/channels/xxx-shades.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Doe Projects',
+ slug: 'doeprojects',
+ url: 'https://letsdoeit.com/channels/doe-projects.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Relaxxxed',
+ slug: 'relaxxxed',
+ url: 'https://letsdoeit.com/channels/relaxxxed.en.html',
+ tags: ['van'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Kinky Inlaws',
+ slug: 'kinkyinlaws',
+ url: 'https://letsdoeit.com/channels/kinky-inlaws.en.html',
+ tags: ['family'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'My Naughty Album',
+ slug: 'mynaughtyalbum',
+ url: 'https://letsdoeit.com/channels/my-naughty-album.en.html',
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Bums Buero',
+ slug: 'bumsbuero',
+ url: 'https://letsdoeit.com/channels/bums-buero.en.html',
+ tags: ['office'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Quest For Orgasm',
+ slug: 'questfororgasm',
+ url: 'https://letsdoeit.com/channels/quest-for-orgasm.en.html',
+ tags: ['solo'],
+ parent: 'letsdoeit',
+ },
+ {
+ name: 'Bums Besuch',
+ slug: 'bumsbesuch',
+ url: 'https://letsdoeit.com/channels/bums-besuch.en.html',
+ parent: 'letsdoeit',
+ },
// METRO HD
{
slug: 'devianthardcore',
diff --git a/seeds/04_media.js b/seeds/04_media.js
index 6747da0e..20a556f8 100644
--- a/seeds/04_media.js
+++ b/seeds/04_media.js
@@ -640,7 +640,7 @@ const tagPosters = [
['squirting', 0, 'Veronica Rodriguez in "Hot Latina Squirting" for Jules Jordan'],
['schoolgirl', 1, 'Eliza Ibarra for Brazzers'],
['swallowing', 'poster'],
- ['teen', 0, 'Eva Elfie in "Fresh New Talent" for Club Seventeen'],
+ ['teen', 0, 'Alexa Flexy for Sensual Girl'],
['tattoos', 0, 'Tigerlilly in "Wrapped In Blue" for Suicide Girls'],
['trainbang', 'poster', 'Kali Roses in "Passing Me Around" for Blacked'],
['tap', 'poster', 'Kristy Black in SZ1986 for LegalPorno'],
diff --git a/src/scrapers/letsdoeit.js b/src/scrapers/letsdoeit.js
new file mode 100644
index 00000000..13d85cfd
--- /dev/null
+++ b/src/scrapers/letsdoeit.js
@@ -0,0 +1,131 @@
+'use strict';
+
+const qu = require('../utils/qu');
+const slugify = require('../utils/slugify');
+
+function scrapeAll(scenes) {
+ return scenes.map(({ query }) => {
+ const release = {};
+
+ release.url = query.url('a');
+ release.entryId = release.url.match(/\/watch\/(\d+)/)[1];
+
+ release.title = query.q('.bottom h4', true);
+ release.date = query.date('.extra-info:not(.actors)', 'DD MMMM YYYY');
+
+ release.actors = query.all('.actors a strong', true);
+
+ const poster = query.img('.thumb img');
+ release.poster = [
+ poster.replace('512x288', '1472x828'),
+ poster,
+ ];
+
+ release.teaser = { src: query.video('video-preview') };
+ release.channel = slugify(query.q('.bottom a[href*="/channels"]', 'title'), '');
+
+ return release;
+ });
+}
+
+function scrapeScene({ query }, url) {
+ const release = {};
+
+ release.title = query.q('h1', true);
+ release.entryId = url.match(/\/watch\/(\d+)/)[1];
+
+ release.description = query.meta('name=description') || query.q('read-even-more', true);
+
+ release.date = query.date('.h5-published', 'DD MMMM YYYY', /\d{1,2} \w+ \d{4}/);
+ release.actors = query.all('.video-top-details .actors a[href*="/models"]', true);
+
+ release.duration = query.dur('meta[itemprop="duration"]', null, 'content');
+ release.tags = query.all('.video-top-details a[href*="/categories"], .video-top-details a[href*="/tags"]', true);
+
+ release.poster = query.img('.poster img') || query.meta('itemprop=thumbnailUrl');
+ release.photos = query.imgs('#gallery-thumbs picture img').slice(1).map(photo => [ // first image is poster
+ photo.replace('512x288', '1472x828'),
+ photo,
+ ]);
+
+ release.trailer = {
+ src: query.meta('itemprop=contentURL'),
+ };
+
+ release.channel = slugify(query.q('.video-top-details .actors a[href*="/channels"] strong', true), '');
+
+ return release;
+}
+
+async function fetchActorReleases({ query }, url, page = 1, accReleases = []) {
+ const releases = scrapeAll(qu.initAll(query.all('.main-content .card-video')));
+ const hasNextPage = query.exists('.pages a.active + a');
+
+ if (hasNextPage) {
+ const res = await qu.get(`${url}?page=${page + 1}`);
+
+ if (res.ok) {
+ return fetchActorReleases(res.item, url, page + 1, accReleases.concat(releases));
+ }
+ }
+
+ return accReleases.concat(releases);
+}
+
+async function scrapeProfile({ query }, url, include) {
+ const profile = {};
+
+ const keys = query.all('.col .h4:not(.more-less-actors)', true);
+ const values = query.all('.col .h4-big', true);
+ const bio = keys.reduce((acc, key, index) => ({ ...acc, [slugify(key, '_')]: values[index] }), {});
+
+ const tags = query.all('.more-less-actors a[href*="/tags"], .more-less-actors a[href*="/categories"]', true);
+
+ profile.nationality = bio.nationality;
+ profile.placeOfBirth = bio.birth_place;
+
+ if (/enhanced/i.test(bio.tits_type)) profile.naturalBoobs = false;
+ if (/natural/i.test(bio.tits_type)) profile.naturalBoobs = true;
+
+ if (tags.includes('brunette') || tags.includes('brown hair')) profile.hairColor = 'brown';
+ if (tags.includes('blonde')) profile.hairColor = 'blonde';
+
+ if (tags.includes('tattoo') || tags.includes('tattoos')) profile.hasTattoos = true;
+ if (tags.includes('piercing') || tags.includes('piercings')) profile.hasPiercings = true;
+
+ profile.description = query.q('.more-less-actors read-even-more', true);
+ profile.avatar = query.img('.avatar .thumb img') || null;
+
+ if (include.releases) {
+ profile.releases = await fetchActorReleases({ query }, url);
+ }
+
+ console.log(profile);
+
+ return profile;
+}
+
+async function fetchLatest(channel, page = 1) {
+ const res = await qu.getAll(`${channel.url}?page=${page}`, '.main-content .card-video');
+
+ return res.ok ? scrapeAll(res.items, channel) : res.status;
+}
+
+async function fetchScene(url, channel) {
+ const res = await qu.get(url, '.main-content');
+
+ return res.ok ? scrapeScene(res.item, url, channel) : res.status;
+}
+
+async function fetchProfile(actorName, entity, include) {
+ const url = `http://letsdoeit.com/models/${slugify(actorName)}.en.html`;
+ const res = await qu.get(url);
+
+ return res.ok ? scrapeProfile(res.item, url, include) : res.status;
+}
+
+module.exports = {
+ fetchLatest,
+ fetchScene,
+ fetchProfile,
+};
diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js
index 08d16e03..caad833c 100644
--- a/src/scrapers/scrapers.js
+++ b/src/scrapers/scrapers.js
@@ -31,6 +31,7 @@ const kellymadison = require('./kellymadison');
const killergram = require('./killergram');
const kink = require('./kink');
const legalporno = require('./legalporno');
+const letsdoeit = require('./letsdoeit');
const men = require('./men');
const metrohd = require('./metrohd');
const mikeadriano = require('./mikeadriano');
@@ -105,6 +106,7 @@ module.exports = {
killergram,
kink,
legalporno,
+ letsdoeit,
men,
metrohd,
mikeadriano,
@@ -182,6 +184,7 @@ module.exports = {
killergram,
kink,
legalporno,
+ letsdoeit,
men,
metrohd,
milehighmedia,
diff --git a/src/utils/qu.js b/src/utils/qu.js
index 70adbfbb..92323c9c 100644
--- a/src/utils/qu.js
+++ b/src/utils/qu.js
@@ -185,6 +185,16 @@ function duration(context, selector, match, attr = 'textContent') {
return moment.duration(segments.join(':')).asSeconds();
}
+ const timestampMatch = durationString.match(/T(\d+H)?(\d+M)?\d+S/);
+
+ if (timestampMatch) {
+ const hours = timestampMatch[0].match(/(\d+)H/)?.[1] || 0;
+ const minutes = timestampMatch[0].match(/(\d+)M/)?.[1] || 0;
+ const seconds = timestampMatch[0].match(/(\d+)S/)?.[1] || 0;
+
+ return (Number(hours) * 3600) + (Number(minutes) * 60) + Number(seconds);
+ }
+
return null;
}