diff --git a/assets/components/networks/network.vue b/assets/components/networks/network.vue
index 63921375..ad5e44f5 100644
--- a/assets/components/networks/network.vue
+++ b/assets/components/networks/network.vue
@@ -68,8 +68,16 @@ import Sites from '../sites/sites.vue';
async function fetchNetwork() {
this.network = await this.$store.dispatch('fetchNetworks', this.$route.params.networkSlug);
+ if (this.network.studios) {
+ this.studios = this.network.studios.map(studio => ({
+ ...studio,
+ network: this.network,
+ }));
+ }
+
this.sites = this.network.sites
.filter(site => !site.independent)
+ .concat(this.studios)
.sort(({ name: nameA }, { name: nameB }) => nameA.localeCompare(nameB));
this.releases = this.network.sites.map(site => site.releases).flat();
@@ -89,7 +97,8 @@ export default {
data() {
return {
network: null,
- sites: null,
+ sites: [],
+ studios: [],
releases: [],
pageTitle: null,
expanded: false,
@@ -158,12 +167,13 @@ export default {
}
.header {
- background: $profile;
width: 100%;
- height: 4rem;
+ height: 3rem;
display: none;
+ flex-shrink: 0;
justify-content: center;
border-bottom: solid 1px $shadow-hint;
+ background: $profile;
}
.sites.compact {
diff --git a/assets/components/networks/networks.vue b/assets/components/networks/networks.vue
index 508dcb6c..29724589 100644
--- a/assets/components/networks/networks.vue
+++ b/assets/components/networks/networks.vue
@@ -29,10 +29,18 @@ export default {
diff --git a/assets/components/releases/release.vue b/assets/components/releases/release.vue
index 4ec6d64b..5d3c5906 100644
--- a/assets/components/releases/release.vue
+++ b/assets/components/releases/release.vue
@@ -80,7 +80,21 @@
presents
-
+
+
+
+
+
{{ release.network.name }}
+ {{ release.studio.name }}
+
{{ release.site.name }}
curateRelease(release));
if (site.network || network) curatedSite.network = site.network || network;
+ if (site.parameters) {
+ curatedSite.independent = !!JSON.parse(site.parameters).independent;
+ }
+
return curatedSite;
}
@@ -52,6 +56,14 @@ function curateNetwork(network) {
curatedNetwork.sites = network.sites.map(site => curateSite(site, curatedNetwork));
}
+ if (network.studios) {
+ curatedNetwork.studios = network.studios;
+ }
+
+ if (network.parameters) {
+ curatedNetwork.parameters = JSON.parse(network.parameters);
+ }
+
return curatedNetwork;
}
diff --git a/assets/js/fragments.js b/assets/js/fragments.js
index 013df6fe..27006318 100644
--- a/assets/js/fragments.js
+++ b/assets/js/fragments.js
@@ -113,6 +113,12 @@ const releasesFragment = `
${releaseTagsFragment}
${releasePosterFragment}
${siteFragment}
+ studio {
+ id
+ name
+ slug
+ url
+ }
}
`;
diff --git a/assets/js/networks/actions.js b/assets/js/networks/actions.js
index 675aaab6..e1ddcbef 100644
--- a/assets/js/networks/actions.js
+++ b/assets/js/networks/actions.js
@@ -22,6 +22,7 @@ function initNetworksActions(store, _router) {
slug
url
${releasesFragment}
+ parameters
network {
id
name
@@ -29,6 +30,12 @@ function initNetworksActions(store, _router) {
url
}
}
+ studios {
+ id
+ name
+ slug
+ url
+ }
}
}
`, {
diff --git a/config/default.js b/config/default.js
index 38e138db..258cf281 100644
--- a/config/default.js
+++ b/config/default.js
@@ -51,7 +51,7 @@ module.exports = {
'vixen',
'xempire',
],
- fetchAfter: [3, 'months'],
+ fetchAfter: [1, 'week'],
columns: [
{
value: 'date',
diff --git a/package-lock.json b/package-lock.json
index 207b3a8b..4136d3e7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2626,6 +2626,14 @@
"toidentifier": "1.0.0"
}
},
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
"mime-db": {
"version": "1.40.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
@@ -4648,6 +4656,17 @@
"chardet": "^0.7.0",
"iconv-lite": "^0.4.24",
"tmp": "^0.0.33"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ }
}
},
"extglob": {
@@ -6217,9 +6236,9 @@
}
},
"iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz",
+ "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
@@ -7746,6 +7765,14 @@
"ms": "^2.1.1"
}
},
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -9236,6 +9263,14 @@
"toidentifier": "1.0.0"
}
},
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
"setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
@@ -12039,6 +12074,16 @@
"integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
"requires": {
"iconv-lite": "0.4.24"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ }
}
},
"whatwg-mimetype": {
diff --git a/package.json b/package.json
index 3484e5fc..22023306 100644
--- a/package.json
+++ b/package.json
@@ -85,6 +85,7 @@
"face-api.js": "^0.21.0",
"fs-extra": "^7.0.1",
"graphile-utils": "^4.5.6",
+ "iconv-lite": "^0.5.0",
"jsdom": "^15.2.1",
"knex": "^0.16.5",
"knex-migrate": "^1.7.4",
diff --git a/public/css/style.css b/public/css/style.css
index a2fcb116..54c92f24 100644
--- a/public/css/style.css
+++ b/public/css/style.css
@@ -149,9 +149,17 @@
position: absolute;
font-size: 0;
}
+.details .favicon[data-v-3abcf101] {
+ height: 1rem;
+ margin: 0 .25rem 0 0;
+}
.site[data-v-3abcf101],
.date[data-v-3abcf101] {
color: #fff;
+ display: -webkit-box;
+ display: flex;
+ -webkit-box-align: center;
+ align-items: center;
background: rgba(0, 0, 0, 0.5);
position: relative;
font-size: .8rem;
@@ -684,13 +692,14 @@
filter: drop-shadow(1px 0 0 rgba(255, 255, 255, 0.2)) drop-shadow(-1px 0 0 rgba(255, 255, 255, 0.2)) drop-shadow(0 1px 0 rgba(255, 255, 255, 0.2)) drop-shadow(0 -1px 0 rgba(255, 255, 255, 0.2));
}
.header[data-v-e2e12602] {
- background: #222;
width: 100%;
- height: 4rem;
+ height: 3rem;
display: none;
+ flex-shrink: 0;
-webkit-box-pack: center;
justify-content: center;
border-bottom: solid 1px rgba(0, 0, 0, 0.1);
+ background: #222;
}
.sites.compact[data-v-e2e12602] {
display: none;
@@ -786,12 +795,18 @@
margin: 0;
}
+/* $primary: #ff886c; */
.networks[data-v-4709d404] {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
grid-gap: 1rem;
padding: 1rem;
}
+@media (max-width: 720px) {
+.networks[data-v-4709d404] {
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
+}
+}
/* $primary: #ff886c; */
.photos[data-v-0a0430c7] {
diff --git a/public/img/logos/bang/bang.png b/public/img/logos/bang/bang.png
new file mode 100644
index 00000000..122642e3
Binary files /dev/null and b/public/img/logos/bang/bang.png differ
diff --git a/public/img/logos/bang/bangcasting.png b/public/img/logos/bang/bangcasting.png
new file mode 100644
index 00000000..d20f926f
Binary files /dev/null and b/public/img/logos/bang/bangcasting.png differ
diff --git a/public/img/logos/bang/bangconfessions.png b/public/img/logos/bang/bangconfessions.png
new file mode 100644
index 00000000..495120bd
Binary files /dev/null and b/public/img/logos/bang/bangconfessions.png differ
diff --git a/public/img/logos/bang/bangfcknews.png b/public/img/logos/bang/bangfcknews.png
new file mode 100644
index 00000000..9256f16f
Binary files /dev/null and b/public/img/logos/bang/bangfcknews.png differ
diff --git a/public/img/logos/bang/bangglamkore.png b/public/img/logos/bang/bangglamkore.png
new file mode 100644
index 00000000..a1ed5c7f
Binary files /dev/null and b/public/img/logos/bang/bangglamkore.png differ
diff --git a/public/img/logos/bang/bangjapan.png b/public/img/logos/bang/bangjapan.png
new file mode 100644
index 00000000..598a96cc
Binary files /dev/null and b/public/img/logos/bang/bangjapan.png differ
diff --git a/public/img/logos/bang/bangrammed.png b/public/img/logos/bang/bangrammed.png
new file mode 100644
index 00000000..c10f6d51
Binary files /dev/null and b/public/img/logos/bang/bangrammed.png differ
diff --git a/public/img/logos/bang/bangrealmilfs.png b/public/img/logos/bang/bangrealmilfs.png
new file mode 100644
index 00000000..d0e9917b
Binary files /dev/null and b/public/img/logos/bang/bangrealmilfs.png differ
diff --git a/public/img/logos/bang/bangrealteens.png b/public/img/logos/bang/bangrealteens.png
new file mode 100644
index 00000000..7d1ffa38
Binary files /dev/null and b/public/img/logos/bang/bangrealteens.png differ
diff --git a/public/img/logos/bang/bangroadsidexxx.png b/public/img/logos/bang/bangroadsidexxx.png
new file mode 100644
index 00000000..e2278e5b
Binary files /dev/null and b/public/img/logos/bang/bangroadsidexxx.png differ
diff --git a/public/img/logos/bang/bangscrewthecops.png b/public/img/logos/bang/bangscrewthecops.png
new file mode 100644
index 00000000..e380ea31
Binary files /dev/null and b/public/img/logos/bang/bangscrewthecops.png differ
diff --git a/public/img/logos/bang/bangsurprise.png b/public/img/logos/bang/bangsurprise.png
new file mode 100644
index 00000000..cbdd345c
Binary files /dev/null and b/public/img/logos/bang/bangsurprise.png differ
diff --git a/public/img/logos/bang/bangtrickery.png b/public/img/logos/bang/bangtrickery.png
new file mode 100644
index 00000000..2c4a5f7d
Binary files /dev/null and b/public/img/logos/bang/bangtrickery.png differ
diff --git a/public/img/logos/bang/favicon.png b/public/img/logos/bang/favicon.png
new file mode 100644
index 00000000..ab91361b
Binary files /dev/null and b/public/img/logos/bang/favicon.png differ
diff --git a/public/img/logos/bang/network.png b/public/img/logos/bang/network.png
new file mode 100644
index 00000000..acb808b8
Binary files /dev/null and b/public/img/logos/bang/network.png differ
diff --git a/public/img/logos/bang/prettyandraw.png b/public/img/logos/bang/prettyandraw.png
new file mode 100644
index 00000000..b9850a1f
Binary files /dev/null and b/public/img/logos/bang/prettyandraw.png differ
diff --git a/public/img/logos/bang/yngrcom.png b/public/img/logos/bang/yngrcom.png
new file mode 100644
index 00000000..47d6ea29
Binary files /dev/null and b/public/img/logos/bang/yngrcom.png differ
diff --git a/public/img/logos/brazzers/favicon.png b/public/img/logos/brazzers/favicon.png
new file mode 100644
index 00000000..28ccaceb
Binary files /dev/null and b/public/img/logos/brazzers/favicon.png differ
diff --git a/public/img/logos/kink/favicon.png b/public/img/logos/kink/favicon.png
new file mode 100644
index 00000000..65d5d8f8
Binary files /dev/null and b/public/img/logos/kink/favicon.png differ
diff --git a/public/img/logos/legalporno/favicon.png b/public/img/logos/legalporno/favicon.png
new file mode 100644
index 00000000..14b597f1
Binary files /dev/null and b/public/img/logos/legalporno/favicon.png differ
diff --git a/public/img/logos/pervcity/network.png b/public/img/logos/pervcity/network.png
index 6b6b2984..d26e9195 100644
Binary files a/public/img/logos/pervcity/network.png and b/public/img/logos/pervcity/network.png differ
diff --git a/public/img/logos/realitykings/40inchplus.png b/public/img/logos/realitykings/40inchplus.png
new file mode 100644
index 00000000..7a1d123f
Binary files /dev/null and b/public/img/logos/realitykings/40inchplus.png differ
diff --git a/public/img/logos/realitykings/8thstreetlatinas.png b/public/img/logos/realitykings/8thstreetlatinas.png
index 7669b258..007f5f4d 100644
Binary files a/public/img/logos/realitykings/8thstreetlatinas.png and b/public/img/logos/realitykings/8thstreetlatinas.png differ
diff --git a/public/img/logos/realitykings/badtowtruck.png b/public/img/logos/realitykings/badtowtruck.png
index 2080aa75..d2034b88 100644
Binary files a/public/img/logos/realitykings/badtowtruck.png and b/public/img/logos/realitykings/badtowtruck.png differ
diff --git a/public/img/logos/realitykings/bignaturals.png b/public/img/logos/realitykings/bignaturals.png
index 13fe7384..044dac65 100644
Binary files a/public/img/logos/realitykings/bignaturals.png and b/public/img/logos/realitykings/bignaturals.png differ
diff --git a/public/img/logos/realitykings/bigtitsboss.png b/public/img/logos/realitykings/bigtitsboss.png
index 10ce84b1..47baa03f 100644
Binary files a/public/img/logos/realitykings/bigtitsboss.png and b/public/img/logos/realitykings/bigtitsboss.png differ
diff --git a/public/img/logos/realitykings/bikinicrashers.png b/public/img/logos/realitykings/bikinicrashers.png
index d1c4ff5e..0da72a8d 100644
Binary files a/public/img/logos/realitykings/bikinicrashers.png and b/public/img/logos/realitykings/bikinicrashers.png differ
diff --git a/public/img/logos/realitykings/blackgfs.png b/public/img/logos/realitykings/blackgfs.png
index 0e399ad1..59d4f849 100644
Binary files a/public/img/logos/realitykings/blackgfs.png and b/public/img/logos/realitykings/blackgfs.png differ
diff --git a/public/img/logos/realitykings/captainstabbin.png b/public/img/logos/realitykings/captainstabbin.png
index 423b6a57..c0896915 100644
Binary files a/public/img/logos/realitykings/captainstabbin.png and b/public/img/logos/realitykings/captainstabbin.png differ
diff --git a/public/img/logos/realitykings/cfnmsecret.png b/public/img/logos/realitykings/cfnmsecret.png
index 0988a7c8..90db0ded 100644
Binary files a/public/img/logos/realitykings/cfnmsecret.png and b/public/img/logos/realitykings/cfnmsecret.png differ
diff --git a/public/img/logos/realitykings/crazyasiangfs.png b/public/img/logos/realitykings/crazyasiangfs.png
index 5c180cbb..b3230822 100644
Binary files a/public/img/logos/realitykings/crazyasiangfs.png and b/public/img/logos/realitykings/crazyasiangfs.png differ
diff --git a/public/img/logos/realitykings/crazycollegegfs.png b/public/img/logos/realitykings/crazycollegegfs.png
index 540cb410..54d3c061 100644
Binary files a/public/img/logos/realitykings/crazycollegegfs.png and b/public/img/logos/realitykings/crazycollegegfs.png differ
diff --git a/public/img/logos/realitykings/cumfiesta.png b/public/img/logos/realitykings/cumfiesta.png
index 284a5aa3..e56e1f7a 100644
Binary files a/public/img/logos/realitykings/cumfiesta.png and b/public/img/logos/realitykings/cumfiesta.png differ
diff --git a/public/img/logos/realitykings/cumgirls.png b/public/img/logos/realitykings/cumgirls.png
new file mode 100644
index 00000000..ddf92372
Binary files /dev/null and b/public/img/logos/realitykings/cumgirls.png differ
diff --git a/public/img/logos/realitykings/dangerousdongs.png b/public/img/logos/realitykings/dangerousdongs.png
new file mode 100644
index 00000000..58835861
Binary files /dev/null and b/public/img/logos/realitykings/dangerousdongs.png differ
diff --git a/public/img/logos/realitykings/daredorm.png b/public/img/logos/realitykings/daredorm.png
index 94124205..7af49461 100644
Binary files a/public/img/logos/realitykings/daredorm.png and b/public/img/logos/realitykings/daredorm.png differ
diff --git a/public/img/logos/realitykings/eurosexparties.png b/public/img/logos/realitykings/eurosexparties.png
index 03ef8200..02dc1aa4 100644
Binary files a/public/img/logos/realitykings/eurosexparties.png and b/public/img/logos/realitykings/eurosexparties.png differ
diff --git a/public/img/logos/realitykings/extremeasses.png b/public/img/logos/realitykings/extremeasses.png
new file mode 100644
index 00000000..986519b1
Binary files /dev/null and b/public/img/logos/realitykings/extremeasses.png differ
diff --git a/public/img/logos/realitykings/firsttimeauditions.png b/public/img/logos/realitykings/firsttimeauditions.png
index 304b7cb8..3fa4d26e 100644
Binary files a/public/img/logos/realitykings/firsttimeauditions.png and b/public/img/logos/realitykings/firsttimeauditions.png differ
diff --git a/public/img/logos/realitykings/flowertucci.png b/public/img/logos/realitykings/flowertucci.png
new file mode 100644
index 00000000..d6284ac1
Binary files /dev/null and b/public/img/logos/realitykings/flowertucci.png differ
diff --git a/public/img/logos/realitykings/gfrevenge.png b/public/img/logos/realitykings/gfrevenge.png
index 816e0e59..f71bc46f 100644
Binary files a/public/img/logos/realitykings/gfrevenge.png and b/public/img/logos/realitykings/gfrevenge.png differ
diff --git a/public/img/logos/realitykings/happytugs.png b/public/img/logos/realitykings/happytugs.png
index bf2d5d0b..2ca4192d 100644
Binary files a/public/img/logos/realitykings/happytugs.png and b/public/img/logos/realitykings/happytugs.png differ
diff --git a/public/img/logos/realitykings/hdlove.png b/public/img/logos/realitykings/hdlove.png
index 8e73324b..d59c6220 100644
Binary files a/public/img/logos/realitykings/hdlove.png and b/public/img/logos/realitykings/hdlove.png differ
diff --git a/public/img/logos/realitykings/hornybirds.png b/public/img/logos/realitykings/hornybirds.png
new file mode 100644
index 00000000..fad858f0
Binary files /dev/null and b/public/img/logos/realitykings/hornybirds.png differ
diff --git a/public/img/logos/realitykings/hotbush.png b/public/img/logos/realitykings/hotbush.png
index 040e4858..9ebf7128 100644
Binary files a/public/img/logos/realitykings/hotbush.png and b/public/img/logos/realitykings/hotbush.png differ
diff --git a/public/img/logos/realitykings/inthevip.png b/public/img/logos/realitykings/inthevip.png
new file mode 100644
index 00000000..8562bc1f
Binary files /dev/null and b/public/img/logos/realitykings/inthevip.png differ
diff --git a/public/img/logos/realitykings/lilhumpers.png b/public/img/logos/realitykings/lilhumpers.png
new file mode 100644
index 00000000..d61af75b
Binary files /dev/null and b/public/img/logos/realitykings/lilhumpers.png differ
diff --git a/public/img/logos/realitykings/lookathernow.png b/public/img/logos/realitykings/lookathernow.png
index ffca06b9..2630773d 100644
Binary files a/public/img/logos/realitykings/lookathernow.png and b/public/img/logos/realitykings/lookathernow.png differ
diff --git a/public/img/logos/realitykings/mikeinbrazil.png b/public/img/logos/realitykings/mikeinbrazil.png
new file mode 100644
index 00000000..2d1e18fb
Binary files /dev/null and b/public/img/logos/realitykings/mikeinbrazil.png differ
diff --git a/public/img/logos/realitykings/mikesapartment.png b/public/img/logos/realitykings/mikesapartment.png
index 53c8a61e..8fc5a94a 100644
Binary files a/public/img/logos/realitykings/mikesapartment.png and b/public/img/logos/realitykings/mikesapartment.png differ
diff --git a/public/img/logos/realitykings/milfhunter.png b/public/img/logos/realitykings/milfhunter.png
index c9d68028..8475a161 100644
Binary files a/public/img/logos/realitykings/milfhunter.png and b/public/img/logos/realitykings/milfhunter.png differ
diff --git a/public/img/logos/realitykings/momsbangteens.png b/public/img/logos/realitykings/momsbangteens.png
index 3346465f..599b8540 100644
Binary files a/public/img/logos/realitykings/momsbangteens.png and b/public/img/logos/realitykings/momsbangteens.png differ
diff --git a/public/img/logos/realitykings/momslickteens.png b/public/img/logos/realitykings/momslickteens.png
new file mode 100644
index 00000000..6a173bbf
Binary files /dev/null and b/public/img/logos/realitykings/momslickteens.png differ
diff --git a/public/img/logos/realitykings/moneytalks.png b/public/img/logos/realitykings/moneytalks.png
index ce52f26b..3c6598ee 100644
Binary files a/public/img/logos/realitykings/moneytalks.png and b/public/img/logos/realitykings/moneytalks.png differ
diff --git a/public/img/logos/realitykings/monstercurves.png b/public/img/logos/realitykings/monstercurves.png
index e51e953b..e5b44de7 100644
Binary files a/public/img/logos/realitykings/monstercurves.png and b/public/img/logos/realitykings/monstercurves.png differ
diff --git a/public/img/logos/realitykings/network.png b/public/img/logos/realitykings/network.png
index d82e0056..0a828056 100644
Binary files a/public/img/logos/realitykings/network.png and b/public/img/logos/realitykings/network.png differ
diff --git a/public/img/logos/realitykings/nofaces.png b/public/img/logos/realitykings/nofaces.png
new file mode 100644
index 00000000..d387d8ed
Binary files /dev/null and b/public/img/logos/realitykings/nofaces.png differ
diff --git a/public/img/logos/realitykings/pure18.png b/public/img/logos/realitykings/pure18.png
index 0dee4341..9679ea9f 100644
Binary files a/public/img/logos/realitykings/pure18.png and b/public/img/logos/realitykings/pure18.png differ
diff --git a/public/img/logos/realitykings/realorgasms.png b/public/img/logos/realitykings/realorgasms.png
new file mode 100644
index 00000000..a8ee9c8f
Binary files /dev/null and b/public/img/logos/realitykings/realorgasms.png differ
diff --git a/public/img/logos/realitykings/recklessinmiami.png b/public/img/logos/realitykings/recklessinmiami.png
index 8953683e..12f52fa5 100644
Binary files a/public/img/logos/realitykings/recklessinmiami.png and b/public/img/logos/realitykings/recklessinmiami.png differ
diff --git a/public/img/logos/realitykings/rkprime.png b/public/img/logos/realitykings/rkprime.png
index 6f01e1a1..0509f35e 100644
Binary files a/public/img/logos/realitykings/rkprime.png and b/public/img/logos/realitykings/rkprime.png differ
diff --git a/public/img/logos/realitykings/roundandbrown.png b/public/img/logos/realitykings/roundandbrown.png
index 9c49b821..96b4774d 100644
Binary files a/public/img/logos/realitykings/roundandbrown.png and b/public/img/logos/realitykings/roundandbrown.png differ
diff --git a/public/img/logos/realitykings/sneakysex.png b/public/img/logos/realitykings/sneakysex.png
index 960be999..de2a95f2 100644
Binary files a/public/img/logos/realitykings/sneakysex.png and b/public/img/logos/realitykings/sneakysex.png differ
diff --git a/public/img/logos/realitykings/streetblowjobs.png b/public/img/logos/realitykings/streetblowjobs.png
index 07a68257..900bd4d8 100644
Binary files a/public/img/logos/realitykings/streetblowjobs.png and b/public/img/logos/realitykings/streetblowjobs.png differ
diff --git a/public/img/logos/realitykings/teenslovehugecocks.png b/public/img/logos/realitykings/teenslovehugecocks.png
index fbf6c4b5..388f13be 100644
Binary files a/public/img/logos/realitykings/teenslovehugecocks.png and b/public/img/logos/realitykings/teenslovehugecocks.png differ
diff --git a/public/img/logos/realitykings/topshelfpussy.png b/public/img/logos/realitykings/topshelfpussy.png
new file mode 100644
index 00000000..5d3e04d1
Binary files /dev/null and b/public/img/logos/realitykings/topshelfpussy.png differ
diff --git a/public/img/logos/realitykings/trannysurprise.png b/public/img/logos/realitykings/trannysurprise.png
index 077ffe73..185e1bf9 100644
Binary files a/public/img/logos/realitykings/trannysurprise.png and b/public/img/logos/realitykings/trannysurprise.png differ
diff --git a/public/img/logos/realitykings/vipcrew.png b/public/img/logos/realitykings/vipcrew.png
new file mode 100644
index 00000000..52b07897
Binary files /dev/null and b/public/img/logos/realitykings/vipcrew.png differ
diff --git a/public/img/logos/realitykings/welivetogether.png b/public/img/logos/realitykings/welivetogether.png
index 65c64508..25fe2e6d 100644
Binary files a/public/img/logos/realitykings/welivetogether.png and b/public/img/logos/realitykings/welivetogether.png differ
diff --git a/seeds/00_networks.js b/seeds/00_networks.js
index f09bc3c2..97aebfbc 100644
--- a/seeds/00_networks.js
+++ b/seeds/00_networks.js
@@ -8,6 +8,11 @@ const networks = [
url: 'https://www.21sextury.com',
description: 'Watch all the latest scenes and porn video updates on 21Sextury.com, the best European porn site with the hottest pornstars from all over the world! Watch porn videos from the large network here.',
},
+ {
+ slug: 'bang',
+ name: 'Bang!',
+ url: 'https://bang.com',
+ },
{
slug: 'bangbros',
name: 'Bang Bros',
diff --git a/seeds/01_sites.js b/seeds/01_sites.js
index 1302df53..2f556579 100644
--- a/seeds/01_sites.js
+++ b/seeds/01_sites.js
@@ -119,6 +119,15 @@ function getSites(networksMap) {
name: 'Sweet Sophie Moone',
network_id: networksMap['21sextury'],
},
+ // BANG
+ {
+ slug: 'bang',
+ network_id: networksMap.bang,
+ name: 'Bang!',
+ url: 'https://bang.com',
+ description: null,
+ parameters: JSON.stringify({ independent: true }),
+ },
// BANGBROS
{
slug: 'assparade',
@@ -638,7 +647,7 @@ function getSites(networksMap) {
},
{
slug: 'milfslikeitbig',
- name: 'Milfs Like it Big',
+ name: 'MILFs Like It Big',
url: 'https://www.brazzers.com/sites/view/id/36/milfs-like-it-big',
description: "When hubby's away milfy will play. These bored housewives want to get fucked and they want it now. They're experienced and know what they want. America's suburbs are full of these cum-de-sacs just waiting to get laid. Their round tits and thick asses are just begging for it. Cum inside, but don't park out front!",
network_id: networksMap.brazzers,
@@ -2279,6 +2288,14 @@ function getSites(networksMap) {
slug: 'girlsofnaked',
network_id: networksMap.realitykings,
},
+ {
+ name: 'Lil Humpers',
+ url: 'https://lilhumpers.com',
+ description: '',
+ parameters: JSON.stringify({ siteId: 310 }),
+ slug: 'lilhumpers',
+ network_id: networksMap.realitykings,
+ },
{
name: 'Mike in Brazil',
url: 'https://www.realitykings.com/scenes?site=24',
diff --git a/seeds/02_studios.js b/seeds/02_studios.js
index c421f12e..a9e8e62c 100644
--- a/seeds/02_studios.js
+++ b/seeds/02_studios.js
@@ -2,6 +2,91 @@ const upsert = require('../src/utils/upsert');
function getStudios(networksMap) {
return [
+ // Bang!
+ {
+ name: 'Trickery',
+ slug: 'bangtrickery',
+ url: 'https://www.bang.com/original/4800/bang-trickery',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Yngr',
+ slug: 'yngrcom',
+ url: 'https://www.bang.com/original/5010/bang-yngr',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Roadside XXX',
+ slug: 'bangroadsidexxx',
+ url: 'https://www.bang.com/original/4864/roadside-xxx',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Surprise',
+ slug: 'bangsurprise',
+ url: 'https://www.bang.com/original/5000/bang-surprise',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Real Teens',
+ slug: 'bangrealteens',
+ url: 'https://www.bang.com/original/3366/bang-real-teens',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'FCK.news',
+ slug: 'bangfcknews',
+ url: 'https://www.bang.com/original/4998/bang-fckNews',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Pretty & Raw',
+ slug: 'prettyandraw',
+ url: 'https://www.bang.com/original/4792/bang-pretty-and-raw',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Japan',
+ slug: 'bangjapan',
+ url: 'https://www.bang.com/original/3079/bang-japan',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Rammed',
+ slug: 'bangrammed',
+ url: 'https://www.bang.com/original/4836/bang-rammed',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Glamkore',
+ slug: 'bangglamkore',
+ url: 'https://www.bang.com/original/4586/bang-glamkore',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Screw The Cops',
+ slug: 'bangscrewthecops',
+ url: 'https://www.bang.com/original/4710/bang-screw-cops',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Real MILFs',
+ slug: 'bangrealmilfs',
+ url: 'https://www.bang.com/original/4448/bang-real-milfs',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Confessions',
+ slug: 'bangconfessions',
+ url: 'https://www.bang.com/original/4308/bang-confessions',
+ network_id: networksMap.bang,
+ },
+ {
+ name: 'Casting',
+ slug: 'bangcasting',
+ url: 'https://www.bang.com/original/3261/bang-casting',
+ network_id: networksMap.bang,
+ },
// LegalPorno
{
slug: 'gonzocom',
diff --git a/seeds/04_media.js b/seeds/04_media.js
index d6aa6964..9661cf32 100644
--- a/seeds/04_media.js
+++ b/seeds/04_media.js
@@ -291,6 +291,6 @@ exports.seed = knex => Promise.resolve()
return Promise.all([
upsert('tags_posters', tagPosterEntries, 'tag_id', knex),
- upsert('tags_photos', tagPhotoEntries, 'tag_id', knex),
+ upsert('tags_photos', tagPhotoEntries, ['tag_id', 'media_id'], knex),
]);
});
diff --git a/seeds/05_countries.js b/seeds/05_countries.js
index 30828120..def7c01c 100644
--- a/seeds/05_countries.js
+++ b/seeds/05_countries.js
@@ -1646,6 +1646,7 @@ const countries = [
},
{
name: 'United Kingdom of Great Britain and Northern Ireland',
+ alias: 'United Kingdom',
code: 826,
alpha2: 'GB',
alpha3: 'GBR',
diff --git a/src/releases.js b/src/releases.js
index 1c96f338..f19cc7df 100644
--- a/src/releases.js
+++ b/src/releases.js
@@ -180,6 +180,23 @@ async function attachChannelSite(release) {
};
}
+async function attachStudio(release) {
+ if (!release.studio) {
+ return release;
+ }
+
+ const studio = await knex('studios')
+ .where('name', release.studio)
+ .orWhere('slug', release.studio)
+ .orWhere('url', release.studio)
+ .first();
+
+ return {
+ ...release,
+ studio,
+ };
+}
+
async function curateReleaseEntry(release) {
const curatedRelease = {
site_id: release.site.id,
@@ -295,27 +312,31 @@ async function storeReleaseAssets(release, releaseId) {
await createMediaDirectory('releases', subpath);
try {
- await Promise.all([
- storePhotos(release.photos, {
- targetId: releaseId,
- subpath,
- primaryRole: release.poster ? null : 'poster',
- }, identifier),
- release.poster && storePhotos([release.poster], {
+ // don't use Promise.all to prevent concurrency issues with duplicate detection
+ if (release.poster) {
+ await storePhotos([release.poster], {
role: 'poster',
targetId: releaseId,
subpath,
- }, identifier),
- storePhotos(release.covers, {
- role: 'cover',
- targetId: releaseId,
- subpath,
- }, identifier),
- storeTrailer(release.trailer, {
- targetId: releaseId,
- subpath,
- }, identifier),
- ]);
+ }, identifier);
+ }
+
+ await storePhotos(release.photos, {
+ targetId: releaseId,
+ subpath,
+ primaryRole: release.poster ? null : 'poster',
+ }, identifier);
+
+ await storePhotos(release.covers, {
+ role: 'cover',
+ targetId: releaseId,
+ subpath,
+ }, identifier);
+
+ await storeTrailer(release.trailer, {
+ targetId: releaseId,
+ subpath,
+ }, identifier);
} catch (error) {
console.log(release.url, error);
}
@@ -363,7 +384,8 @@ async function storeReleases(releases) {
const storedReleases = await Promise.map(releases, async (release) => {
try {
const releaseWithChannelSite = await attachChannelSite(release);
- const releaseId = await storeRelease(releaseWithChannelSite);
+ const releaseWithStudio = await attachStudio(release);
+ const releaseId = await storeRelease(releaseWithStudio);
return {
id: releaseId,
diff --git a/src/scrapers/bang.js b/src/scrapers/bang.js
new file mode 100644
index 00000000..f0ed9b7e
--- /dev/null
+++ b/src/scrapers/bang.js
@@ -0,0 +1,127 @@
+'use strict';
+
+const bhttp = require('bhttp');
+
+function encodeId(id) {
+ return Buffer
+ .from(id, 'hex')
+ .toString('base64')
+ .replace(/\+/g, '-')
+ .replace(/\//g, '_')
+ .replace(/=/g, ',');
+}
+
+function scrapeLatest(scenes, site) {
+ return scenes.map(({ _source: scene }) => {
+ const release = {
+ site,
+ entryId: encodeId(scene.id),
+ title: scene.name,
+ description: scene.description,
+ actors: scene.actors.map(actor => actor.name),
+ tags: scene.genres.concat(scene.actions).map(genre => genre.name),
+ duration: scene.duration,
+ };
+
+ const slug = release.title.toLowerCase().trim().replace(/\s+/g, '-');
+ release.url = `https://www.bang.com/video/${release.entryId}/${slug}`;
+
+ const date = new Date(scene.releaseDate);
+ release.date = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
+
+ if (scene.is4k) release.tags.push('4k');
+ if (scene.gay) release.tags.push('gay');
+
+ const defaultPoster = scene.screenshots.find(photo => photo.default === true);
+ const photoset = scene.screenshots.filter(photo => photo.default === false);
+
+ const photos = defaultPoster ? photoset : photoset.slice(1);
+ const poster = defaultPoster || photoset[0];
+
+ release.poster = `https://i.bang.com/screenshots/${scene.dvd.id}/movie/1/${poster.screenId}.jpg`;
+ release.photos = photos.map(photo => `https://i.bang.com/screenshots/${scene.dvd.id}/movie/1/${photo.screenId}.jpg`);
+
+ release.trailer = {
+ src: `https://i.bang.com/v/${scene.dvd.id}/${scene.identifier}/preview.mp4`,
+ };
+
+ release.studio = scene.series.name
+ .replace(/[! .]/g, '')
+ .replace('&', 'and');
+
+ return release;
+ });
+}
+
+async function fetchLatest(site, page = 1) {
+ const clusterId = '617fb597b659459bafe6472470d9073a';
+ const authKey = 'YmFuZy1yZWFkOktqVDN0RzJacmQ1TFNRazI=';
+
+ const res = await bhttp.post(`https://${clusterId}.us-east-1.aws.found.io/videos/video/_search`, {
+ size: 50,
+ from: (page - 1) * 50,
+ query: {
+ bool: {
+ must: [
+ {
+ match: {
+ status: 'ok',
+ },
+ },
+ {
+ range: {
+ releaseDate: {
+ lte: 'now',
+ },
+ },
+ },
+ {
+ nested: {
+ path: 'studio',
+ query: {
+ bool: {
+ must: [
+ {
+ match: {
+ 'studio.name': {
+ operator: 'AND',
+ query: 'bang! originals',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ ],
+ must_not: [
+ {
+ match: {
+ type: 'trailer',
+ },
+ },
+ ],
+ },
+ },
+ sort: [
+ {
+ releaseDate: {
+ order: 'desc',
+ },
+ },
+ ],
+ }, {
+ encodeJSON: true,
+ headers: {
+ Authorization: `Basic ${authKey}`,
+ },
+ });
+
+ return scrapeLatest(res.body.hits.hits, site);
+}
+
+module.exports = {
+ fetchLatest,
+ // fetchScene,
+};
diff --git a/src/scrapers/legalporno.js b/src/scrapers/legalporno.js
index b05f83f3..4a6d54a7 100644
--- a/src/scrapers/legalporno.js
+++ b/src/scrapers/legalporno.js
@@ -4,9 +4,6 @@ const bhttp = require('bhttp');
const { JSDOM } = require('jsdom');
const cheerio = require('cheerio');
const moment = require('moment');
-const knex = require('../knex');
-
-const { matchTags } = require('../tags');
function extractTitle(originalTitle) {
const titleComponents = originalTitle.split(' ');
@@ -102,16 +99,8 @@ async function scrapeScene(html, url, site, useGallery) {
const trailer = data.clip.qualities.find(clip => clip.quality === 'vga' || clip.quality === 'hd');
const studioName = $('.watchpage-studioname').first().text().trim();
- const studioSlug = studioName.replace(/\s+/g, '').toLowerCase();
- const rawTags = $(tagsElement).find('a').map((tagIndex, tagElement) => $(tagElement).text()).toArray();
-
- const [studio, tags] = await Promise.all([
- knex('studios')
- .where({ name: studioName })
- .orWhere({ slug: studioSlug })
- .first(),
- matchTags(rawTags),
- ]);
+ const studio = studioName.replace(/[\s.']+/g, '').toLowerCase();
+ const tags = $(tagsElement).find('a').map((tagIndex, tagElement) => $(tagElement).text()).toArray();
return {
url,
diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js
index 27f31e38..fb7ce692 100644
--- a/src/scrapers/scrapers.js
+++ b/src/scrapers/scrapers.js
@@ -2,6 +2,7 @@
// releases
const twentyonesextury = require('./21sextury');
+const bang = require('./bang');
const bangbros = require('./bangbros');
const blowpass = require('./blowpass');
const dogfart = require('./dogfart');
@@ -31,6 +32,7 @@ const pornhub = require('./pornhub');
module.exports = {
releases: {
'21sextury': twentyonesextury,
+ bang,
bangbros,
blowpass,
brazzers,
diff --git a/src/utils/rename.js b/src/utils/rename.js
index bed1e5ed..95bd7f04 100644
--- a/src/utils/rename.js
+++ b/src/utils/rename.js
@@ -3,7 +3,7 @@
const path = require('path');
const Promise = require('bluebird');
const fs = require('fs-extra');
-const fetchScene = require('../scrape-release');
+const fetchScene = require('../scrape-releases');
const argv = require('../argv');