Added Manuel Ferrara site to Jules Jordan. Refactored Jules Jordan photo scraper for better compatability and quality.
|
@ -1,25 +1,27 @@
|
||||||
<template>
|
<template>
|
||||||
<ul class="nolist sites">
|
<div class="sites">
|
||||||
<a
|
<ul class="nolist tiles">
|
||||||
v-if="network"
|
<a
|
||||||
:href="network.url"
|
v-if="network"
|
||||||
target="_blank"
|
:href="network.url"
|
||||||
rel="noopener noreferrer"
|
target="_blank"
|
||||||
class="tile"
|
rel="noopener noreferrer"
|
||||||
>
|
class="tile"
|
||||||
<img
|
|
||||||
:src="`/img/logos/${network.slug}/network.png`"
|
|
||||||
class="logo"
|
|
||||||
>
|
>
|
||||||
</a>
|
<img
|
||||||
|
:src="`/img/logos/${network.slug}/network.png`"
|
||||||
|
class="logo"
|
||||||
|
>
|
||||||
|
</a>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
v-for="site in sites"
|
v-for="site in sites"
|
||||||
:key="`site-${site.id}`"
|
:key="`site-${site.id}`"
|
||||||
>
|
>
|
||||||
<SiteTile :site="site" />
|
<SiteTile :site="site" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -46,15 +48,13 @@ export default {
|
||||||
@import 'theme';
|
@import 'theme';
|
||||||
|
|
||||||
.sites {
|
.sites {
|
||||||
display: grid;
|
overflow: hidden;
|
||||||
grid-gap: 1rem;
|
display: flex;
|
||||||
padding: 1rem;
|
|
||||||
margin: 0;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
overflow-y: auto;
|
|
||||||
|
|
||||||
&.compact:not(.expanded) {
|
&.compact:not(.expanded) {
|
||||||
overflow-x: auto;
|
.tiles {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.tile {
|
.tile {
|
||||||
width: 15rem;
|
width: 15rem;
|
||||||
|
@ -63,10 +63,22 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
&.expanded {
|
&.expanded {
|
||||||
grid-template-columns: repeat(2, .5fr);
|
.tiles {
|
||||||
|
grid-template-columns: repeat(2, .5fr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tiles {
|
||||||
|
display: grid;
|
||||||
|
grid-gap: 1rem;
|
||||||
|
flex-grow: 1;
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 0;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
width: 15rem;
|
width: 15rem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,10 +26,10 @@
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="6.0071666"
|
inkscape:zoom="6.0071666"
|
||||||
inkscape:cx="48.270932"
|
inkscape:cx="20.137868"
|
||||||
inkscape:cy="18.279076"
|
inkscape:cy="18.279076"
|
||||||
inkscape:document-units="mm"
|
inkscape:document-units="mm"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="text4520"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
fit-margin-top="0"
|
fit-margin-top="0"
|
||||||
fit-margin-left="0"
|
fit-margin-left="0"
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title></dc:title>
|
<dc:title />
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -57,18 +57,34 @@
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
transform="translate(-77.20239,-97.922958)">
|
transform="translate(-77.20239,-97.922958)">
|
||||||
<text
|
<g
|
||||||
xml:space="preserve"
|
aria-label="traxxx"
|
||||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff6c88;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff6c88;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
x="77.10714"
|
id="text4520">
|
||||||
y="105.74404"
|
<path
|
||||||
id="text4520"><tspan
|
d="m 77.890306,105.74404 h 1.407584 v -4.58258 h 0.846666 V 99.880875 H 79.29789 v -1.957917 h -1.407584 v 1.957917 H 77.20239 v 1.280585 h 0.687916 z"
|
||||||
sodipodi:role="line"
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"
|
||||||
id="tspan4518"
|
id="path828" />
|
||||||
x="77.10714"
|
<path
|
||||||
y="105.74404"
|
d="M 80.917117,105.74404 H 82.3247 v -3.25967 c -0.03175,-0.86783 0.41275,-1.35466 1.259417,-1.38641 v -1.354668 h -0.105834 c -0.60325,0 -0.899583,0.169333 -1.27,0.709078 v -0.571495 h -1.291166 z"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"><tspan
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#333333;fill-opacity:1"
|
id="path830" />
|
||||||
id="tspan4522">tra</tspan>xxx</tspan></text>
|
<path
|
||||||
|
d="m 90.071688,99.880875 h -1.291166 v 0.783165 c -0.486833,-0.64558 -1.068917,-0.920748 -1.915583,-0.920748 -1.735667,0 -2.9845,1.301748 -2.9845,3.090328 0,1.76742 1.23825,3.048 2.95275,3.048 0.8255,0 1.386416,-0.254 1.947333,-0.89958 v 0.762 h 1.291166 z m -3.058583,1.153585 c 1.005417,0 1.725084,0.75141 1.725084,1.82033 0,0.42333 -0.169334,0.91017 -0.423334,1.2065 -0.28575,0.34925 -0.740833,0.52917 -1.280583,0.52917 -1.026583,0 -1.735667,-0.6985 -1.735667,-1.72509 0,-1.06891 0.709084,-1.83091 1.7145,-1.83091 z"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"
|
||||||
|
id="path832" />
|
||||||
|
<path
|
||||||
|
d="m 90.558521,105.74404 h 1.693333 l 1.227667,-2.01083 1.227666,2.01083 h 1.693334 l -2.084917,-3.02683 1.788583,-2.836335 h -1.5875 l -1.037166,1.767415 -1.058334,-1.767415 h -1.5875 l 1.799167,2.836335 z"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"
|
||||||
|
id="path834" />
|
||||||
|
<path
|
||||||
|
d="m 96.485181,105.74404 h 1.693334 l 1.227666,-2.01083 1.227669,2.01083 h 1.69333 l -2.08492,-3.02683 1.78859,-2.836335 h -1.5875 l -1.037169,1.767415 -1.058333,-1.767415 h -1.5875 l 1.799167,2.836335 z"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"
|
||||||
|
id="path836" />
|
||||||
|
<path
|
||||||
|
d="m 102.41184,105.74404 h 1.69334 l 1.22766,-2.01083 1.22767,2.01083 h 1.69333 l -2.08491,-3.02683 1.78858,-2.836335 h -1.5875 l -1.03717,1.767415 -1.05833,-1.767415 h -1.5875 l 1.79917,2.836335 z"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"
|
||||||
|
id="path838" />
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 5.0 KiB |
|
@ -1,89 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="31.051453mm"
|
|
||||||
height="7.9586663mm"
|
|
||||||
viewBox="0 0 31.051453 7.9586663"
|
|
||||||
version="1.1"
|
|
||||||
id="svg8"
|
|
||||||
sodipodi:docname="logo.svg">
|
|
||||||
<defs
|
|
||||||
id="defs2" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="6.0071666"
|
|
||||||
inkscape:cx="48.270932"
|
|
||||||
inkscape:cy="18.279076"
|
|
||||||
inkscape:document-units="mm"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
showgrid="false"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1026"
|
|
||||||
inkscape:window-x="1047"
|
|
||||||
inkscape:window-y="930"
|
|
||||||
inkscape:window-maximized="1" />
|
|
||||||
<metadata
|
|
||||||
id="metadata5">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-77.20239,-97.922958)">
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff6c88;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
|
||||||
x="77.10714"
|
|
||||||
y="105.74404"
|
|
||||||
id="text4520"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan4518"
|
|
||||||
x="77.10714"
|
|
||||||
y="105.74404"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#ff6c88;fill-opacity:1;stroke-width:0.26458332"><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Bold';fill:#333333;fill-opacity:1"
|
|
||||||
id="tspan4522">tra</tspan>xxx</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
|
||||||
x="90.459816"
|
|
||||||
y="102.49019"
|
|
||||||
id="text4629"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan4627"
|
|
||||||
x="90.459816"
|
|
||||||
y="111.85396"
|
|
||||||
style="stroke-width:0.26458332"></tspan><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
x="90.459816"
|
|
||||||
y="125.08312"
|
|
||||||
style="stroke-width:0.26458332"
|
|
||||||
id="tspan4631" /></text>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 3.2 KiB |
|
@ -641,23 +641,30 @@
|
||||||
/* $primary: #ff886c; */
|
/* $primary: #ff886c; */
|
||||||
/* $logo-highlight: drop-shadow(1px 0 0 $highlight-weak) drop-shadow(-1px 0 0 $highlight-weak) drop-shadow(0 1px 0 $highlight-weak) drop-shadow(0 -1px 0 $highlight-weak); */
|
/* $logo-highlight: drop-shadow(1px 0 0 $highlight-weak) drop-shadow(-1px 0 0 $highlight-weak) drop-shadow(0 1px 0 $highlight-weak) drop-shadow(0 -1px 0 $highlight-weak); */
|
||||||
.sites[data-v-7bebaa3e] {
|
.sites[data-v-7bebaa3e] {
|
||||||
|
overflow: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.sites.compact:not(.expanded) .tiles[data-v-7bebaa3e] {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
.sites.compact:not(.expanded) .tile[data-v-7bebaa3e] {
|
||||||
|
width: 15rem;
|
||||||
|
margin: 0 1rem 0 0;
|
||||||
|
}
|
||||||
|
.sites.expanded .tiles[data-v-7bebaa3e] {
|
||||||
|
grid-template-columns: repeat(2, 0.5fr);
|
||||||
|
}
|
||||||
|
.tiles[data-v-7bebaa3e] {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-gap: 1rem;
|
grid-gap: 1rem;
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
flex-grow: 1;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
.sites.compact[data-v-7bebaa3e]:not(.expanded) {
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
.sites.compact:not(.expanded) .tile[data-v-7bebaa3e] {
|
|
||||||
width: 15rem;
|
|
||||||
margin: 0 1rem 0 0;
|
|
||||||
}
|
|
||||||
.sites.expanded[data-v-7bebaa3e] {
|
|
||||||
grid-template-columns: repeat(2, 0.5fr);
|
|
||||||
}
|
|
||||||
.logo[data-v-7bebaa3e] {
|
.logo[data-v-7bebaa3e] {
|
||||||
width: 15rem;
|
width: 15rem;
|
||||||
}
|
}
|
||||||
|
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
@ -1162,6 +1162,12 @@ function getSites(networksMap) {
|
||||||
url: 'https://www.spermswallowers.com',
|
url: 'https://www.spermswallowers.com',
|
||||||
network_id: networksMap.julesjordan,
|
network_id: networksMap.julesjordan,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
slug: 'manuelferrara',
|
||||||
|
name: 'Manuel Ferrara',
|
||||||
|
url: 'https://www.manuelferrara.com',
|
||||||
|
network_id: networksMap.julesjordan,
|
||||||
|
},
|
||||||
// KELLY MADISON MEDIA
|
// KELLY MADISON MEDIA
|
||||||
{
|
{
|
||||||
slug: 'teenfidelity',
|
slug: 'teenfidelity',
|
||||||
|
|
|
@ -7,6 +7,10 @@ const slugify = require('../utils/slugify');
|
||||||
const clusterId = '617fb597b659459bafe6472470d9073a';
|
const clusterId = '617fb597b659459bafe6472470d9073a';
|
||||||
const authKey = 'YmFuZy1yZWFkOktqVDN0RzJacmQ1TFNRazI=';
|
const authKey = 'YmFuZy1yZWFkOktqVDN0RzJacmQ1TFNRazI=';
|
||||||
|
|
||||||
|
function getScreenUrl(item, scene) {
|
||||||
|
return `https://i.bang.com/screenshots/${scene.dvd.id}/movie/${scene.order}/${item.screenId}.jpg`;
|
||||||
|
}
|
||||||
|
|
||||||
function encodeId(id) {
|
function encodeId(id) {
|
||||||
return Buffer
|
return Buffer
|
||||||
.from(id, 'hex')
|
.from(id, 'hex')
|
||||||
|
@ -53,8 +57,8 @@ function scrapeScene(scene, site) {
|
||||||
const photos = defaultPoster ? photoset : photoset.slice(1);
|
const photos = defaultPoster ? photoset : photoset.slice(1);
|
||||||
const poster = defaultPoster || photoset[0];
|
const poster = defaultPoster || photoset[0];
|
||||||
|
|
||||||
release.poster = `https://i.bang.com/screenshots/${scene.dvd.id}/movie/${scene.order}/${poster.screenId}.jpg`;
|
release.poster = getScreenUrl(poster, scene);
|
||||||
release.photos = photos.map(photo => `https://i.bang.com/screenshots/${scene.dvd.id}/movie/${scene.order}/${photo.screenId}.jpg`);
|
release.photos = photos.map(photo => getScreenUrl(photo, scene));
|
||||||
|
|
||||||
release.trailer = {
|
release.trailer = {
|
||||||
src: `https://i.bang.com/v/${scene.dvd.id}/${scene.identifier}/preview.mp4`,
|
src: `https://i.bang.com/v/${scene.dvd.id}/${scene.identifier}/preview.mp4`,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const Promise = require('bluebird');
|
// const Promise = require('bluebird');
|
||||||
const bhttp = require('bhttp');
|
const bhttp = require('bhttp');
|
||||||
const cheerio = require('cheerio');
|
const cheerio = require('cheerio');
|
||||||
const { JSDOM } = require('jsdom');
|
const { JSDOM } = require('jsdom');
|
||||||
|
@ -32,6 +32,8 @@ function scrapePhotos(html, type) {
|
||||||
|
|
||||||
return [
|
return [
|
||||||
src.replace('thumbs/', 'photos/'),
|
src.replace('thumbs/', 'photos/'),
|
||||||
|
src.replace('thumbs/', '1600watermarked/'),
|
||||||
|
src.replace('thumbs/', '1280watermarked/'),
|
||||||
src.replace('thumbs/', '1024watermarked/'),
|
src.replace('thumbs/', '1024watermarked/'),
|
||||||
src,
|
src,
|
||||||
];
|
];
|
||||||
|
@ -40,8 +42,10 @@ function scrapePhotos(html, type) {
|
||||||
return photos;
|
return photos;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getPhotos(entryId, site, page = 1, type = 'highres') {
|
async function getPhotosLegacy(entryId, site, type = 'highres', page = 1) {
|
||||||
const albumUrl = `https://www.julesjordan.com/trial/gallery.php?id=${entryId}&type=${type}&page=${page}`;
|
const albumUrl = `${site.url}/trial/gallery.php?id=${entryId}&type=${type}&page=${page}`;
|
||||||
|
|
||||||
|
console.warn(`Jules Jordan is using legacy photo scraper for ${albumUrl} (page ${page})`);
|
||||||
|
|
||||||
const html = await fetchPhotos(albumUrl);
|
const html = await fetchPhotos(albumUrl);
|
||||||
const $ = cheerio.load(html, { normalizeWhitespace: true });
|
const $ = cheerio.load(html, { normalizeWhitespace: true });
|
||||||
|
@ -65,12 +69,48 @@ async function getPhotos(entryId, site, page = 1, type = 'highres') {
|
||||||
|
|
||||||
if (allPhotos.length === 0 && type === 'highres') {
|
if (allPhotos.length === 0 && type === 'highres') {
|
||||||
// photos not available, try for screencaps instead
|
// photos not available, try for screencaps instead
|
||||||
return getPhotos(entryId, site, 1, 'caps');
|
return getPhotosLegacy(entryId, site, 'caps', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return allPhotos;
|
return allPhotos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getPhotos(entryId, site, type = 'highres', page = 1) {
|
||||||
|
const albumUrl = `${site.url}/trial/gallery.php?id=${entryId}&type=${type}&page=${page}`;
|
||||||
|
|
||||||
|
const res = await bhttp.get(albumUrl);
|
||||||
|
const html = res.body.toString();
|
||||||
|
|
||||||
|
const sourceLines = html.split(/\n/).filter(line => line.match(/ptx\["\w+"\]/));
|
||||||
|
const sources = sourceLines.reduce((acc, sourceLine) => {
|
||||||
|
const quality = sourceLine.match(/\["\w+"\]/)[0].slice(2, -2);
|
||||||
|
const source = sourceLine.slice(sourceLine.indexOf('/trial'), sourceLine.indexOf('.jpg') + 4);
|
||||||
|
|
||||||
|
if (!source) return acc;
|
||||||
|
if (!acc[quality]) acc[quality] = [];
|
||||||
|
|
||||||
|
acc[quality].push(`${site.url}${source}`);
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
if (type === 'highres') {
|
||||||
|
if (sources['1600'] && sources['1600'].length > 0) return sources['1600'];
|
||||||
|
if (sources['1280'] && sources['1280'].length > 0) return sources['1280'];
|
||||||
|
if (sources['1024'] && sources['1024'].length > 0) return sources['1024'];
|
||||||
|
if (sources.Thumbs && sources.Thumbs.length > 0) return sources.Thumbs;
|
||||||
|
|
||||||
|
// no photos available, try for screencaps instead
|
||||||
|
return getPhotos(entryId, site, 'caps', 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sources.jpg && sources.jpg.length > 0) return sources.jpg;
|
||||||
|
if (sources['Video Cap Thumbs'] && sources['Video Cap Thumbs'].length > 0) return sources['Video Cap Thumbs'];
|
||||||
|
|
||||||
|
// no screencaps available either, try legacy scraper just in case
|
||||||
|
return getPhotosLegacy(entryId, site, 'highres', 1);
|
||||||
|
}
|
||||||
|
|
||||||
function scrapeLatest(html, site) {
|
function scrapeLatest(html, site) {
|
||||||
const $ = cheerio.load(html, { normalizeWhitespace: true });
|
const $ = cheerio.load(html, { normalizeWhitespace: true });
|
||||||
const scenesElements = $('.update_details').toArray();
|
const scenesElements = $('.update_details').toArray();
|
||||||
|
@ -171,9 +211,24 @@ async function scrapeScene(html, url, site) {
|
||||||
|
|
||||||
release.title = $('.title_bar_hilite').text().trim();
|
release.title = $('.title_bar_hilite').text().trim();
|
||||||
[release.entryId] = $('.suggest_tags a').attr('href').match(/\d+/);
|
[release.entryId] = $('.suggest_tags a').attr('href').match(/\d+/);
|
||||||
release.date = moment
|
|
||||||
.utc($('.update_date').text(), 'MM/DD/YYYY')
|
const dateElement = $('.update_date').text().trim();
|
||||||
.toDate();
|
const dateComment = $('*')
|
||||||
|
.contents()
|
||||||
|
.toArray()
|
||||||
|
.find(({ type, data }) => type === 'comment' && data.match('Date OFF'));
|
||||||
|
|
||||||
|
if (dateElement) {
|
||||||
|
release.date = moment
|
||||||
|
.utc($('.update_date').text(), 'MM/DD/YYYY')
|
||||||
|
.toDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dateComment) {
|
||||||
|
release.date = moment
|
||||||
|
.utc(dateComment.nodeValue.match(/\d{2}\/\d{2}\/\d{4}/), 'MM/DD/YYYY')
|
||||||
|
.toDate();
|
||||||
|
}
|
||||||
|
|
||||||
release.description = $('.update_description').text().trim();
|
release.description = $('.update_description').text().trim();
|
||||||
|
|
||||||
|
@ -190,10 +245,12 @@ async function scrapeScene(html, url, site) {
|
||||||
|
|
||||||
const trailerLine = infoLines.find(line => line.match('movie["Trailer_720"]'));
|
const trailerLine = infoLines.find(line => line.match('movie["Trailer_720"]'));
|
||||||
|
|
||||||
release.trailer = {
|
if (site.slug !== 'manuelferrara') {
|
||||||
src: trailerLine.slice(trailerLine.indexOf('path:"') + 6, trailerLine.indexOf('",movie')),
|
release.trailer = {
|
||||||
quality: 720,
|
src: trailerLine.slice(trailerLine.indexOf('path:"') + 6, trailerLine.indexOf('",movie')),
|
||||||
};
|
quality: 720,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
release.photos = await getPhotos(release.entryId, site);
|
release.photos = await getPhotos(release.entryId, site);
|
||||||
|
|
||||||
|
|