diff --git a/assets/components/entities/entity.vue b/assets/components/entities/entity.vue index 0ab76e55..e32937c2 100644 --- a/assets/components/entities/entity.vue +++ b/assets/components/entities/entity.vue @@ -156,7 +156,7 @@ export default { return { entity: null, totalCount: null, - limit: 20, + limit: Number(this.$route.query.limit) || 20, expanded: false, }; }, diff --git a/assets/js/entities/actions.js b/assets/js/entities/actions.js index d4262bf1..b002c5e9 100644 --- a/assets/js/entities/actions.js +++ b/assets/js/entities/actions.js @@ -86,7 +86,6 @@ function initEntitiesActions(store, _router) { or: [ { slug: { equalTo: $entitySlug } - type: { equalTo: "channel" } }, { parent: { diff --git a/public/img/logos/paperstreetmedia/favicon.png b/public/img/logos/paperstreetmedia/favicon.png new file mode 100644 index 00000000..b52b7381 Binary files /dev/null and b/public/img/logos/paperstreetmedia/favicon.png differ diff --git a/public/img/logos/paperstreetmedia/lazy/favicon.png b/public/img/logos/paperstreetmedia/lazy/favicon.png new file mode 100644 index 00000000..5280dfa2 Binary files /dev/null and b/public/img/logos/paperstreetmedia/lazy/favicon.png differ diff --git a/public/img/logos/paperstreetmedia/lazy/network.png b/public/img/logos/paperstreetmedia/lazy/network.png new file mode 100644 index 00000000..54655ce3 Binary files /dev/null and b/public/img/logos/paperstreetmedia/lazy/network.png differ diff --git a/public/img/logos/paperstreetmedia/lazy/paperstreetmedia.png b/public/img/logos/paperstreetmedia/lazy/paperstreetmedia.png new file mode 100644 index 00000000..8a15dd95 Binary files /dev/null and b/public/img/logos/paperstreetmedia/lazy/paperstreetmedia.png differ diff --git a/public/img/logos/paperstreetmedia/network.png b/public/img/logos/paperstreetmedia/network.png new file mode 100644 index 00000000..bd6eb997 Binary files /dev/null and b/public/img/logos/paperstreetmedia/network.png differ diff --git a/public/img/logos/paperstreetmedia/paperstreetmedia.png b/public/img/logos/paperstreetmedia/paperstreetmedia.png new file mode 100644 index 00000000..77358028 Binary files /dev/null and b/public/img/logos/paperstreetmedia/paperstreetmedia.png differ diff --git a/public/img/logos/paperstreetmedia/thumbs/favicon.png b/public/img/logos/paperstreetmedia/thumbs/favicon.png new file mode 100644 index 00000000..5280dfa2 Binary files /dev/null and b/public/img/logos/paperstreetmedia/thumbs/favicon.png differ diff --git a/public/img/logos/paperstreetmedia/thumbs/network.png b/public/img/logos/paperstreetmedia/thumbs/network.png new file mode 100644 index 00000000..e5c8cb0b Binary files /dev/null and b/public/img/logos/paperstreetmedia/thumbs/network.png differ diff --git a/public/img/logos/paperstreetmedia/thumbs/paperstreetmedia.png b/public/img/logos/paperstreetmedia/thumbs/paperstreetmedia.png new file mode 100644 index 00000000..1d7da7e7 Binary files /dev/null and b/public/img/logos/paperstreetmedia/thumbs/paperstreetmedia.png differ diff --git a/public/img/logos/teamskeet/lazy/badmilfs.png b/public/img/logos/teamskeet/lazy/badmilfs.png index 55095730..eaa83f42 100644 Binary files a/public/img/logos/teamskeet/lazy/badmilfs.png and b/public/img/logos/teamskeet/lazy/badmilfs.png differ diff --git a/public/img/logos/teamskeet/lazy/bracefaced.png b/public/img/logos/teamskeet/lazy/bracefaced.png index 312cb264..02406f23 100644 Binary files a/public/img/logos/teamskeet/lazy/bracefaced.png and b/public/img/logos/teamskeet/lazy/bracefaced.png differ diff --git a/public/img/logos/teamskeet/lazy/cfnmteens.png b/public/img/logos/teamskeet/lazy/cfnmteens.png index fac1d70f..76a6a06a 100644 Binary files a/public/img/logos/teamskeet/lazy/cfnmteens.png and b/public/img/logos/teamskeet/lazy/cfnmteens.png differ diff --git a/public/img/logos/teamskeet/lazy/dadcrush.png b/public/img/logos/teamskeet/lazy/dadcrush.png index 5ce667e9..0e341a08 100644 Binary files a/public/img/logos/teamskeet/lazy/dadcrush.png and b/public/img/logos/teamskeet/lazy/dadcrush.png differ diff --git a/public/img/logos/teamskeet/lazy/daughterswap.png b/public/img/logos/teamskeet/lazy/daughterswap.png index 172fdd12..9b8be405 100644 Binary files a/public/img/logos/teamskeet/lazy/daughterswap.png and b/public/img/logos/teamskeet/lazy/daughterswap.png differ diff --git a/public/img/logos/teamskeet/lazy/dyked.png b/public/img/logos/teamskeet/lazy/dyked.png index 978c0cfa..69938e90 100644 Binary files a/public/img/logos/teamskeet/lazy/dyked.png and b/public/img/logos/teamskeet/lazy/dyked.png differ diff --git a/public/img/logos/teamskeet/lazy/exxxtrasmall.png b/public/img/logos/teamskeet/lazy/exxxtrasmall.png index dd0cab74..b04c02a3 100644 Binary files a/public/img/logos/teamskeet/lazy/exxxtrasmall.png and b/public/img/logos/teamskeet/lazy/exxxtrasmall.png differ diff --git a/public/img/logos/teamskeet/lazy/familystrokes.png b/public/img/logos/teamskeet/lazy/familystrokes.png index 87ed8b6b..876f4a4d 100644 Binary files a/public/img/logos/teamskeet/lazy/familystrokes.png and b/public/img/logos/teamskeet/lazy/familystrokes.png differ diff --git a/public/img/logos/teamskeet/lazy/favicon.png b/public/img/logos/teamskeet/lazy/favicon.png index 26712f74..bd73ddcd 100644 Binary files a/public/img/logos/teamskeet/lazy/favicon.png and b/public/img/logos/teamskeet/lazy/favicon.png differ diff --git a/public/img/logos/teamskeet/lazy/gingerpatch.png b/public/img/logos/teamskeet/lazy/gingerpatch.png index b12b5e14..1adb76ad 100644 Binary files a/public/img/logos/teamskeet/lazy/gingerpatch.png and b/public/img/logos/teamskeet/lazy/gingerpatch.png differ diff --git a/public/img/logos/teamskeet/lazy/herfreshmanyear.png b/public/img/logos/teamskeet/lazy/herfreshmanyear.png index 87e7ece4..30bf368d 100644 Binary files a/public/img/logos/teamskeet/lazy/herfreshmanyear.png and b/public/img/logos/teamskeet/lazy/herfreshmanyear.png differ diff --git a/public/img/logos/teamskeet/lazy/innocenthigh.png b/public/img/logos/teamskeet/lazy/innocenthigh.png index 6c4e9b5d..122a2484 100644 Binary files a/public/img/logos/teamskeet/lazy/innocenthigh.png and b/public/img/logos/teamskeet/lazy/innocenthigh.png differ diff --git a/public/img/logos/teamskeet/lazy/lusthd.png b/public/img/logos/teamskeet/lazy/lusthd.png index 1e6580e5..400c8561 100644 Binary files a/public/img/logos/teamskeet/lazy/lusthd.png and b/public/img/logos/teamskeet/lazy/lusthd.png differ diff --git a/public/img/logos/teamskeet/lazy/mybabysittersclub.png b/public/img/logos/teamskeet/lazy/mybabysittersclub.png index 7168b65e..7f7c8538 100644 Binary files a/public/img/logos/teamskeet/lazy/mybabysittersclub.png and b/public/img/logos/teamskeet/lazy/mybabysittersclub.png differ diff --git a/public/img/logos/teamskeet/lazy/network.png b/public/img/logos/teamskeet/lazy/network.png index 58fad66e..2f68c637 100644 Binary files a/public/img/logos/teamskeet/lazy/network.png and b/public/img/logos/teamskeet/lazy/network.png differ diff --git a/public/img/logos/teamskeet/lazy/oyeloca.png b/public/img/logos/teamskeet/lazy/oyeloca.png index 35962cbc..3d27dbd5 100644 Binary files a/public/img/logos/teamskeet/lazy/oyeloca.png and b/public/img/logos/teamskeet/lazy/oyeloca.png differ diff --git a/public/img/logos/teamskeet/lazy/povlife.png b/public/img/logos/teamskeet/lazy/povlife.png index aef453f9..13c8e3a0 100644 Binary files a/public/img/logos/teamskeet/lazy/povlife.png and b/public/img/logos/teamskeet/lazy/povlife.png differ diff --git a/public/img/logos/teamskeet/lazy/rubateen.png b/public/img/logos/teamskeet/lazy/rubateen.png index 43c857b8..6c0779a5 100644 Binary files a/public/img/logos/teamskeet/lazy/rubateen.png and b/public/img/logos/teamskeet/lazy/rubateen.png differ diff --git a/public/img/logos/teamskeet/lazy/selfdesire.png b/public/img/logos/teamskeet/lazy/selfdesire.png index 67c28a94..6ec65b02 100644 Binary files a/public/img/logos/teamskeet/lazy/selfdesire.png and b/public/img/logos/teamskeet/lazy/selfdesire.png differ diff --git a/public/img/logos/teamskeet/lazy/shesnew.png b/public/img/logos/teamskeet/lazy/shesnew.png index 3110c960..9689422d 100644 Binary files a/public/img/logos/teamskeet/lazy/shesnew.png and b/public/img/logos/teamskeet/lazy/shesnew.png differ diff --git a/public/img/logos/teamskeet/lazy/sislovesme.png b/public/img/logos/teamskeet/lazy/sislovesme.png index 4b17d3c3..ec2e9c7e 100644 Binary files a/public/img/logos/teamskeet/lazy/sislovesme.png and b/public/img/logos/teamskeet/lazy/sislovesme.png differ diff --git a/public/img/logos/teamskeet/lazy/solointerviews.png b/public/img/logos/teamskeet/lazy/solointerviews.png index bddaaf8a..6f9349de 100644 Binary files a/public/img/logos/teamskeet/lazy/solointerviews.png and b/public/img/logos/teamskeet/lazy/solointerviews.png differ diff --git a/public/img/logos/teamskeet/lazy/stayhomepov.png b/public/img/logos/teamskeet/lazy/stayhomepov.png new file mode 100644 index 00000000..edc9389a Binary files /dev/null and b/public/img/logos/teamskeet/lazy/stayhomepov.png differ diff --git a/public/img/logos/teamskeet/lazy/stepsiblings.png b/public/img/logos/teamskeet/lazy/stepsiblings.png index 302a7d25..01b93606 100644 Binary files a/public/img/logos/teamskeet/lazy/stepsiblings.png and b/public/img/logos/teamskeet/lazy/stepsiblings.png differ diff --git a/public/img/logos/teamskeet/lazy/submissived.png b/public/img/logos/teamskeet/lazy/submissived.png index da711bf4..9075d92a 100644 Binary files a/public/img/logos/teamskeet/lazy/submissived.png and b/public/img/logos/teamskeet/lazy/submissived.png differ diff --git a/public/img/logos/teamskeet/lazy/teamskeet.png b/public/img/logos/teamskeet/lazy/teamskeet.png new file mode 100644 index 00000000..850261e4 Binary files /dev/null and b/public/img/logos/teamskeet/lazy/teamskeet.png differ diff --git a/public/img/logos/teamskeet/lazy/teamskeetextras.png b/public/img/logos/teamskeet/lazy/teamskeetextras.png index 9d6ad3e8..4245378c 100644 Binary files a/public/img/logos/teamskeet/lazy/teamskeetextras.png and b/public/img/logos/teamskeet/lazy/teamskeetextras.png differ diff --git a/public/img/logos/teamskeet/lazy/teencurves.png b/public/img/logos/teamskeet/lazy/teencurves.png index c3319dee..50af1418 100644 Binary files a/public/img/logos/teamskeet/lazy/teencurves.png and b/public/img/logos/teamskeet/lazy/teencurves.png differ diff --git a/public/img/logos/teamskeet/lazy/teenjoi.png b/public/img/logos/teamskeet/lazy/teenjoi.png index a5e7516a..898eb0a4 100644 Binary files a/public/img/logos/teamskeet/lazy/teenjoi.png and b/public/img/logos/teamskeet/lazy/teenjoi.png differ diff --git a/public/img/logos/teamskeet/lazy/teenpies.png b/public/img/logos/teamskeet/lazy/teenpies.png index 88978371..b8943981 100644 Binary files a/public/img/logos/teamskeet/lazy/teenpies.png and b/public/img/logos/teamskeet/lazy/teenpies.png differ diff --git a/public/img/logos/teamskeet/lazy/teensdoporn.png b/public/img/logos/teamskeet/lazy/teensdoporn.png index c11a96d6..0dcde318 100644 Binary files a/public/img/logos/teamskeet/lazy/teensdoporn.png and b/public/img/logos/teamskeet/lazy/teensdoporn.png differ diff --git a/public/img/logos/teamskeet/lazy/teensloveanal.png b/public/img/logos/teamskeet/lazy/teensloveanal.png index 609be2a9..61f9bef0 100644 Binary files a/public/img/logos/teamskeet/lazy/teensloveanal.png and b/public/img/logos/teamskeet/lazy/teensloveanal.png differ diff --git a/public/img/logos/teamskeet/lazy/teenslovemoney.png b/public/img/logos/teamskeet/lazy/teenslovemoney.png index 51b3d827..ab3aa9b2 100644 Binary files a/public/img/logos/teamskeet/lazy/teenslovemoney.png and b/public/img/logos/teamskeet/lazy/teenslovemoney.png differ diff --git a/public/img/logos/teamskeet/lazy/teenyblack.png b/public/img/logos/teamskeet/lazy/teenyblack.png index 323ac33a..3f4f206b 100644 Binary files a/public/img/logos/teamskeet/lazy/teenyblack.png and b/public/img/logos/teamskeet/lazy/teenyblack.png differ diff --git a/public/img/logos/teamskeet/lazy/therealworkout.png b/public/img/logos/teamskeet/lazy/therealworkout.png index e27116d3..e42bc1ea 100644 Binary files a/public/img/logos/teamskeet/lazy/therealworkout.png and b/public/img/logos/teamskeet/lazy/therealworkout.png differ diff --git a/public/img/logos/teamskeet/lazy/thisgirlsucks.png b/public/img/logos/teamskeet/lazy/thisgirlsucks.png index 06769e04..eab25b89 100644 Binary files a/public/img/logos/teamskeet/lazy/thisgirlsucks.png and b/public/img/logos/teamskeet/lazy/thisgirlsucks.png differ diff --git a/public/img/logos/teamskeet/lazy/tittyattack.png b/public/img/logos/teamskeet/lazy/tittyattack.png index dd2bc4d9..b82743e4 100644 Binary files a/public/img/logos/teamskeet/lazy/tittyattack.png and b/public/img/logos/teamskeet/lazy/tittyattack.png differ diff --git a/public/img/logos/teamskeet/misc/stay-home-pov.svg b/public/img/logos/teamskeet/misc/stay-home-pov.svg new file mode 100644 index 00000000..35b20008 --- /dev/null +++ b/public/img/logos/teamskeet/misc/stay-home-pov.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/logos/teamskeet/misc/team-skeet.svg b/public/img/logos/teamskeet/misc/team-skeet.svg new file mode 100644 index 00000000..53698123 --- /dev/null +++ b/public/img/logos/teamskeet/misc/team-skeet.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/img/logos/teamskeet/network.png b/public/img/logos/teamskeet/network.png index babf5af9..66333590 100644 Binary files a/public/img/logos/teamskeet/network.png and b/public/img/logos/teamskeet/network.png differ diff --git a/public/img/logos/teamskeet/stayhomepov.png b/public/img/logos/teamskeet/stayhomepov.png new file mode 100644 index 00000000..273bf7f4 Binary files /dev/null and b/public/img/logos/teamskeet/stayhomepov.png differ diff --git a/public/img/logos/teamskeet/teamskeet.png b/public/img/logos/teamskeet/teamskeet.png new file mode 100644 index 00000000..4a9e55c5 Binary files /dev/null and b/public/img/logos/teamskeet/teamskeet.png differ diff --git a/public/img/logos/teamskeet/thumbs/badmilfs.png b/public/img/logos/teamskeet/thumbs/badmilfs.png index d05eb444..dfd35b5a 100644 Binary files a/public/img/logos/teamskeet/thumbs/badmilfs.png and b/public/img/logos/teamskeet/thumbs/badmilfs.png differ diff --git a/public/img/logos/teamskeet/thumbs/bracefaced.png b/public/img/logos/teamskeet/thumbs/bracefaced.png index 1e545dc0..bdf91175 100644 Binary files a/public/img/logos/teamskeet/thumbs/bracefaced.png and b/public/img/logos/teamskeet/thumbs/bracefaced.png differ diff --git a/public/img/logos/teamskeet/thumbs/cfnmteens.png b/public/img/logos/teamskeet/thumbs/cfnmteens.png index 25379a15..7767589f 100644 Binary files a/public/img/logos/teamskeet/thumbs/cfnmteens.png and b/public/img/logos/teamskeet/thumbs/cfnmteens.png differ diff --git a/public/img/logos/teamskeet/thumbs/dadcrush.png b/public/img/logos/teamskeet/thumbs/dadcrush.png index 868830a1..53873628 100644 Binary files a/public/img/logos/teamskeet/thumbs/dadcrush.png and b/public/img/logos/teamskeet/thumbs/dadcrush.png differ diff --git a/public/img/logos/teamskeet/thumbs/daughterswap.png b/public/img/logos/teamskeet/thumbs/daughterswap.png index 6a63494d..b33ba214 100644 Binary files a/public/img/logos/teamskeet/thumbs/daughterswap.png and b/public/img/logos/teamskeet/thumbs/daughterswap.png differ diff --git a/public/img/logos/teamskeet/thumbs/dyked.png b/public/img/logos/teamskeet/thumbs/dyked.png index 6773b002..13ee72ab 100644 Binary files a/public/img/logos/teamskeet/thumbs/dyked.png and b/public/img/logos/teamskeet/thumbs/dyked.png differ diff --git a/public/img/logos/teamskeet/thumbs/exxxtrasmall.png b/public/img/logos/teamskeet/thumbs/exxxtrasmall.png index 79fdd026..40e4f057 100644 Binary files a/public/img/logos/teamskeet/thumbs/exxxtrasmall.png and b/public/img/logos/teamskeet/thumbs/exxxtrasmall.png differ diff --git a/public/img/logos/teamskeet/thumbs/familystrokes.png b/public/img/logos/teamskeet/thumbs/familystrokes.png index efa66689..6d7ddcd9 100644 Binary files a/public/img/logos/teamskeet/thumbs/familystrokes.png and b/public/img/logos/teamskeet/thumbs/familystrokes.png differ diff --git a/public/img/logos/teamskeet/thumbs/favicon.png b/public/img/logos/teamskeet/thumbs/favicon.png index 8940ab75..d00077f7 100644 Binary files a/public/img/logos/teamskeet/thumbs/favicon.png and b/public/img/logos/teamskeet/thumbs/favicon.png differ diff --git a/public/img/logos/teamskeet/thumbs/gingerpatch.png b/public/img/logos/teamskeet/thumbs/gingerpatch.png index 7d612d8f..402fbfd2 100644 Binary files a/public/img/logos/teamskeet/thumbs/gingerpatch.png and b/public/img/logos/teamskeet/thumbs/gingerpatch.png differ diff --git a/public/img/logos/teamskeet/thumbs/herfreshmanyear.png b/public/img/logos/teamskeet/thumbs/herfreshmanyear.png index ca85ce5c..64cd3a7d 100644 Binary files a/public/img/logos/teamskeet/thumbs/herfreshmanyear.png and b/public/img/logos/teamskeet/thumbs/herfreshmanyear.png differ diff --git a/public/img/logos/teamskeet/thumbs/innocenthigh.png b/public/img/logos/teamskeet/thumbs/innocenthigh.png index 04ba8261..488bdebc 100644 Binary files a/public/img/logos/teamskeet/thumbs/innocenthigh.png and b/public/img/logos/teamskeet/thumbs/innocenthigh.png differ diff --git a/public/img/logos/teamskeet/thumbs/lusthd.png b/public/img/logos/teamskeet/thumbs/lusthd.png index 2b17c27f..722cc30b 100644 Binary files a/public/img/logos/teamskeet/thumbs/lusthd.png and b/public/img/logos/teamskeet/thumbs/lusthd.png differ diff --git a/public/img/logos/teamskeet/thumbs/mybabysittersclub.png b/public/img/logos/teamskeet/thumbs/mybabysittersclub.png index e4550d11..2f04dd19 100644 Binary files a/public/img/logos/teamskeet/thumbs/mybabysittersclub.png and b/public/img/logos/teamskeet/thumbs/mybabysittersclub.png differ diff --git a/public/img/logos/teamskeet/thumbs/network.png b/public/img/logos/teamskeet/thumbs/network.png index abf1b268..33f112ed 100644 Binary files a/public/img/logos/teamskeet/thumbs/network.png and b/public/img/logos/teamskeet/thumbs/network.png differ diff --git a/public/img/logos/teamskeet/thumbs/oyeloca.png b/public/img/logos/teamskeet/thumbs/oyeloca.png index f711d3aa..7b6fcd19 100644 Binary files a/public/img/logos/teamskeet/thumbs/oyeloca.png and b/public/img/logos/teamskeet/thumbs/oyeloca.png differ diff --git a/public/img/logos/teamskeet/thumbs/povlife.png b/public/img/logos/teamskeet/thumbs/povlife.png index b87b15af..322434dd 100644 Binary files a/public/img/logos/teamskeet/thumbs/povlife.png and b/public/img/logos/teamskeet/thumbs/povlife.png differ diff --git a/public/img/logos/teamskeet/thumbs/rubateen.png b/public/img/logos/teamskeet/thumbs/rubateen.png index 79d327a0..33249616 100644 Binary files a/public/img/logos/teamskeet/thumbs/rubateen.png and b/public/img/logos/teamskeet/thumbs/rubateen.png differ diff --git a/public/img/logos/teamskeet/thumbs/selfdesire.png b/public/img/logos/teamskeet/thumbs/selfdesire.png index 8629a3d5..d0f65f6e 100644 Binary files a/public/img/logos/teamskeet/thumbs/selfdesire.png and b/public/img/logos/teamskeet/thumbs/selfdesire.png differ diff --git a/public/img/logos/teamskeet/thumbs/shesnew.png b/public/img/logos/teamskeet/thumbs/shesnew.png index 884725b7..740491b2 100644 Binary files a/public/img/logos/teamskeet/thumbs/shesnew.png and b/public/img/logos/teamskeet/thumbs/shesnew.png differ diff --git a/public/img/logos/teamskeet/thumbs/sislovesme.png b/public/img/logos/teamskeet/thumbs/sislovesme.png index 905a13fd..2bcf9112 100644 Binary files a/public/img/logos/teamskeet/thumbs/sislovesme.png and b/public/img/logos/teamskeet/thumbs/sislovesme.png differ diff --git a/public/img/logos/teamskeet/thumbs/solointerviews.png b/public/img/logos/teamskeet/thumbs/solointerviews.png index 6fd76aaf..e70eb56a 100644 Binary files a/public/img/logos/teamskeet/thumbs/solointerviews.png and b/public/img/logos/teamskeet/thumbs/solointerviews.png differ diff --git a/public/img/logos/teamskeet/thumbs/stayhomepov.png b/public/img/logos/teamskeet/thumbs/stayhomepov.png new file mode 100644 index 00000000..99bae8f1 Binary files /dev/null and b/public/img/logos/teamskeet/thumbs/stayhomepov.png differ diff --git a/public/img/logos/teamskeet/thumbs/stepsiblings.png b/public/img/logos/teamskeet/thumbs/stepsiblings.png index 1997fc7e..57257baf 100644 Binary files a/public/img/logos/teamskeet/thumbs/stepsiblings.png and b/public/img/logos/teamskeet/thumbs/stepsiblings.png differ diff --git a/public/img/logos/teamskeet/thumbs/submissived.png b/public/img/logos/teamskeet/thumbs/submissived.png index 04942ec1..af347615 100644 Binary files a/public/img/logos/teamskeet/thumbs/submissived.png and b/public/img/logos/teamskeet/thumbs/submissived.png differ diff --git a/public/img/logos/teamskeet/thumbs/teamskeet.png b/public/img/logos/teamskeet/thumbs/teamskeet.png new file mode 100644 index 00000000..7a18f628 Binary files /dev/null and b/public/img/logos/teamskeet/thumbs/teamskeet.png differ diff --git a/public/img/logos/teamskeet/thumbs/teamskeetextras.png b/public/img/logos/teamskeet/thumbs/teamskeetextras.png index 329f540d..85df95b1 100644 Binary files a/public/img/logos/teamskeet/thumbs/teamskeetextras.png and b/public/img/logos/teamskeet/thumbs/teamskeetextras.png differ diff --git a/public/img/logos/teamskeet/thumbs/teencurves.png b/public/img/logos/teamskeet/thumbs/teencurves.png index 58f1aaf8..25200085 100644 Binary files a/public/img/logos/teamskeet/thumbs/teencurves.png and b/public/img/logos/teamskeet/thumbs/teencurves.png differ diff --git a/public/img/logos/teamskeet/thumbs/teenjoi.png b/public/img/logos/teamskeet/thumbs/teenjoi.png index 7c7a5a8a..ac616402 100644 Binary files a/public/img/logos/teamskeet/thumbs/teenjoi.png and b/public/img/logos/teamskeet/thumbs/teenjoi.png differ diff --git a/public/img/logos/teamskeet/thumbs/teenpies.png b/public/img/logos/teamskeet/thumbs/teenpies.png index 52f64e16..58477767 100644 Binary files a/public/img/logos/teamskeet/thumbs/teenpies.png and b/public/img/logos/teamskeet/thumbs/teenpies.png differ diff --git a/public/img/logos/teamskeet/thumbs/teensdoporn.png b/public/img/logos/teamskeet/thumbs/teensdoporn.png index 5edc4beb..0ec6f2a6 100644 Binary files a/public/img/logos/teamskeet/thumbs/teensdoporn.png and b/public/img/logos/teamskeet/thumbs/teensdoporn.png differ diff --git a/public/img/logos/teamskeet/thumbs/teensloveanal.png b/public/img/logos/teamskeet/thumbs/teensloveanal.png index eaa1656c..d4423362 100644 Binary files a/public/img/logos/teamskeet/thumbs/teensloveanal.png and b/public/img/logos/teamskeet/thumbs/teensloveanal.png differ diff --git a/public/img/logos/teamskeet/thumbs/teenslovemoney.png b/public/img/logos/teamskeet/thumbs/teenslovemoney.png index 2cb2daa3..79163116 100644 Binary files a/public/img/logos/teamskeet/thumbs/teenslovemoney.png and b/public/img/logos/teamskeet/thumbs/teenslovemoney.png differ diff --git a/public/img/logos/teamskeet/thumbs/teenyblack.png b/public/img/logos/teamskeet/thumbs/teenyblack.png index 74886ef0..4857d2f0 100644 Binary files a/public/img/logos/teamskeet/thumbs/teenyblack.png and b/public/img/logos/teamskeet/thumbs/teenyblack.png differ diff --git a/public/img/logos/teamskeet/thumbs/therealworkout.png b/public/img/logos/teamskeet/thumbs/therealworkout.png index fc6d5ffc..aa915f41 100644 Binary files a/public/img/logos/teamskeet/thumbs/therealworkout.png and b/public/img/logos/teamskeet/thumbs/therealworkout.png differ diff --git a/public/img/logos/teamskeet/thumbs/thisgirlsucks.png b/public/img/logos/teamskeet/thumbs/thisgirlsucks.png index 829b3e2b..d246dd92 100644 Binary files a/public/img/logos/teamskeet/thumbs/thisgirlsucks.png and b/public/img/logos/teamskeet/thumbs/thisgirlsucks.png differ diff --git a/public/img/logos/teamskeet/thumbs/tittyattack.png b/public/img/logos/teamskeet/thumbs/tittyattack.png index 3416f166..fe6e73ec 100644 Binary files a/public/img/logos/teamskeet/thumbs/tittyattack.png and b/public/img/logos/teamskeet/thumbs/tittyattack.png differ diff --git a/seeds/00_tags.js b/seeds/00_tags.js index 59b9da37..534b20a7 100644 --- a/seeds/00_tags.js +++ b/seeds/00_tags.js @@ -229,6 +229,10 @@ const tags = [ name: 'bondage', slug: 'bondage', }, + { + name: 'braces', + slug: 'braces', + }, { name: 'brunette', slug: 'brunette', @@ -900,6 +904,11 @@ const tags = [ name: 'virtual reality', slug: 'virtual-reality', }, + { + name: 'quarantine', + slug: 'quarantine', + description: 'The 2019 Coronavirus outbreak (COVID-19) forced sensible people to quarantine at home, spawning a new porn theme featuring self-isolation and masks.', + }, { name: 'Russian', slug: 'russian', diff --git a/seeds/01_networks.js b/seeds/01_networks.js index 6776dd3a..b1ed6d1a 100644 --- a/seeds/01_networks.js +++ b/seeds/01_networks.js @@ -21,6 +21,10 @@ const parentNetworks = [ slug: 'whalemember', name: 'Whale Member', }, + { + slug: 'paperstreetmedia', + name: 'Paper Street Media', + }, { slug: 'porndoe', name: 'PornDoe', @@ -412,6 +416,7 @@ const networks = [ name: 'Team Skeet', url: 'https://www.teamskeet.com', description: 'Welcome to teamskeet.com, the largest collection of exclusive teen porn sites and videos on the web. Check out our TeamSkeet porn sites now.', + parent: 'paperstreetmedia', }, { slug: 'teencoreclub', diff --git a/seeds/02_sites.js b/seeds/02_sites.js index be33a5bd..976790de 100644 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -6465,43 +6465,57 @@ const sites = [ { slug: 'exxxtrasmall', name: 'Exxxtra Small', - alias: ['ext'], - description: '', + alias: ['exs', 'ext'], url: 'https://www.exxxtrasmall.com', - parameters: { id: 'exs' }, + parameters: { id: 'exxxtrasmall' }, parent: 'teamskeet', }, { slug: 'teenpies', name: 'Teen Pies', - description: '', + alias: ['tp'], url: 'https://www.teenpies.com', - parameters: { id: 'tp' }, + parameters: { id: 'teenpies' }, parent: 'teamskeet', }, { slug: 'innocenthigh', name: 'Innocent High', - alias: ['inh'], - description: '', + alias: ['ih', 'inh'], url: 'https://www.innocenthigh.com', - parameters: { id: 'ih' }, + parameters: { id: 'innocenthigh' }, + parent: 'teamskeet', + }, + { + slug: 'kissingsis', + name: 'Kissing Sis', + alias: ['ss'], + url: 'https://www.kissingsis.com', + parameters: { id: 'kissing-sis' }, + parent: 'teamskeet', + }, + { + slug: 'latinateam', + name: 'Latina Team', + alias: ['lt'], + url: 'https://www.latinateam.com', + parameters: { id: 'latina-team' }, parent: 'teamskeet', }, { slug: 'teencurves', name: 'Teen Curves', - description: '', + alias: ['tc'], url: 'https://www.teencurves.com', - parameters: { id: 'tc' }, + parameters: { id: 'teen-curves' }, parent: 'teamskeet', }, { slug: 'cfnmteens', name: 'CFNM Teens', - alias: ['cfnmt'], + alias: ['cfnm', 'cfnmt'], url: 'https://www.cfnmteens.com', - parameters: { id: 'cfnm' }, + parameters: { id: 'cfnm-teens' }, parent: 'teamskeet', }, { @@ -6510,23 +6524,23 @@ const sites = [ alias: ['tla'], url: 'https://www.teensloveanal.com', tags: ['anal'], - parameters: { id: 'tla' }, + parameters: { id: 'teens-love-anal' }, parent: 'teamskeet', }, { slug: 'mybabysittersclub', name: 'My Babysitters Club', - description: '', + alias: ['bsc'], url: 'https://www.mybabysittersclub.com', - parameters: { id: 'bsc' }, + parameters: { id: 'my-babysitters-club' }, parent: 'teamskeet', }, { slug: 'shesnew', name: 'She\'s New', - alias: ['ssn'], + alias: ['sn', 'ssn'], url: 'https://www.shesnew.com', - parameters: { id: 'bsc' }, + parameters: { id: 'shesnew' }, parent: 'teamskeet', }, { @@ -6534,163 +6548,292 @@ const sites = [ name: 'Teens Do Porn', alias: ['tdp'], url: 'https://www.teensdoporn.com', - parameters: { id: 'tdp' }, + parameters: { id: 'teens-do-porn' }, parent: 'teamskeet', }, { slug: 'povlife', name: 'POV Life', - description: '', + alias: ['pov'], url: 'https://www.povlife.com', - parameters: { id: 'pov' }, + parameters: { id: 'povlife' }, parent: 'teamskeet', }, { slug: 'therealworkout', name: 'The Real Workout', - description: '', + alias: ['trw'], url: 'https://www.therealworkout.com', - parameters: { id: 'trw' }, + parameters: { id: 'therealworkout' }, parent: 'teamskeet', }, { slug: 'thisgirlsucks', name: 'This Girl Sucks', alias: ['tgs'], - description: '', url: 'https://www.thisgirlsucks.com', - parameters: { id: 'tgs' }, + parameters: { id: 'this-girl-sucks' }, parent: 'teamskeet', }, { slug: 'teenslovemoney', name: 'Teens Love Money', alias: ['tlm'], - description: '', url: 'https://www.teenslovemoney.com', - parameters: { id: 'tlm' }, + parameters: { id: 'teens-love-money' }, parent: 'teamskeet', }, { slug: 'oyeloca', name: 'Oye Loca', - description: '', + alias: ['ol'], url: 'https://www.oyeloca.com', - parameters: { id: 'ol' }, + tags: ['latina'], + parameters: { id: 'oyeloca' }, parent: 'teamskeet', }, { slug: 'tittyattack', name: 'Titty Attack', - description: '', + alias: ['ta'], url: 'https://www.tittyattack.com', - parameters: { id: 'ta' }, + parameters: { id: 'titty-attack' }, parent: 'teamskeet', }, { slug: 'teenyblack', name: 'Teeny Black', - description: '', + alias: ['tb'], url: 'https://www.teenyblack.com', - parameters: { id: 'tb' }, + parameters: { id: 'teenyblack' }, parent: 'teamskeet', }, { slug: 'lusthd', name: 'Lust HD', - description: '', + alias: ['lhd'], url: 'https://www.lusthd.com', - parameters: { id: 'lhd' }, + parameters: { id: 'lusthd' }, parent: 'teamskeet', }, { slug: 'rubateen', name: 'Rub A Teen', - description: '', + alias: ['rat'], url: 'https://www.rubateen.com', - parameters: { id: 'rat' }, + parameters: { id: 'rubateen' }, parent: 'teamskeet', }, { slug: 'herfreshmanyear', name: 'Her Freshman Year', - description: '', - url: 'https://www.exxxtrasmall.com', - parameters: { id: 'hfy' }, + alias: ['hfy'], + url: 'https://www.herfreshmanyear.com', + parameters: { id: 'her-freshman-year' }, parent: 'teamskeet', }, { slug: 'selfdesire', name: 'Self Desire', - description: '', + alias: ['sd'], url: 'https://www.selfdesire.com', - parameters: { id: 'sd' }, + parameters: { id: 'self-desire' }, parent: 'teamskeet', }, { slug: 'solointerviews', name: 'Solo Interviews', - description: '', + alias: ['si'], url: 'https://www.solointerviews.com', - parameters: { id: 'si' }, - parent: 'teamskeet', - }, - { - slug: 'teamskeetextras', - name: 'Team Skeet Extras', - description: '', - url: 'https://www.teamskeetextras.com', - parameters: { id: 'tse' }, + parameters: { id: 'solo-interviews' }, parent: 'teamskeet', }, { slug: 'dyked', name: 'Dyked', - description: '', + alias: ['dyk'], url: 'https://www.dyked.com', - parameters: { id: 'dyk' }, + parameters: { id: 'dyked' }, parent: 'teamskeet', }, { slug: 'badmilfs', name: 'Bad MILFs', - description: '', + alias: ['alias'], url: 'https://www.badmilfs.com', - parameters: { id: 'bad' }, + parameters: { id: 'bad-milfs' }, parent: 'teamskeet', }, { slug: 'gingerpatch', name: 'Ginger Patch', - description: '', + alias: ['gp'], url: 'https://www.gingerpatch.com', - parameters: { id: 'gp' }, + parameters: { id: 'gingerpatch' }, parent: 'teamskeet', }, { slug: 'bracefaced', name: 'Brace Faced', - description: '', + alias: ['bfd'], + tags: ['braces'], url: 'https://www.bracefaced.com', - parameters: { id: 'bfd' }, + parameters: { id: 'bracefaced' }, parent: 'teamskeet', }, { slug: 'teenjoi', name: 'Teen JOI', - description: '', + alias: ['joi'], url: 'https://www.teenjoi.com', - parameters: { id: 'joi' }, + parameters: { id: 'teen-joi' }, parent: 'teamskeet', }, { slug: 'stepsiblings', name: 'Step Siblings', - alias: ['steps'], + alias: ['sss', 'steps'], url: 'https://www.stepsiblings.com', - parameters: { id: 'sss' }, + parameters: { id: 'stepsiblings' }, parent: 'teamskeet', }, + { + slug: 'stayhomepov', + name: 'StayHomePOV', + alias: ['shp', 'steps'], + tags: ['pov', 'quarantine'], + url: 'https://www.stayhomepov.com', + parameters: { id: 'stay-home-pov' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetextras', + name: 'Team Skeet Extras', + alias: ['tse'], + url: 'https://www.teamskeetextras.com', + parameters: { id: 'extras' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetallstars', + name: 'Team Skeet Allstars', + alias: ['tsa', 'steps'], + url: 'https://www.teamskeet.com/series/all-stars', + parameters: { id: 'all-stars' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetselects', + name: 'Team Skeet Selects', + alias: ['tsc'], + url: 'https://www.teamskeet.com/series/selects', + parameters: { id: 'selects' }, + parent: 'teamskeet', + }, + { + slug: 'tshobybuchanon', + name: 'Hoby Buchanon', + alias: ['hob'], + parameters: { id: 'hoby-buchanon' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxog', + name: 'TS X Owen Gray', + alias: ['owg'], + url: 'https://www.teamskeet.com/series/owen-gray', + parameters: { id: 'owen-gray' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxbaeb', + name: 'TS X BAEB', + alias: ['bae'], + url: 'https://www.teamskeet.com/series/baeb', + parameters: { id: 'baeb' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxbananafever', + name: 'TS X Banana Fever', + alias: ['bna'], + url: 'https://www.teamskeet.com/series/bananafever', + parameters: { id: 'bananafever' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxevaelfie', + name: 'TS X Eva Elfie', + alias: ['eva'], + url: 'https://www.teamskeet.com/series/eva-elfie', + parameters: { id: 'eva-elfie' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxfuckingawesome', + name: 'TS X Fucking Awesome', + alias: ['tfa'], + url: 'https://www.teamskeet.com/series/fucking-awesome', + parameters: { id: 'fucking-awesome' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxjamesdeen', + name: 'TS X James Deen', + alias: ['jmd'], + url: 'https://www.teamskeet.com/series/james-deen', + parameters: { id: 'james-deen' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxjoybear', + name: 'TS X Joybear', + alias: ['jyb'], + url: 'https://www.teamskeet.com/series/joybear', + parameters: { id: 'joybear' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxcamsoda', + name: 'TS X CamSoda', + alias: ['lna'], + url: 'https://www.teamskeet.com/series/camsoda', + parameters: { id: 'camsoda' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxlaynalandry', + name: 'TS X Layna Landry', + alias: ['lna'], + url: 'https://www.teamskeet.com/series/layna-landry', + parameters: { id: 'layna-landry' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxlunaxjames', + name: 'TS X Luna X James', + alias: ['lxj'], + url: 'https://www.teamskeet.com/series/luna-x-james', + parameters: { id: 'luna-x-james' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxmickeymod', + name: 'TS X Mickey Mod', + alias: ['mod'], + url: 'https://www.teamskeet.com/series/mickey-mod', + parameters: { id: 'mickey-mod' }, + parent: 'teamskeet', + }, + { + slug: 'teamskeetxspankmonster', + name: 'TS X SpankMonster', + alias: ['spm'], + url: 'https://www.teamskeet.com/series/spankmonster', + parameters: { id: 'spankmonster' }, + parent: 'teamskeet', + }, + /* premium, unavailable { slug: 'submissived', name: 'Submissived', @@ -6709,6 +6852,7 @@ const sites = [ tags: ['family'], parent: 'teamskeet', }, + */ // TEEN CORE CLUB { name: 'Analyzed Girls', diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index 4ae97a34..ab5ab528 100644 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -232,6 +232,7 @@ module.exports = { silverstonedvd: famedigital, silviasaint: famedigital, swallowed: mikeadriano, + teamskeet, teencoreclub, thatsitcomshow: nubiles, transangels, diff --git a/src/scrapers/teamskeet.js b/src/scrapers/teamskeet.js index 3aefc7da..daac7fae 100644 --- a/src/scrapers/teamskeet.js +++ b/src/scrapers/teamskeet.js @@ -1,180 +1,155 @@ 'use strict'; -const bhttp = require('bhttp'); -const { JSDOM } = require('jsdom'); -const moment = require('moment'); - -function extractTitle(pathname) { - return pathname - .split('/') - .slice(-2)[0] - .split('_') - .map(seg => `${seg.charAt(0).toUpperCase()}${seg.slice(1)}`) - .join(' '); -} - -function extractActors(str) { - return str - .split(/,|\band\b/ig) - .filter(actor => !/\.{3}/.test(actor)) - .map(actor => actor.trim()) - .filter(actor => actor.length > 0); -} - -function scrapeLatest(html, site) { - const { document } = new JSDOM(html).window; - - const scenes = Array.from(document.querySelectorAll('#updatesList li.grey, #updatesList li.white')); +const qu = require('../utils/qu'); +const http = require('../utils/http'); +const slugify = require('../utils/slugify'); +const { lbsToKg, feetInchesToCm } = require('../utils/convert'); +function scrapeAll(scenes) { return scenes.map((scene) => { - const release = { site }; + const release = {}; - const link = scene.querySelector('.info a'); - const poster = scene.querySelector('img'); - const { pathname } = new URL(link); + release.entryId = scene.id; + release.url = `https://teamskeet.com/movies/${release.entryId}`; - [release.entryId] = poster.id.match(/\d+/); + release.title = scene.title; + release.date = qu.extractDate(scene.publishedDate); - release.url = `https://www.teamskeet.com${pathname}`; - release.title = extractTitle(pathname); + release.actors = scene.models?.map(model => model.modelName) || []; - release.date = moment.utc(scene.querySelector('strong').textContent, 'MM/DD/YYYY').toDate(); + release.poster = [ + scene.img.replace('med.jpg', 'hi.jpg'), + scene.img, + ]; - const photos = Array.from({ length: 5 }, (_value, index) => poster.dataset.original.replace(/\d+.jpg/, `${String(index + 1).padStart(2, '0')}.jpg`)); - [release.poster] = photos; - release.photos = photos.slice(1); + release.teaser = scene.videoTrailer; - const actors = scene.querySelector('div span[rel="test"]').textContent; - release.actors = extractActors(actors); + if (scene.video) { + release.trailer = { stream: `https://videodelivery.net/${scene.video}/manifest/video.mpd` }; + } + + release.likes = scene.stats.likeCount; + release.dislikes = scene.stats.dislikeCount; + + release.channel = slugify(scene.site.name, '') + .replace('hobybuchanon', 'tshobybuchanon'); // slug collision with his own site return release; }); } -function scrapeScene(html, site, url) { - const { document } = new JSDOM(html).window; - const release = { site }; +function scrapeScene(scene) { + const release = {}; - release.entryId = document.querySelector('#story-and-tags .scene_rater').attributes.rel.value; - release.description = document.querySelector('#story-and-tags td:nth-child(2) div').textContent; - const [actors, title, channel] = document.querySelector('title').textContent.split('|').map(item => item.trim()); + release.entryId = scene.id; - release.url = url; - release.title = title; - release.actors = extractActors(actors); - release.channel = channel.toLowerCase(); - release.tags = Array.from(document.querySelectorAll('#story-and-tags tr:nth-child(2) a'), el => el.rel); + release.title = scene.title; + release.description = scene.description; - const date = document.querySelector('h3 ~ div:nth-child(4), h3 ~ div div.gray:not(.scene_rater)').textContent.split(':')[1].trim(); - release.date = moment.utc(date, 'MMMM Do, YYYY').toDate(); + release.date = qu.extractDate(scene.publishedDate); + release.actors = scene.models?.map(model => model.modelName) || []; - const { poster } = document.querySelector('video'); - if (poster && !/gen/.test(poster)) release.poster = [poster.replace('low', 'hi'), poster]; + release.poster = [ + scene.img.replace('med.jpg', 'hi.jpg'), + scene.img, + ]; - const siteId = document.querySelector('#story-and-tags img').src.match(/\w+.jpg/)[0].replace('.jpg', ''); - const actorsSlug = document.querySelector('h3 a').href.split('/').slice(-2)[0]; + release.channel = slugify(scene.site.name, '') + .replace('hobybuchanon', 'tshobybuchanon'); // slug collision with his own site - release.photos = Array.from({ length: 5 }, (value, index) => `https://images.psmcdn.net/teamskeet/${siteId}/${actorsSlug}/shared/scenes/new/${String(index + 1).padStart(2, '0')}.jpg`); - - const trailer = document.querySelector('div.right.gray a').href; - if (trailer) release.trailer = { src: trailer }; + if (scene.video) { + release.trailer = { stream: `https://videodelivery.net/${scene.video}/manifest/video.mpd` }; + } return release; } -function scrapeSceneA(html, site, sceneX, url) { - const scene = sceneX || new JSDOM(html).window.document; - const release = { site }; +function scrapeProfile(actor) { + const profile = {}; - release.description = scene.querySelector('.scene-story').textContent.replace('...read more', '...').trim(); + if (actor.bio.about) { + // birthdate seems never/rarely correct + const measurements = actor.bio.about.match(/Measurements: (\d+)(\w+)-(\d+)-(\d+)/i); - release.date = moment.utc(scene.querySelector('.scene-date').textContent, 'MM/DD/YYYY').toDate(); - release.actors = Array.from(scene.querySelectorAll('.starring span'), el => extractActors(el.textContent)).flat(); + if (measurements) { + [profile.bust, profile.cup, profile.waist, profile.hip] = measurements.slice(1); + } else { + const breastSize = actor.bio.breastSize?.match(/(\d+)(\w+)/)?.slice(1) || actor.bio.about.match(/Measurements: (\d+)(\w+)/)?.slice(1); - const durationString = scene.querySelector('.time').textContent.trim(); - const duration = ['00'].concat(durationString.split(':')).slice(-3).join(':'); // ensure hh:mm:ss - release.duration = moment.duration(duration).asSeconds(); + if (breastSize) { + [profile.bust, profile.cup] = breastSize; + } + } - if (sceneX) { - const titleEl = scene.querySelector(':scope > a'); + profile.nationality = actor.bio.about.match(/Nationality: (\w+)/i)?.[1]; + profile.ethnicity = actor.bio.about.match(/Ethnicity: (\w+)/i)?.[1]; + profile.hairColor = actor.bio.about.match(/Hair Color: (\w+)/i)?.[1]; - release.url = titleEl.href; - release.entryId = titleEl.id; - release.title = titleEl.title; + const piercings = actor.bio.about.match(/Piercings: (\w+)/i)?.[1]; + const tattoos = actor.bio.about.match(/Tattoos: (\w+)/i)?.[1]; - const [poster, ...photos] = Array.from(scene.querySelectorAll('.scene img'), el => el.src); - release.poster = [poster.replace('bio_big', 'video'), poster]; - release.photos = photos; + if (slugify(piercings) === 'yes') profile.hasPiercings = true; + if (slugify(piercings) === 'no') profile.hasPiercings = false; + + if (slugify(tattoos) === 'yes') profile.hasTattoos = true; + if (slugify(tattoos) === 'no') profile.hasTattoos = false; } - if (!sceneX) { - release.title = scene.querySelector('.title span').textContent; - release.url = url; - - release.poster = scene.querySelector('video').poster; - release.photos = [release.poster.replace('video', 'bio_small'), release.poster.replace('video', 'bio_small2')]; + if (actor.bio.heightFeet && actor.bio.heightInches) { + profile.height = feetInchesToCm(actor.bio.heightFeet, actor.bio.heightInches); } - const [, entryIdA, entryIdB] = new URL(release.url).pathname.split('/'); - release.entryId = entryIdA === 'scenes' ? entryIdB : entryIdA; + if (actor.bio.weight) { + profile.weight = lbsToKg(actor.bio.weight); + } - return release; + profile.avatar = actor.img; + profile.releases = scrapeAll(actor.movies); + + return profile; } -function scrapeLatestA(html, site) { - const { document } = new JSDOM(html).window; +async function fetchLatest(channel, _page = 1) { + // freshman year, layna landry + if (!channel.parameters?.id) { + return null; + } - const scenes = Array.from(document.querySelectorAll('.scenewrapper')); + const url = `https://store.psmcdn.net/ts-organic-iiiokv9kyo/seriesContent/${channel.parameters.id}/latestMovies.json`; + const res = await http.get(url); - return scenes.map(scene => scrapeSceneA(null, site, scene)); + if (res.ok) { + return scrapeAll(Object.values(res.body), channel); + } + + return res.status; } -async function fetchLatestTeamSkeet(site, page = 1) { - const url = `https://www.teamskeet.com/t1/updates/load?fltrs[site]=${site.parameters.id}&page=${page}&view=newest&fltrs[time]=ALL&order=DESC`; - const res = await bhttp.get(url); +async function fetchScene(url, channel) { + const entryId = new URL(url).pathname.match(/\/movies\/(.+)$/)[1]; + const apiUrl = `https://store.psmcdn.net/ts-organic-iiiokv9kyo/videosContent/${entryId}.json`; - if (res.statusCode === 200) { - return scrapeLatest(res.body.toString(), site); + const res = await http.get(apiUrl); + + if (res.ok) { + return scrapeScene(res.body, channel); } - return null; + return res.status; } -async function fetchLatestA(site) { - const url = `${site.url}/scenes`; - const res = await bhttp.get(url); +async function fetchProfile(baseActor) { + const res = await http.get(`https://store.psmcdn.net/ts-organic-iiiokv9kyo/modelsContent/${slugify(baseActor.name)}.json`); - if (res.statusCode === 200) { - return scrapeLatestA(res.body.toString(), site); + if (res.ok && res.body) { + return scrapeProfile(res.body); } - return null; -} - -async function fetchLatest(site, page = 1) { - if (site.parameters.id) { - return fetchLatestTeamSkeet(site, page); - } - - if (site.parameters.scraper === 'A') { - return fetchLatestA(site, page); - } - - return null; -} - -async function fetchScene(url, site) { - const session = bhttp.session(); // resolve redirects - const res = await session.get(url); - - if (site.parameters?.scraper === 'A') { - return scrapeSceneA(res.body.toString(), site, null, url); - } - - return scrapeScene(res.body.toString(), site, url); + return res.status; } module.exports = { fetchLatest, fetchScene, + fetchProfile, }; diff --git a/src/scrapers/teamskeet_legacy.js b/src/scrapers/teamskeet_legacy.js new file mode 100644 index 00000000..3aefc7da --- /dev/null +++ b/src/scrapers/teamskeet_legacy.js @@ -0,0 +1,180 @@ +'use strict'; + +const bhttp = require('bhttp'); +const { JSDOM } = require('jsdom'); +const moment = require('moment'); + +function extractTitle(pathname) { + return pathname + .split('/') + .slice(-2)[0] + .split('_') + .map(seg => `${seg.charAt(0).toUpperCase()}${seg.slice(1)}`) + .join(' '); +} + +function extractActors(str) { + return str + .split(/,|\band\b/ig) + .filter(actor => !/\.{3}/.test(actor)) + .map(actor => actor.trim()) + .filter(actor => actor.length > 0); +} + +function scrapeLatest(html, site) { + const { document } = new JSDOM(html).window; + + const scenes = Array.from(document.querySelectorAll('#updatesList li.grey, #updatesList li.white')); + + return scenes.map((scene) => { + const release = { site }; + + const link = scene.querySelector('.info a'); + const poster = scene.querySelector('img'); + const { pathname } = new URL(link); + + [release.entryId] = poster.id.match(/\d+/); + + release.url = `https://www.teamskeet.com${pathname}`; + release.title = extractTitle(pathname); + + release.date = moment.utc(scene.querySelector('strong').textContent, 'MM/DD/YYYY').toDate(); + + const photos = Array.from({ length: 5 }, (_value, index) => poster.dataset.original.replace(/\d+.jpg/, `${String(index + 1).padStart(2, '0')}.jpg`)); + [release.poster] = photos; + release.photos = photos.slice(1); + + const actors = scene.querySelector('div span[rel="test"]').textContent; + release.actors = extractActors(actors); + + return release; + }); +} + +function scrapeScene(html, site, url) { + const { document } = new JSDOM(html).window; + const release = { site }; + + release.entryId = document.querySelector('#story-and-tags .scene_rater').attributes.rel.value; + release.description = document.querySelector('#story-and-tags td:nth-child(2) div').textContent; + const [actors, title, channel] = document.querySelector('title').textContent.split('|').map(item => item.trim()); + + release.url = url; + release.title = title; + release.actors = extractActors(actors); + release.channel = channel.toLowerCase(); + release.tags = Array.from(document.querySelectorAll('#story-and-tags tr:nth-child(2) a'), el => el.rel); + + const date = document.querySelector('h3 ~ div:nth-child(4), h3 ~ div div.gray:not(.scene_rater)').textContent.split(':')[1].trim(); + release.date = moment.utc(date, 'MMMM Do, YYYY').toDate(); + + const { poster } = document.querySelector('video'); + if (poster && !/gen/.test(poster)) release.poster = [poster.replace('low', 'hi'), poster]; + + const siteId = document.querySelector('#story-and-tags img').src.match(/\w+.jpg/)[0].replace('.jpg', ''); + const actorsSlug = document.querySelector('h3 a').href.split('/').slice(-2)[0]; + + release.photos = Array.from({ length: 5 }, (value, index) => `https://images.psmcdn.net/teamskeet/${siteId}/${actorsSlug}/shared/scenes/new/${String(index + 1).padStart(2, '0')}.jpg`); + + const trailer = document.querySelector('div.right.gray a').href; + if (trailer) release.trailer = { src: trailer }; + + return release; +} + +function scrapeSceneA(html, site, sceneX, url) { + const scene = sceneX || new JSDOM(html).window.document; + const release = { site }; + + release.description = scene.querySelector('.scene-story').textContent.replace('...read more', '...').trim(); + + release.date = moment.utc(scene.querySelector('.scene-date').textContent, 'MM/DD/YYYY').toDate(); + release.actors = Array.from(scene.querySelectorAll('.starring span'), el => extractActors(el.textContent)).flat(); + + const durationString = scene.querySelector('.time').textContent.trim(); + const duration = ['00'].concat(durationString.split(':')).slice(-3).join(':'); // ensure hh:mm:ss + release.duration = moment.duration(duration).asSeconds(); + + if (sceneX) { + const titleEl = scene.querySelector(':scope > a'); + + release.url = titleEl.href; + release.entryId = titleEl.id; + release.title = titleEl.title; + + const [poster, ...photos] = Array.from(scene.querySelectorAll('.scene img'), el => el.src); + release.poster = [poster.replace('bio_big', 'video'), poster]; + release.photos = photos; + } + + if (!sceneX) { + release.title = scene.querySelector('.title span').textContent; + release.url = url; + + release.poster = scene.querySelector('video').poster; + release.photos = [release.poster.replace('video', 'bio_small'), release.poster.replace('video', 'bio_small2')]; + } + + const [, entryIdA, entryIdB] = new URL(release.url).pathname.split('/'); + release.entryId = entryIdA === 'scenes' ? entryIdB : entryIdA; + + return release; +} + +function scrapeLatestA(html, site) { + const { document } = new JSDOM(html).window; + + const scenes = Array.from(document.querySelectorAll('.scenewrapper')); + + return scenes.map(scene => scrapeSceneA(null, site, scene)); +} + +async function fetchLatestTeamSkeet(site, page = 1) { + const url = `https://www.teamskeet.com/t1/updates/load?fltrs[site]=${site.parameters.id}&page=${page}&view=newest&fltrs[time]=ALL&order=DESC`; + const res = await bhttp.get(url); + + if (res.statusCode === 200) { + return scrapeLatest(res.body.toString(), site); + } + + return null; +} + +async function fetchLatestA(site) { + const url = `${site.url}/scenes`; + const res = await bhttp.get(url); + + if (res.statusCode === 200) { + return scrapeLatestA(res.body.toString(), site); + } + + return null; +} + +async function fetchLatest(site, page = 1) { + if (site.parameters.id) { + return fetchLatestTeamSkeet(site, page); + } + + if (site.parameters.scraper === 'A') { + return fetchLatestA(site, page); + } + + return null; +} + +async function fetchScene(url, site) { + const session = bhttp.session(); // resolve redirects + const res = await session.get(url); + + if (site.parameters?.scraper === 'A') { + return scrapeSceneA(res.body.toString(), site, null, url); + } + + return scrapeScene(res.body.toString(), site, url); +} + +module.exports = { + fetchLatest, + fetchScene, +};