diff --git a/public/img/logos/men/bigdicksatschool.png b/public/img/logos/men/bigdicksatschool.png new file mode 100644 index 00000000..ddf75e39 Binary files /dev/null and b/public/img/logos/men/bigdicksatschool.png differ diff --git a/public/img/logos/men/drillmyhole.png b/public/img/logos/men/drillmyhole.png new file mode 100644 index 00000000..1e81ac68 Binary files /dev/null and b/public/img/logos/men/drillmyhole.png differ diff --git a/public/img/logos/men/favicon.png b/public/img/logos/men/favicon.png new file mode 100644 index 00000000..6bbeb176 Binary files /dev/null and b/public/img/logos/men/favicon.png differ diff --git a/public/img/logos/men/godsofmen.png b/public/img/logos/men/godsofmen.png new file mode 100644 index 00000000..f2579a26 Binary files /dev/null and b/public/img/logos/men/godsofmen.png differ diff --git a/public/img/logos/men/jizzorgy.png b/public/img/logos/men/jizzorgy.png new file mode 100644 index 00000000..046b5a65 Binary files /dev/null and b/public/img/logos/men/jizzorgy.png differ diff --git a/public/img/logos/men/menofuk.png b/public/img/logos/men/menofuk.png new file mode 100644 index 00000000..35fc605c Binary files /dev/null and b/public/img/logos/men/menofuk.png differ diff --git a/public/img/logos/men/misc/gods-of-men_original.png b/public/img/logos/men/misc/gods-of-men_original.png new file mode 100644 index 00000000..69c03d51 Binary files /dev/null and b/public/img/logos/men/misc/gods-of-men_original.png differ diff --git a/public/img/logos/men/misc/men_original.png b/public/img/logos/men/misc/men_original.png new file mode 100644 index 00000000..401d66c1 Binary files /dev/null and b/public/img/logos/men/misc/men_original.png differ diff --git a/public/img/logos/men/misc/the-gay-office_original.png b/public/img/logos/men/misc/the-gay-office_original.png new file mode 100644 index 00000000..3d9d7b56 Binary files /dev/null and b/public/img/logos/men/misc/the-gay-office_original.png differ diff --git a/public/img/logos/men/misc/top-to-bottom_original.png b/public/img/logos/men/misc/top-to-bottom_original.png new file mode 100644 index 00000000..e0eb80c9 Binary files /dev/null and b/public/img/logos/men/misc/top-to-bottom_original.png differ diff --git a/public/img/logos/men/network.png b/public/img/logos/men/network.png new file mode 100644 index 00000000..0d14f205 Binary files /dev/null and b/public/img/logos/men/network.png differ diff --git a/public/img/logos/men/str8togay.png b/public/img/logos/men/str8togay.png new file mode 100644 index 00000000..15dc9d9c Binary files /dev/null and b/public/img/logos/men/str8togay.png differ diff --git a/public/img/logos/men/thegayoffice.png b/public/img/logos/men/thegayoffice.png new file mode 100644 index 00000000..be827f40 Binary files /dev/null and b/public/img/logos/men/thegayoffice.png differ diff --git a/public/img/logos/men/toptobottom.png b/public/img/logos/men/toptobottom.png new file mode 100644 index 00000000..603fd5ae Binary files /dev/null and b/public/img/logos/men/toptobottom.png differ diff --git a/public/img/logos/milehighmedia/doghousedigital.png b/public/img/logos/milehighmedia/doghousedigital.png index 5fa021a6..899b541d 100644 Binary files a/public/img/logos/milehighmedia/doghousedigital.png and b/public/img/logos/milehighmedia/doghousedigital.png differ diff --git a/public/img/logos/milehighmedia/favicon.png b/public/img/logos/milehighmedia/favicon.png index c713d865..00f0a1c0 100644 Binary files a/public/img/logos/milehighmedia/favicon.png and b/public/img/logos/milehighmedia/favicon.png differ diff --git a/public/img/logos/milehighmedia/iconmale.png b/public/img/logos/milehighmedia/iconmale.png new file mode 100644 index 00000000..6b566e4b Binary files /dev/null and b/public/img/logos/milehighmedia/iconmale.png differ diff --git a/public/img/logos/milehighmedia/milehighmedia.png b/public/img/logos/milehighmedia/milehighmedia.png index 962f7723..f7b46a20 100644 Binary files a/public/img/logos/milehighmedia/milehighmedia.png and b/public/img/logos/milehighmedia/milehighmedia.png differ diff --git a/public/img/logos/milehighmedia/network.png b/public/img/logos/milehighmedia/network.png index 962f7723..f7b46a20 100644 Binary files a/public/img/logos/milehighmedia/network.png and b/public/img/logos/milehighmedia/network.png differ diff --git a/public/img/logos/milehighmedia/realityjunkies.png b/public/img/logos/milehighmedia/realityjunkies.png index 453a61bf..25df5260 100644 Binary files a/public/img/logos/milehighmedia/realityjunkies.png and b/public/img/logos/milehighmedia/realityjunkies.png differ diff --git a/public/img/logos/milehighmedia/sweetheartvideo.png b/public/img/logos/milehighmedia/sweetheartvideo.png index 2bd786f1..8c0c7661 100644 Binary files a/public/img/logos/milehighmedia/sweetheartvideo.png and b/public/img/logos/milehighmedia/sweetheartvideo.png differ diff --git a/public/img/logos/milehighmedia/sweetsinner.png b/public/img/logos/milehighmedia/sweetsinner.png index 2599b3dd..1cbc190c 100644 Binary files a/public/img/logos/milehighmedia/sweetsinner.png and b/public/img/logos/milehighmedia/sweetsinner.png differ diff --git a/public/img/logos/mindgeek/favicon.png b/public/img/logos/mindgeek/favicon.png new file mode 100644 index 00000000..15667be4 Binary files /dev/null and b/public/img/logos/mindgeek/favicon.png differ diff --git a/public/img/logos/mindgeek/misc/tube-8-vip_original.png b/public/img/logos/mindgeek/misc/tube-8-vip_original.png new file mode 100644 index 00000000..71f891c8 Binary files /dev/null and b/public/img/logos/mindgeek/misc/tube-8-vip_original.png differ diff --git a/public/img/logos/mindgeek/network.png b/public/img/logos/mindgeek/network.png new file mode 100644 index 00000000..5c4186f1 Binary files /dev/null and b/public/img/logos/mindgeek/network.png differ diff --git a/public/img/logos/mindgeek/tube8vip.png b/public/img/logos/mindgeek/tube8vip.png new file mode 100644 index 00000000..00e9e094 Binary files /dev/null and b/public/img/logos/mindgeek/tube8vip.png differ diff --git a/public/img/logos/naughtyamerica/2chickssametime.png b/public/img/logos/naughtyamerica/2chickssametime.png index f72fdb63..6b3ede9c 100644 Binary files a/public/img/logos/naughtyamerica/2chickssametime.png and b/public/img/logos/naughtyamerica/2chickssametime.png differ diff --git a/public/img/logos/naughtyamerica/americandaydreams.png b/public/img/logos/naughtyamerica/americandaydreams.png index 6fd441aa..fa1ae4c8 100644 Binary files a/public/img/logos/naughtyamerica/americandaydreams.png and b/public/img/logos/naughtyamerica/americandaydreams.png differ diff --git a/public/img/logos/naughtyamerica/analcollege.png b/public/img/logos/naughtyamerica/analcollege.png index 433b5e32..4fd24468 100644 Binary files a/public/img/logos/naughtyamerica/analcollege.png and b/public/img/logos/naughtyamerica/analcollege.png differ diff --git a/public/img/logos/naughtyamerica/asian1on1.png b/public/img/logos/naughtyamerica/asian1on1.png index 31c86cdc..37db2ad7 100644 Binary files a/public/img/logos/naughtyamerica/asian1on1.png and b/public/img/logos/naughtyamerica/asian1on1.png differ diff --git a/public/img/logos/naughtyamerica/assmasterpiece.png b/public/img/logos/naughtyamerica/assmasterpiece.png index b4c9fc97..4a6a6f75 100644 Binary files a/public/img/logos/naughtyamerica/assmasterpiece.png and b/public/img/logos/naughtyamerica/assmasterpiece.png differ diff --git a/public/img/logos/naughtyamerica/bigcockbully.png b/public/img/logos/naughtyamerica/bigcockbully.png index 34827a2e..a6df3cbd 100644 Binary files a/public/img/logos/naughtyamerica/bigcockbully.png and b/public/img/logos/naughtyamerica/bigcockbully.png differ diff --git a/public/img/logos/naughtyamerica/bigcockhero.png b/public/img/logos/naughtyamerica/bigcockhero.png index 317dc72c..0b27b5d3 100644 Binary files a/public/img/logos/naughtyamerica/bigcockhero.png and b/public/img/logos/naughtyamerica/bigcockhero.png differ diff --git a/public/img/logos/naughtyamerica/diaryofamilf.png b/public/img/logos/naughtyamerica/diaryofamilf.png index 7a26fe8b..8eff28b9 100644 Binary files a/public/img/logos/naughtyamerica/diaryofamilf.png and b/public/img/logos/naughtyamerica/diaryofamilf.png differ diff --git a/public/img/logos/naughtyamerica/diaryofananny.png b/public/img/logos/naughtyamerica/diaryofananny.png index 0a6e9ef0..6f09a305 100644 Binary files a/public/img/logos/naughtyamerica/diaryofananny.png and b/public/img/logos/naughtyamerica/diaryofananny.png differ diff --git a/public/img/logos/naughtyamerica/dirtywivesclub.png b/public/img/logos/naughtyamerica/dirtywivesclub.png index 0c71f936..b90b78b7 100644 Binary files a/public/img/logos/naughtyamerica/dirtywivesclub.png and b/public/img/logos/naughtyamerica/dirtywivesclub.png differ diff --git a/public/img/logos/naughtyamerica/fasttimes.png b/public/img/logos/naughtyamerica/fasttimes.png index 2106cf98..dcfd08bb 100644 Binary files a/public/img/logos/naughtyamerica/fasttimes.png and b/public/img/logos/naughtyamerica/fasttimes.png differ diff --git a/public/img/logos/naughtyamerica/favicon.png b/public/img/logos/naughtyamerica/favicon.png index 7f886a6f..561799eb 100644 Binary files a/public/img/logos/naughtyamerica/favicon.png and b/public/img/logos/naughtyamerica/favicon.png differ diff --git a/public/img/logos/naughtyamerica/housewife1on1.png b/public/img/logos/naughtyamerica/housewife1on1.png index 31c622ce..363fba34 100644 Binary files a/public/img/logos/naughtyamerica/housewife1on1.png and b/public/img/logos/naughtyamerica/housewife1on1.png differ diff --git a/public/img/logos/naughtyamerica/ihaveawife.png b/public/img/logos/naughtyamerica/ihaveawife.png index d0bceefa..7d1ae0ed 100644 Binary files a/public/img/logos/naughtyamerica/ihaveawife.png and b/public/img/logos/naughtyamerica/ihaveawife.png differ diff --git a/public/img/logos/naughtyamerica/insidenaughtyamerica.png b/public/img/logos/naughtyamerica/insidenaughtyamerica.png index 09ef5cd8..f57cdb51 100644 Binary files a/public/img/logos/naughtyamerica/insidenaughtyamerica.png and b/public/img/logos/naughtyamerica/insidenaughtyamerica.png differ diff --git a/public/img/logos/naughtyamerica/lasluts.png b/public/img/logos/naughtyamerica/lasluts.png index bc03daeb..eaab7aac 100644 Binary files a/public/img/logos/naughtyamerica/lasluts.png and b/public/img/logos/naughtyamerica/lasluts.png differ diff --git a/public/img/logos/naughtyamerica/latinadultery.png b/public/img/logos/naughtyamerica/latinadultery.png index c4b45d4b..bc3612e3 100644 Binary files a/public/img/logos/naughtyamerica/latinadultery.png and b/public/img/logos/naughtyamerica/latinadultery.png differ diff --git a/public/img/logos/naughtyamerica/latinastepmom.png b/public/img/logos/naughtyamerica/latinastepmom.png index 916e5add..82393790 100644 Binary files a/public/img/logos/naughtyamerica/latinastepmom.png and b/public/img/logos/naughtyamerica/latinastepmom.png differ diff --git a/public/img/logos/naughtyamerica/lesbiangirlongirl.png b/public/img/logos/naughtyamerica/lesbiangirlongirl.png index 83333bca..afc68c92 100644 Binary files a/public/img/logos/naughtyamerica/lesbiangirlongirl.png and b/public/img/logos/naughtyamerica/lesbiangirlongirl.png differ diff --git a/public/img/logos/naughtyamerica/livegymcam.png b/public/img/logos/naughtyamerica/livegymcam.png index c436aac0..80cb662a 100644 Binary files a/public/img/logos/naughtyamerica/livegymcam.png and b/public/img/logos/naughtyamerica/livegymcam.png differ diff --git a/public/img/logos/naughtyamerica/livenaughtymilf.png b/public/img/logos/naughtyamerica/livenaughtymilf.png index 97627345..da0d7721 100644 Binary files a/public/img/logos/naughtyamerica/livenaughtymilf.png and b/public/img/logos/naughtyamerica/livenaughtymilf.png differ diff --git a/public/img/logos/naughtyamerica/livenaughtynurse.png b/public/img/logos/naughtyamerica/livenaughtynurse.png index ecc1ccd2..330d81e4 100644 Binary files a/public/img/logos/naughtyamerica/livenaughtynurse.png and b/public/img/logos/naughtyamerica/livenaughtynurse.png differ diff --git a/public/img/logos/naughtyamerica/livenaughtysecretary.png b/public/img/logos/naughtyamerica/livenaughtysecretary.png index c580871a..d0564508 100644 Binary files a/public/img/logos/naughtyamerica/livenaughtysecretary.png and b/public/img/logos/naughtyamerica/livenaughtysecretary.png differ diff --git a/public/img/logos/naughtyamerica/livenaughtystudent.png b/public/img/logos/naughtyamerica/livenaughtystudent.png index 9a667812..4c4b0e33 100644 Binary files a/public/img/logos/naughtyamerica/livenaughtystudent.png and b/public/img/logos/naughtyamerica/livenaughtystudent.png differ diff --git a/public/img/logos/naughtyamerica/livenaughtyteacher.png b/public/img/logos/naughtyamerica/livenaughtyteacher.png index 5faf95ac..c889ff96 100644 Binary files a/public/img/logos/naughtyamerica/livenaughtyteacher.png and b/public/img/logos/naughtyamerica/livenaughtyteacher.png differ diff --git a/public/img/logos/naughtyamerica/livepartygirl.png b/public/img/logos/naughtyamerica/livepartygirl.png index 8dbaa52c..550f031e 100644 Binary files a/public/img/logos/naughtyamerica/livepartygirl.png and b/public/img/logos/naughtyamerica/livepartygirl.png differ diff --git a/public/img/logos/naughtyamerica/milfsugarbabesclassic.png b/public/img/logos/naughtyamerica/milfsugarbabesclassic.png index afc601ac..e4eb1d36 100644 Binary files a/public/img/logos/naughtyamerica/milfsugarbabesclassic.png and b/public/img/logos/naughtyamerica/milfsugarbabesclassic.png differ diff --git a/public/img/logos/naughtyamerica/misc/assmasterpiece_original.png b/public/img/logos/naughtyamerica/misc/assmasterpiece_original.png new file mode 100644 index 00000000..b4c9fc97 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/assmasterpiece_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/bigcockbully_original.png b/public/img/logos/naughtyamerica/misc/bigcockbully_original.png new file mode 100644 index 00000000..34827a2e Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/bigcockbully_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/bigcockhero_original.png b/public/img/logos/naughtyamerica/misc/bigcockhero_original.png new file mode 100644 index 00000000..317dc72c Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/bigcockhero_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/diaryofamilf_original.png b/public/img/logos/naughtyamerica/misc/diaryofamilf_original.png new file mode 100644 index 00000000..7a26fe8b Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/diaryofamilf_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/favicon_old.png b/public/img/logos/naughtyamerica/misc/favicon_old.png new file mode 100644 index 00000000..4b92fad6 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/favicon_old.png differ diff --git a/public/img/logos/naughtyamerica/misc/housewife1on1_original.png b/public/img/logos/naughtyamerica/misc/housewife1on1_original.png new file mode 100644 index 00000000..31c622ce Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/housewife1on1_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/latinadultery_original.png b/public/img/logos/naughtyamerica/misc/latinadultery_original.png new file mode 100644 index 00000000..c4b45d4b Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/latinadultery_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/livegymcam_original.png b/public/img/logos/naughtyamerica/misc/livegymcam_original.png new file mode 100644 index 00000000..c436aac0 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/livegymcam_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/livenaughtymilf_original.png b/public/img/logos/naughtyamerica/misc/livenaughtymilf_original.png new file mode 100644 index 00000000..97627345 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/livenaughtymilf_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/livenaughtysecretary_original.png b/public/img/logos/naughtyamerica/misc/livenaughtysecretary_original.png new file mode 100644 index 00000000..c580871a Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/livenaughtysecretary_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/livenaughtystudent_original.png b/public/img/logos/naughtyamerica/misc/livenaughtystudent_original.png new file mode 100644 index 00000000..9a667812 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/livenaughtystudent_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/livepartygirl_original.png b/public/img/logos/naughtyamerica/misc/livepartygirl_original.png new file mode 100644 index 00000000..8dbaa52c Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/livepartygirl_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/milfsugarbabesclassic_original.png b/public/img/logos/naughtyamerica/misc/milfsugarbabesclassic_original.png new file mode 100644 index 00000000..afc601ac Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/milfsugarbabesclassic_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/momshoney_original.png b/public/img/logos/naughtyamerica/misc/momshoney_original.png new file mode 100644 index 00000000..d760df0b Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/momshoney_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/mydadshotgirlfriend_original.png b/public/img/logos/naughtyamerica/misc/mydadshotgirlfriend_original.png new file mode 100644 index 00000000..866b06c7 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/mydadshotgirlfriend_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/mydaughtershotfriend_original.png b/public/img/logos/naughtyamerica/misc/mydaughtershotfriend_original.png new file mode 100644 index 00000000..ed480782 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/mydaughtershotfriend_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/myfirstsexteacher_original.png b/public/img/logos/naughtyamerica/misc/myfirstsexteacher_original.png new file mode 100644 index 00000000..9d10fc39 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/myfirstsexteacher_original.png differ diff --git a/public/img/logos/naughtyamerica/misc/naughty-america_original.png b/public/img/logos/naughtyamerica/misc/naughty-america_original.png new file mode 100644 index 00000000..59c07315 Binary files /dev/null and b/public/img/logos/naughtyamerica/misc/naughty-america_original.png differ diff --git a/public/img/logos/naughtyamerica/momshoney.png b/public/img/logos/naughtyamerica/momshoney.png index d760df0b..7df33bf7 100644 Binary files a/public/img/logos/naughtyamerica/momshoney.png and b/public/img/logos/naughtyamerica/momshoney.png differ diff --git a/public/img/logos/naughtyamerica/mydadshotgirlfriend.png b/public/img/logos/naughtyamerica/mydadshotgirlfriend.png index 866b06c7..c56d976c 100644 Binary files a/public/img/logos/naughtyamerica/mydadshotgirlfriend.png and b/public/img/logos/naughtyamerica/mydadshotgirlfriend.png differ diff --git a/public/img/logos/naughtyamerica/mydaughtershotfriend.png b/public/img/logos/naughtyamerica/mydaughtershotfriend.png index ed480782..314a9ad1 100644 Binary files a/public/img/logos/naughtyamerica/mydaughtershotfriend.png and b/public/img/logos/naughtyamerica/mydaughtershotfriend.png differ diff --git a/public/img/logos/naughtyamerica/myfirstsexteacher.png b/public/img/logos/naughtyamerica/myfirstsexteacher.png index 9d10fc39..e7a09f84 100644 Binary files a/public/img/logos/naughtyamerica/myfirstsexteacher.png and b/public/img/logos/naughtyamerica/myfirstsexteacher.png differ diff --git a/public/img/logos/naughtyamerica/myfriendshotgirl.png b/public/img/logos/naughtyamerica/myfriendshotgirl.png index 1a7962df..d8c3b449 100644 Binary files a/public/img/logos/naughtyamerica/myfriendshotgirl.png and b/public/img/logos/naughtyamerica/myfriendshotgirl.png differ diff --git a/public/img/logos/naughtyamerica/myfriendshotmom.png b/public/img/logos/naughtyamerica/myfriendshotmom.png index 21b90029..a171fb04 100644 Binary files a/public/img/logos/naughtyamerica/myfriendshotmom.png and b/public/img/logos/naughtyamerica/myfriendshotmom.png differ diff --git a/public/img/logos/naughtyamerica/mygirlfriendsbustyfriend.png b/public/img/logos/naughtyamerica/mygirlfriendsbustyfriend.png index 71bca2e7..137a3209 100644 Binary files a/public/img/logos/naughtyamerica/mygirlfriendsbustyfriend.png and b/public/img/logos/naughtyamerica/mygirlfriendsbustyfriend.png differ diff --git a/public/img/logos/naughtyamerica/mygirllovesanal.png b/public/img/logos/naughtyamerica/mygirllovesanal.png index 721a9e6c..b22dc2c6 100644 Binary files a/public/img/logos/naughtyamerica/mygirllovesanal.png and b/public/img/logos/naughtyamerica/mygirllovesanal.png differ diff --git a/public/img/logos/naughtyamerica/mynaughtylatinmaid.png b/public/img/logos/naughtyamerica/mynaughtylatinmaid.png index badf4cd2..521e841e 100644 Binary files a/public/img/logos/naughtyamerica/mynaughtylatinmaid.png and b/public/img/logos/naughtyamerica/mynaughtylatinmaid.png differ diff --git a/public/img/logos/naughtyamerica/mynaughtymassage.png b/public/img/logos/naughtyamerica/mynaughtymassage.png index f6617a7d..144ed1bd 100644 Binary files a/public/img/logos/naughtyamerica/mynaughtymassage.png and b/public/img/logos/naughtyamerica/mynaughtymassage.png differ diff --git a/public/img/logos/naughtyamerica/mysistershotfriend.png b/public/img/logos/naughtyamerica/mysistershotfriend.png index 788d1461..60c610cf 100644 Binary files a/public/img/logos/naughtyamerica/mysistershotfriend.png and b/public/img/logos/naughtyamerica/mysistershotfriend.png differ diff --git a/public/img/logos/naughtyamerica/mywifeismypornstar.png b/public/img/logos/naughtyamerica/mywifeismypornstar.png index 980cbfd0..00c51234 100644 Binary files a/public/img/logos/naughtyamerica/mywifeismypornstar.png and b/public/img/logos/naughtyamerica/mywifeismypornstar.png differ diff --git a/public/img/logos/naughtyamerica/mywifeshotfriend.png b/public/img/logos/naughtyamerica/mywifeshotfriend.png index a54cc435..c1b59fcc 100644 Binary files a/public/img/logos/naughtyamerica/mywifeshotfriend.png and b/public/img/logos/naughtyamerica/mywifeshotfriend.png differ diff --git a/public/img/logos/naughtyamerica/naughtyamerica.png b/public/img/logos/naughtyamerica/naughtyamerica.png index 59c07315..86c5f434 100644 Binary files a/public/img/logos/naughtyamerica/naughtyamerica.png and b/public/img/logos/naughtyamerica/naughtyamerica.png differ diff --git a/public/img/logos/naughtyamerica/naughtyathletics.png b/public/img/logos/naughtyamerica/naughtyathletics.png index 5e1ddc54..9e331da9 100644 Binary files a/public/img/logos/naughtyamerica/naughtyathletics.png and b/public/img/logos/naughtyamerica/naughtyathletics.png differ diff --git a/public/img/logos/naughtyamerica/naughtybookworms.png b/public/img/logos/naughtyamerica/naughtybookworms.png index 729e20da..22855ead 100644 Binary files a/public/img/logos/naughtyamerica/naughtybookworms.png and b/public/img/logos/naughtyamerica/naughtybookworms.png differ diff --git a/public/img/logos/naughtyamerica/naughtycountrygirls.png b/public/img/logos/naughtyamerica/naughtycountrygirls.png index 5a7ff263..ed972376 100644 Binary files a/public/img/logos/naughtyamerica/naughtycountrygirls.png and b/public/img/logos/naughtyamerica/naughtycountrygirls.png differ diff --git a/public/img/logos/naughtyamerica/naughtyflipside.png b/public/img/logos/naughtyamerica/naughtyflipside.png index bca1d1a9..ee7061df 100644 Binary files a/public/img/logos/naughtyamerica/naughtyflipside.png and b/public/img/logos/naughtyamerica/naughtyflipside.png differ diff --git a/public/img/logos/naughtyamerica/naughtyoffice.png b/public/img/logos/naughtyamerica/naughtyoffice.png index aadaac61..c6a63fa6 100644 Binary files a/public/img/logos/naughtyamerica/naughtyoffice.png and b/public/img/logos/naughtyamerica/naughtyoffice.png differ diff --git a/public/img/logos/naughtyamerica/naughtyrichgirls.png b/public/img/logos/naughtyamerica/naughtyrichgirls.png index aeeaa72f..43e5643f 100644 Binary files a/public/img/logos/naughtyamerica/naughtyrichgirls.png and b/public/img/logos/naughtyamerica/naughtyrichgirls.png differ diff --git a/public/img/logos/naughtyamerica/naughtyweddings.png b/public/img/logos/naughtyamerica/naughtyweddings.png index 8a6249aa..5f68ba35 100644 Binary files a/public/img/logos/naughtyamerica/naughtyweddings.png and b/public/img/logos/naughtyamerica/naughtyweddings.png differ diff --git a/public/img/logos/naughtyamerica/neighboraffair.png b/public/img/logos/naughtyamerica/neighboraffair.png index b8c34971..ead263b5 100644 Binary files a/public/img/logos/naughtyamerica/neighboraffair.png and b/public/img/logos/naughtyamerica/neighboraffair.png differ diff --git a/public/img/logos/naughtyamerica/network.png b/public/img/logos/naughtyamerica/network.png index 064dfef2..86c5f434 100644 Binary files a/public/img/logos/naughtyamerica/network.png and b/public/img/logos/naughtyamerica/network.png differ diff --git a/public/img/logos/naughtyamerica/openfamily.png b/public/img/logos/naughtyamerica/openfamily.png index 8a6e3dd7..a24fccac 100644 Binary files a/public/img/logos/naughtyamerica/openfamily.png and b/public/img/logos/naughtyamerica/openfamily.png differ diff --git a/public/img/logos/naughtyamerica/perfectfuckingstrangersclassic.png b/public/img/logos/naughtyamerica/perfectfuckingstrangersclassic.png index dae5e246..68bedf57 100644 Binary files a/public/img/logos/naughtyamerica/perfectfuckingstrangersclassic.png and b/public/img/logos/naughtyamerica/perfectfuckingstrangersclassic.png differ diff --git a/public/img/logos/naughtyamerica/seducedbyacougar.png b/public/img/logos/naughtyamerica/seducedbyacougar.png index d259b844..c60d110f 100644 Binary files a/public/img/logos/naughtyamerica/seducedbyacougar.png and b/public/img/logos/naughtyamerica/seducedbyacougar.png differ diff --git a/public/img/logos/naughtyamerica/showmybf.png b/public/img/logos/naughtyamerica/showmybf.png index 7e14d47d..5363fa35 100644 Binary files a/public/img/logos/naughtyamerica/showmybf.png and b/public/img/logos/naughtyamerica/showmybf.png differ diff --git a/public/img/logos/naughtyamerica/sleazystepdad.png b/public/img/logos/naughtyamerica/sleazystepdad.png index 35af505b..f745b0a9 100644 Binary files a/public/img/logos/naughtyamerica/sleazystepdad.png and b/public/img/logos/naughtyamerica/sleazystepdad.png differ diff --git a/public/img/logos/naughtyamerica/slutstepmom.png b/public/img/logos/naughtyamerica/slutstepmom.png index 313a892a..f3f1b3c8 100644 Binary files a/public/img/logos/naughtyamerica/slutstepmom.png and b/public/img/logos/naughtyamerica/slutstepmom.png differ diff --git a/public/img/logos/naughtyamerica/slutstepsister.png b/public/img/logos/naughtyamerica/slutstepsister.png index 5f9fad6d..7c76d02e 100644 Binary files a/public/img/logos/naughtyamerica/slutstepsister.png and b/public/img/logos/naughtyamerica/slutstepsister.png differ diff --git a/public/img/logos/naughtyamerica/socalcoeds.png b/public/img/logos/naughtyamerica/socalcoeds.png index ffd1536e..3ec9378d 100644 Binary files a/public/img/logos/naughtyamerica/socalcoeds.png and b/public/img/logos/naughtyamerica/socalcoeds.png differ diff --git a/public/img/logos/naughtyamerica/teenslovecream.png b/public/img/logos/naughtyamerica/teenslovecream.png index e281ec65..c73d28a9 100644 Binary files a/public/img/logos/naughtyamerica/teenslovecream.png and b/public/img/logos/naughtyamerica/teenslovecream.png differ diff --git a/public/img/logos/naughtyamerica/thepassenger.png b/public/img/logos/naughtyamerica/thepassenger.png index de2d1b01..94f0116f 100644 Binary files a/public/img/logos/naughtyamerica/thepassenger.png and b/public/img/logos/naughtyamerica/thepassenger.png differ diff --git a/public/img/logos/naughtyamerica/tonightsfuck.png b/public/img/logos/naughtyamerica/tonightsfuck.png index 2046e889..089134dd 100644 Binary files a/public/img/logos/naughtyamerica/tonightsfuck.png and b/public/img/logos/naughtyamerica/tonightsfuck.png differ diff --git a/public/img/logos/naughtyamerica/tonightsgirlfriendclassic.png b/public/img/logos/naughtyamerica/tonightsgirlfriendclassic.png index dad07cb8..a6488511 100644 Binary files a/public/img/logos/naughtyamerica/tonightsgirlfriendclassic.png and b/public/img/logos/naughtyamerica/tonightsgirlfriendclassic.png differ diff --git a/public/img/logos/naughtyamerica/watchyourmom.png b/public/img/logos/naughtyamerica/watchyourmom.png index 0627949a..70da097f 100644 Binary files a/public/img/logos/naughtyamerica/watchyourmom.png and b/public/img/logos/naughtyamerica/watchyourmom.png differ diff --git a/public/img/logos/naughtyamerica/watchyourwife.png b/public/img/logos/naughtyamerica/watchyourwife.png index 9ed7d401..12926d09 100644 Binary files a/public/img/logos/naughtyamerica/watchyourwife.png and b/public/img/logos/naughtyamerica/watchyourwife.png differ diff --git a/public/img/logos/naughtyamerica/wivesonvacation.png b/public/img/logos/naughtyamerica/wivesonvacation.png index d61fa16c..a917b595 100644 Binary files a/public/img/logos/naughtyamerica/wivesonvacation.png and b/public/img/logos/naughtyamerica/wivesonvacation.png differ diff --git a/public/img/logos/puretaboo/favicon.png b/public/img/logos/puretaboo/favicon.png new file mode 100644 index 00000000..adaba32b Binary files /dev/null and b/public/img/logos/puretaboo/favicon.png differ diff --git a/public/img/logos/puretaboo/network.png b/public/img/logos/puretaboo/network.png new file mode 100644 index 00000000..fc514ec0 Binary files /dev/null and b/public/img/logos/puretaboo/network.png differ diff --git a/public/img/logos/puretaboo/puretaboo.png b/public/img/logos/puretaboo/puretaboo.png new file mode 100644 index 00000000..6a54691e Binary files /dev/null and b/public/img/logos/puretaboo/puretaboo.png differ diff --git a/seeds/00_networks.js b/seeds/00_networks.js index 9fb4f863..29237e46 100644 --- a/seeds/00_networks.js +++ b/seeds/00_networks.js @@ -101,6 +101,12 @@ const networks = [ url: 'https://www.legalporno.com', description: 'The Best HD Porn For You!', }, + { + slug: 'men', + name: 'Men', + url: 'https://www.men.com', + description: 'Check out the best gay porn site on the net with daily updates, award-winning original series, exclusive Men.com models and over 800 of the hottest guys in gay porn.', + }, { slug: 'mikeadriano', name: 'Mike Adriano', @@ -113,6 +119,12 @@ const networks = [ url: 'https://www.milehighmedia.com', description: 'MileHighMedia.com is the only niche porn network you need! Watch lesbian sex, hardcore fucking and family porn stories with the hottest teens & MILFs!', }, + { + slug: 'mindgeek', + name: 'Mind Geek', + url: 'https://www.mindgeek.com', + description: '', + }, { slug: 'mofos', name: 'MOFOS', @@ -149,6 +161,12 @@ const networks = [ url: 'https://www.private.com', description: 'Private is the best source for adult movies and videos. Featuring the most popular hardcore adult stars in hundreds of porn movies, Private.com delivers...', }, + { + slug: 'puretaboo', + name: 'Pure Taboo', + url: 'https://www.puretaboo.com', + description: 'PureTaboo.com is the ultimate site for family taboo porn, featuring submissive teens & virgins in rough sex videos in ultra 4k HD.', + }, { slug: 'realitykings', name: 'Reality Kings', diff --git a/seeds/01_sites.js b/seeds/01_sites.js index eb535db9..ba6ab33b 100644 --- a/seeds/01_sites.js +++ b/seeds/01_sites.js @@ -1643,6 +1643,80 @@ function getSites(networksMap) { parameters: JSON.stringify({ siteId: 309 }), network_id: networksMap.metrohd, }, + // MEN + { + slug: 'bigdicksatschool', + name: 'Big Dicks At School', + url: 'https://www.bigdicksatschool.com', + description: '', + parameters: JSON.stringify({ siteId: 252 }), + network_id: networksMap.men, + }, + { + slug: 'drillmyhole', + name: 'Drill My Hole', + url: 'https://www.drillmyhole.com', + description: '', + parameters: JSON.stringify({ siteId: 253 }), + network_id: networksMap.men, + }, + { + slug: 'str8togay', + name: 'Str8 to Gay', + url: 'https://www.str8togay.com', + description: '', + parameters: JSON.stringify({ siteId: 254 }), + network_id: networksMap.men, + }, + { + slug: 'thegayoffice', + name: 'The Gay Office', + url: 'https://www.thegayoffice.com', + description: '', + parameters: JSON.stringify({ siteId: 255 }), + network_id: networksMap.men, + }, + { + slug: 'jizzorgy', + name: 'Jizz Orgy', + url: 'https://www.jizzorgy.com', + description: '', + parameters: JSON.stringify({ siteId: 256 }), + network_id: networksMap.men, + }, + { + slug: 'menofuk', + name: 'Men of UK', + url: 'https://www.menofuk.com', + description: '', + parameters: JSON.stringify({ siteId: 258 }), + network_id: networksMap.men, + }, + { + slug: 'toptobottom', + name: 'Top to Bottom', + url: 'https://www.toptobottom.com', + description: '', + parameters: JSON.stringify({ siteId: 259 }), + network_id: networksMap.men, + }, + { + slug: 'godsofmen', + name: 'Gods of Men', + url: 'https://www.godsofmen.com', + description: '', + parameters: JSON.stringify({ siteId: 260 }), + network_id: networksMap.men, + }, + // MINDGEEK + { + slug: 'tube8vip', + name: 'Tube8Vip', + url: 'https://www.tube8vip.com', + description: '', + parameters: JSON.stringify({ native: true }), + network_id: networksMap.mindgeek, + }, // MIKE ADRIANO { slug: 'trueanal', @@ -1707,6 +1781,13 @@ function getSites(networksMap) { parameters: JSON.stringify({ siteId: 326 }), network_id: networksMap.milehighmedia, }, + { + slug: 'iconmale', + name: 'Icon Male', + url: 'https://www.iconmale.com', + parameters: JSON.stringify({ native: true }), + network_id: networksMap.milehighmedia, + }, // MOFOS { slug: 'girlsgonepink', @@ -2517,12 +2598,21 @@ function getSites(networksMap) { url: 'https://www.private.com/site/private-stars', network_id: networksMap.private, }, + // PURE TABOO + { + slug: 'puretaboo', + name: 'Pure Taboo', + url: 'https://www.puretaboo.com', + description: 'PureTaboo.com is the ultimate site for family taboo porn, featuring submissive teens & virgins in rough sex videos in ultra 4k HD. ', + parameters: JSON.stringify({ independent: true }), + network_id: networksMap.puretaboo, + }, // REALITY KINGS { name: 'Look At Her Now', url: 'https://www.lookathernow.com', description: 'Look At Her Now brings you best HD reality porn videos every week. Check out these girls before and after they get some rough pounding.', - parameters: JSON.stringify({ classic: true }), + parameters: JSON.stringify({ native: true }), // parameters: JSON.stringify({ siteId: 300 }), slug: 'lookathernow', network_id: networksMap.realitykings, @@ -2907,7 +2997,7 @@ function getSites(networksMap) { name: 'Tranny Surprise', url: 'https://www.trannysurprise.com', description: 'If you’re in the mood for graphic tranny porn, look no further than TrannySurprise.com. A sexy shemale is a thing of beauty, often possessing a voracious appetite for sex. Reality Kings is home to some of the most incredible transsexual pornstars on the net. Watch them stroke their huge dicks and massage their voluminous ball sacks in our full-length HD videos. All these goddesses want to do is suck dick until it erupts in their wide open mouths. Cum swallowing is their specialty so enjoy our scenes full of creamy jizz loads overflowing onto their giant tits and firm stomachs. These nude RK shemales live to get rimjobs before getting drilled by gigantic dicks. Messy creampies are usually how their nights end so witness the torrid fuck marathons leading up to juicy orgasms. Tranny Surprise features sensual ladyboys that know just how to please anyone looking to take a walk on the wild side. Premium porno is what you deserve so eat it all up with our luscious, busty trannies. Long legs, tight asses, toned physiques, and a healthy dose of raw animal passion is what our “chicks with dicks” deliver in every one of our erotic films.', - parameters: JSON.stringify({ classic: true }), + parameters: JSON.stringify({ native: true }), slug: 'trannysurprise', network_id: networksMap.realitykings, }, diff --git a/seeds/03_tags.js b/seeds/03_tags.js index e1952e4c..90731f89 100644 --- a/seeds/03_tags.js +++ b/seeds/03_tags.js @@ -1612,6 +1612,7 @@ function getTagAliases(tagsMap) { function getSiteTags() { return { allblackx: ['ebony', 'bbc'], + bigdicksatschool: ['gay'], boundgods: ['gay'], buttmachineboys: ['gay'], cum4k: ['fake-cum', 'creampie', '4k'], @@ -1620,26 +1621,34 @@ function getSiteTags() { devianthardcore: ['bdsm'], divinebitches: ['femdom'], dpparodies: ['parody'], + drillmyhole: ['gay'], eighteenyearsold: ['teen'], exotic4k: ['4k'], familyhookups: ['family'], familystrokes: ['family'], - givemepink: ['solo', 'masturbation'], girlgrind: ['lesbian'], + givemepink: ['solo', 'masturbation'], + godsofmen: ['gay'], + iconmale: ['gay'], + jizzorgy: ['gay'], kinkyspa: ['massage'], lesbianx: ['lesbian'], lubed: ['oil'], massagecreep: ['massage'], + menofuk: ['gay'], menonedge: ['gay'], povd: ['pov'], puremature: ['milf'], spermswap: ['cum-swapping'], spyfam: ['family'], + str8togay: ['gay'], submissived: ['bdsm'], swallowed: ['blowjob', 'deepthroat', 'facefucking'], teenallanal: ['anal', 'mff'], teenbff: ['mff'], + thegayoffice: ['gay'], tiny4k: ['4k'], + toptobottom: ['gay'], trueanal: ['anal'], tspussyhunters: ['transsexual'], }; diff --git a/src/media.js b/src/media.js index fb2041c4..ef042706 100644 --- a/src/media.js +++ b/src/media.js @@ -36,6 +36,12 @@ function pluckPhotos(photos, specifiedLimit) { return Array.from(new Set(plucked)).map(photoIndex => photos[photoIndex - 1]); // remove duplicates, may happen when photo total and photo limit are close } +async function getEntropy(buffer) { + const { entropy } = await sharp(buffer).stats(); + + return entropy; +} + async function createThumbnail(buffer) { try { const thumbnail = sharp(buffer) @@ -108,19 +114,20 @@ async function fetchPhoto(photoUrl, index, label, attempt = 1) { try { const { pathname } = new URL(photoUrl); - const mimetype = mime.getType(pathname); - const res = await bhttp.get(photoUrl); if (res.statusCode === 200) { + const mimetype = mime.getType(pathname); const extension = mime.getExtension(mimetype); const hash = getHash(res.body); + const entropy = await getEntropy(res.body); return { photo: res.body, mimetype, extension, hash, + entropy, source: photoUrl, }; } @@ -181,6 +188,7 @@ async function storePhotos(photos, { targetId, subpath, primaryRole, // role to assign to first photo if not already in database, used mainly for avatars + entropy = 2.5, // filter out fallback avatars and other generic clipart }, label) { if (!photos || photos.length === 0) { logger.info(`No ${role}s available for ${label}`); @@ -192,7 +200,7 @@ async function storePhotos(photos, { const metaFiles = await Promise.map(sourceOriginals, async (photoUrl, index) => fetchPhoto(photoUrl, index, label), { concurrency: 10, - }).filter(photo => photo); + }).filter(photo => photo && photo.entropy > entropy); const metaFilesByHash = metaFiles.reduce((acc, photo) => ({ ...acc, [photo.hash]: photo }), {}); // pre-filter hash duplicates within set; may occur through fallbacks const [hashDuplicates, hashOriginals] = await findDuplicates(Object.values(metaFilesByHash), 'hash', 'hash', label); diff --git a/src/scrape-sites.js b/src/scrape-sites.js index d1645c71..512a8035 100644 --- a/src/scrape-sites.js +++ b/src/scrape-sites.js @@ -79,7 +79,7 @@ async function deepFetchReleases(baseReleases) { deep: true, }; } catch (error) { - logger.error(error.message); + logger.error(error.stack); return { ...release, diff --git a/src/scrapers/gamma.js b/src/scrapers/gamma.js index 7afe3fad..f1de3b11 100644 --- a/src/scrapers/gamma.js +++ b/src/scrapers/gamma.js @@ -139,8 +139,55 @@ async function fetchProfile(actorName, siteSlug, altSearchUrl) { return null; } +async function fetchApiCredentials(referer) { + const res = await bhttp.get(referer); + const body = res.body.toString(); + + const apiLine = body.split('\n').find(bodyLine => bodyLine.match('apiKey')); + const apiSerial = apiLine.slice(apiLine.indexOf('{'), apiLine.indexOf('};') + 1); + const apiData = JSON.parse(apiSerial); + + const { applicationID: appId, apiKey } = apiData.api.algolia; + const userAgent = 'Algolia for vanilla JavaScript (lite) 3.27.0;instantsearch.js 2.7.4;JS Helper 2.26.0'; + + const apiUrl = `https://${appId.toLowerCase()}-dsn.algolia.net/1/indexes/*/queries?x-algolia-agent=${userAgent}&x-algolia-application-id=${appId}&x-algolia-api-key=${apiKey}`; + + return { + appId, + apiKey, + userAgent, + apiUrl, + }; +} + +async function fetchLatest(site, page = 1, upcoming = false) { + const referer = `${site.url}/en/videos`; + const { apiUrl } = await fetchApiCredentials(referer); + + console.log(referer); + + const res = await bhttp.post(apiUrl, { + requests: [ + { + indexName: 'all_scenes', + params: `query=&hitsPerPage=36&maxValuesPerFacet=100&page=${page - 1}&facetFilters=[["lesbian:"],["bisex:"],["shemale:"],["upcoming:${upcoming ? 1 : 0}"]]`, + }, + ], + }, { + headers: { + Referer: referer, + }, + encodeJSON: true, + }); + + console.log(res.body.results); + + // return scrape(res.body.results[0].hits, site); +} + module.exports = { getPhotos, fetchProfile, scrapeProfile, + fetchLatest, }; diff --git a/src/scrapers/iconmale.js b/src/scrapers/iconmale.js new file mode 100644 index 00000000..a41736a9 --- /dev/null +++ b/src/scrapers/iconmale.js @@ -0,0 +1,11 @@ +'use strict'; + +const { fetchProfile } = require('./mindgeek'); + +async function networkFetchProfile(actorName) { + return fetchProfile(actorName, 'iconmale'); +} + +module.exports = { + fetchProfile: networkFetchProfile, +}; diff --git a/src/scrapers/men.js b/src/scrapers/men.js new file mode 100644 index 00000000..9952d89e --- /dev/null +++ b/src/scrapers/men.js @@ -0,0 +1,13 @@ +'use strict'; + +const { fetchScene, fetchLatest, fetchProfile } = require('./mindgeek'); + +async function networkFetchProfile(actorName) { + return fetchProfile(actorName, 'men'); +} + +module.exports = { + fetchLatest, + fetchScene, + fetchProfile: networkFetchProfile, +}; diff --git a/src/scrapers/mindgeek.js b/src/scrapers/mindgeek.js index 49d4c44e..b96915cc 100644 --- a/src/scrapers/mindgeek.js +++ b/src/scrapers/mindgeek.js @@ -27,7 +27,7 @@ function getThumbs(scene) { function scrapeLatestX(data, site) { const { id: entryId, title, description } = data; - const hostname = site.parameters?.classic ? site.url : site.network.url; + const hostname = site.parameters?.native ? site.url : site.network.url; const url = `${hostname}/scene/${entryId}/`; const date = new Date(data.dateReleased); const actors = data.actors.map(actor => actor.name); @@ -100,7 +100,12 @@ function getUrl(site) { return site.url; } - if (site.parameters && site.parameters.siteId) { + if (site.parameters?.native) { + return `${site.url}/scenes`; + } + + + if (site.parameters?.siteId) { return `${site.network.url}/scenes?site=${site.parameters.siteId}`; } @@ -161,14 +166,23 @@ async function fetchLatest(site, page = 1) { const beforeDate = moment().add('1', 'day').format('YYYY-MM-DD'); const limit = 10; - const apiUrl = `https://site-api.project1service.com/v2/releases?collectionId=${siteId}&dateReleased=<${beforeDate}&limit=${limit}&offset=${limit * (page - 1)}&orderBy=-dateReleased&type=scene`; + const apiUrl = site.parameters?.native + ? `https://site-api.project1service.com/v2/releases?dateReleased=<${beforeDate}&limit=${limit}&offset=${limit * (page - 1)}&orderBy=-dateReleased&type=scene` + : `https://site-api.project1service.com/v2/releases?collectionId=${siteId}&dateReleased=<${beforeDate}&limit=${limit}&offset=${limit * (page - 1)}&orderBy=-dateReleased&type=scene`; + const res = await session.get(apiUrl, { headers: { Instance: instanceToken, + Origin: site.url, + Referer: url, }, }); - return scrapeLatest(res.body.result, site); + if (res.statusCode === 200 && res.body.result) { + return scrapeLatest(res.body.result, site); + } + + return null; } async function fetchScene(url, site) { @@ -181,7 +195,11 @@ async function fetchScene(url, site) { }, }); - return scrapeScene(res.body.result, url, site); + if (res.statusCode === 200 && res.body.result) { + return scrapeScene(res.body.result, url, site); + } + + return null; } async function fetchProfile(actorName, networkName, actorPath = 'model') { diff --git a/src/scrapers/puretaboo.js b/src/scrapers/puretaboo.js new file mode 100644 index 00000000..b5cd19b4 --- /dev/null +++ b/src/scrapers/puretaboo.js @@ -0,0 +1,103 @@ +'use strict'; + +const bhttp = require('bhttp'); +const moment = require('moment'); + +// const { fetchLatest } = require('./gamma'); +const { ex, ctxa } = require('../utils/q'); +const { getPhotos } = require('./gamma'); + +function scrape(html) { + const { document } = ex(html); + + return ctxa(document, '.sceneList .sceneContainer').map(({ q, qa }) => { + const release = {}; + + const linkEl = q('a.imgLink'); + + release.entryId = linkEl.dataset.id; + release.title = linkEl.title; + release.url = `https://www.puretaboo.com${linkEl.href}`; + release.actors = qa('.sceneActors a', true); + + release.poster = q('.imgLink img').dataset.original; + release.trailer = `https://videothumb.gammacdn.com/307x224/${release.entryId}.mp4`; + + return release; + }); +} + +async function scrapeScene(html, url, site) { + const release = {}; + + const { q, qa, qd, qm } = ex(html); + const { pathname } = new URL(url); + + const dataPrefix = 'dataLayer = ['; + const dataStart = html.indexOf(dataPrefix); + const dataString = html.slice(dataStart + dataPrefix.length, html.indexOf('];', dataStart)); + const { sceneDetails: data } = JSON.parse(dataString); + + const dataString2 = q('script[type="application/ld+json"]', true); + const data2 = JSON.parse(dataString2)[1]; + + const videoPrefix = 'window.ScenePlayerOptions = '; + const videoStart = html.indexOf(videoPrefix); + const videoString = html.slice(videoStart + videoPrefix.length, html.indexOf('};', videoStart) + 1); + const videoData = JSON.parse(videoString); + + release.entryId = data.sceneId || videoData.playerOptions.sceneInfos.sceneId || pathname.slice(pathname.lastIndexOf('/') + 1); + release.url = url; + release.title = data.sceneTitle || videoData.playerOptions.sceneInfos.sceneTitle || qm('meta[name="twitter:title"]') || q('.sceneTitle', true); + release.description = data.sceneDescription || data2.description || q('.sceneDesc', true).replace('Video Description:', ''); + + release.duration = moment.duration(data2.duration.slice(2)).asSeconds(); + + // data2.dateCreated is the date the scene was first added to 'upcoming' + release.date = videoData.playerOptions.sceneInfos.sceneReleaseDate + ? moment.utc(videoData.playerOptions.sceneInfos.sceneReleaseDate, 'YYYY-MM-DD').toDate() + : qd('.updatedDate', 'MM-DD-YYYY'); + + release.actors = data.sceneActors?.map(actor => actor.actorName) + || data2.actor?.map(actor => actor.name) + || qa('.sceneColActors a', true); + + release.tags = data2.keywords.split(', ') || qa('.sceneColCategories a', 'title'); + + release.poster = videoData.picPreview; + release.trailer = { + src: `${videoData.playerOptions.host}${videoData.url}`, + }; + + release.photos = await getPhotos(q('.picturesItem a').href, 'puretaboo.com', site); + + return release; +} + +async function fetchLatest(site, page = 1) { + const res = await bhttp.get(`${site.url}/en/videos/AllCategories/0/${page}`); + + if (res.statusCode === 200) { + return scrape(res.body.toString(), site); + } + + return null; +} + +async function fetchUpcoming(site) { + const res = await bhttp.get(`${site.url}/en/videos/AllCategories/0/1/upcoming`); + + return scrape(res.body.toString(), site); +} + +async function fetchScene(url, site) { + const res = await bhttp.get(url); + + return scrapeScene(res.body.toString(), url, site); +} + +module.exports = { + fetchLatest, + fetchScene, + fetchUpcoming, +}; diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index e82bb279..fb372e21 100644 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -15,6 +15,8 @@ const perfectgonzo = require('./perfectgonzo'); const pervcity = require('./pervcity'); const pornpros = require('./pornpros'); const privateNetwork = require('./private'); // reserved keyword +const puretaboo = require('./puretaboo'); +const mindgeek = require('./mindgeek'); const naughtyamerica = require('./naughtyamerica'); const realitykings = require('./realitykings'); const teamskeet = require('./teamskeet'); @@ -25,11 +27,12 @@ const vogov = require('./vogov'); const blowpass = require('./blowpass'); const brazzers = require('./brazzers'); const ddfnetwork = require('./ddfnetwork'); -const metrohd = require('./metrohd'); const evilangel = require('./evilangel'); const julesjordan = require('./julesjordan'); const kellymadison = require('./kellymadison'); const legalporno = require('./legalporno'); +const men = require('./men'); +const metrohd = require('./metrohd'); const mofos = require('./mofos'); const twentyonesextury = require('./21sextury'); const xempire = require('./xempire'); @@ -38,6 +41,7 @@ const xempire = require('./xempire'); const boobpedia = require('./boobpedia'); const freeones = require('./freeones'); const freeonesLegacy = require('./freeones_legacy'); +const iconmale = require('./iconmale'); const pornhub = require('./pornhub'); module.exports = { @@ -60,13 +64,16 @@ module.exports = { kellymadison, kink, legalporno, + men, mikeadriano, milehighmedia, + mindgeek, mofos, perfectgonzo, pervcity, pornpros, private: privateNetwork, + puretaboo, naughtyamerica, realitykings, teamskeet, @@ -78,8 +85,6 @@ module.exports = { // ordered by data priority '21sextury': twentyonesextury, evilangel, - xempire, - blowpass, mofos, realitykings, digitalplayground, @@ -87,14 +92,18 @@ module.exports = { babes, metrohd, milehighmedia, + iconmale, + men, + xempire, + blowpass, julesjordan, brazzers, boobpedia, legalporno, + kellymadison, pornhub, freeones, freeonesLegacy, - kellymadison, ddfnetwork, }, }; diff --git a/src/utils/img.js b/src/utils/img.js new file mode 100644 index 00000000..d574a617 --- /dev/null +++ b/src/utils/img.js @@ -0,0 +1,18 @@ +'use strict'; + +const bhttp = require('bhttp'); +const sharp = require('sharp'); +const { argv } = require('yargs'); + +const url = argv.url || 'http://localhost:5000/media/actors/tommy-pistol/1580341442712.jpeg'; + +async function scan() { + console.log(url); + + const res = await bhttp.get(url); + const stats = await sharp(res.body).stats(); + + console.log(stats); +} + +scan();