From 5bae5b6e5f7cef36afaeec1af325971521c83369 Mon Sep 17 00:00:00 2001 From: Niels Simenon Date: Mon, 3 Feb 2020 02:57:53 +0100 Subject: [PATCH] Adapted Score scraper for 18eighteen, 40 Something Mag and 50 Plus Milfs. Updated Score network logo and favicon. --- assets/js/networks/actions.js | 7 +++++- migrations/20190325001339_releases.js | 5 ++++ migrations/20200201233724_site_priority.js | 10 -------- public/img/logos/score/favicon.png | Bin 3588 -> 1273 bytes public/img/logos/score/network.png | Bin 2453 -> 6472 bytes seeds/01_sites.js | 7 ++++++ src/actors.js | 6 +++-- src/scrapers/score.js | 26 ++++++++++++++------- src/utils/q.js | 2 ++ 9 files changed, 42 insertions(+), 21 deletions(-) delete mode 100644 migrations/20200201233724_site_priority.js diff --git a/assets/js/networks/actions.js b/assets/js/networks/actions.js index 027ca45d..7bfd452a 100644 --- a/assets/js/networks/actions.js +++ b/assets/js/networks/actions.js @@ -19,7 +19,12 @@ function initNetworksActions(store, _router) { slug url sites( - orderBy: PRIORITY_DESC + orderBy: PRIORITY_DESC, + filter: { + enabled: { + equalTo: true, + }, + }, ) { id name diff --git a/migrations/20190325001339_releases.js b/migrations/20190325001339_releases.js index 89667823..db176c81 100644 --- a/migrations/20190325001339_releases.js +++ b/migrations/20190325001339_releases.js @@ -142,6 +142,11 @@ exports.up = knex => Promise.resolve() table.text('description'); table.string('parameters'); + table.integer('priority', 3) + .defaultTo(0); + table.boolean('enabled') + .defaultTo(true); + table.string('slug', 32) .unique(); diff --git a/migrations/20200201233724_site_priority.js b/migrations/20200201233724_site_priority.js deleted file mode 100644 index 1a3b989f..00000000 --- a/migrations/20200201233724_site_priority.js +++ /dev/null @@ -1,10 +0,0 @@ -exports.up = async knex => Promise.resolve() - .then(() => knex.schema.table('sites', (table) => { - table.integer('priority', 3) - .defaultTo(0); - })); - -exports.down = async knex => Promise.resolve() - .then(() => knex.schema.table('sites', (table) => { - table.dropColumn('priority'); - })); diff --git a/public/img/logos/score/favicon.png b/public/img/logos/score/favicon.png index 2c99a835eb0c35cc1dbdff7104ebdf8afe6cde6d..c12d268719c2e1bfd8b0f8ca39bfb802aa253954 100644 GIT binary patch delta 1191 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 E0M{31g#Z8m diff --git a/public/img/logos/score/network.png b/public/img/logos/score/network.png index 30dac119cc931db2c6b6d4c433611599c3acd2d2..57e7a1ad41f82274e25dee998c0cf2ed3b2399db 100644 GIT binary patch delta 6465 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 b9+LkbkGhO_Jpg(Q00000NkvXXu0mjfOawgS literal 2453 zcmb7_e>BtkAICpfG|i99uUO2eE5BOvd*%1$x6w!>vdw6*Su^BU2$3elqUEZqEJY$e zc9DprxG}%3bTh&wrOZ{_>qoomo^!wFeE<0V@qM53dcV&5^?E$d`+d&)bCVdZ% z1s6v&EpIj?HrBjKOT!%L_w3gZz{>?p&wnhTG6B?pxs z_%X@@^sfD3T+@s+3_!0apT&&G^{EZpMwaocK32*`zAfrNmYMrsYr#eCJZnS*qx7n( zZsjP!FceGI`ocS_0h*#)3necruU7ALzOtkEC#RLI=~Q7-a~zG)6D? zo_C%qme`=Be>P90<;9fQ0tYz9W~8mGK+dbh?SlEq;0H0Ayt{`wv=6#6SijG&c8R|O zPIAS20YKt@07%OOfDLge?L7d*A_3q-C;*^K0YHsj)_U}axMAVr>4z0((f_#s5kUNF zZ<$!B$i(A(0c2=?M=IRs;qsvU%_&9t3+*rBF#sfp9xj;OGfg(F;scoO8W;lryP)4g z0^pRXi;FT$H!rNroTP-R?%`tQ#b&XlGtn=Ai6_Lv>5S-bN)#E+OrVqD|IC$DUZro) z6_^fWYeCui!b*cRPQeWSIW=7!vifGi^+rJ6iQ@WT3+zU4c1Co*_-)Yw*jVWL6)*!T*ZvIrMT^`+M z;H;5_GAY$bAcdZW$p_2hO>ZhjJ%*)6#68K*C%s$H*zxP!Y#9mSk_37@eY|~kEi>Bj zNS>M3u|NKrLO8@teu^fY0%IcRo{Za%ag^u{vq*cYYU zZzTFZfs->kdrFE5&PLuoy4M{lYIEA=tD~BmI%a+;$eeahTLukJ?U`GBY9Ff7t#5JJ zN13pOdDELAWNSmFSM~w>ewHUI!ZxnUgq0=gdr{`Tk&9O4I3Q51?g;_~BNIh}sga&DiNE9WFZy?}LQ zIMEIpdHeZK`&WtnRPS3OzH(LuMF%Z)S-p~V4J9Ds&%8Ql{SC>^EU9kHan_k8>ge=3 zC&0$|Q1*vlrP?Z4b`}qRIiW$ZWanXaUeiIIc?G9u9>KUvo5=tM{P$L4e&-}!8h8Ld zKdFgo59)7*Dop6nKXj4r>bLc3G0>j`O7W%zm|_z-hEm-2Oz&Ea{^rojg^1y|pbpub znq_Vdr0}i~ed*`9(H?nI%A)<0{3kRr7|lwl`#o;0Sxv>v%jW%RK?Un&hHr>jEW=Jj zl}UDPSJN>W^eD4`FqOx=>#$~-A=sLbp=B>z3&aF6N?fjt6b@3C<``6&umjLL zt2xU*Bi9O~xdle7fJcD>?^N@33F3t>@ul3~vS?tW?x`CtCtwbo!O0qBERS)sW#un$ zZV)oQuXN1eUT^rvhS^nVm|!uk@rkqREhz)fW0&pS<1R7{(zX!WN%3{+37YG*QeDC= zXL;SwN{i0N_fPn(6xVScLLS95HePbi(JUeR(Q0K(ItW6PS?;^ngdqz1K7lXnWXfYj z&&|+A6<@y^s5FkFy>Y)ZWg&=orm3fvwE8oJVV>Ox{v6Vr3ltDjjFZqU^^daMYOt9_ znsR^moDctWMH^i-yO>K%*$3%2&XC?b6UOJizWA5qhW8kJf~{JS`*tKzAnbl-ZPDz| z_yX!(f8EL%d!JS4zWqE{{o?K~22Wc?_?&aNwwuTFRHVlDb2dQLExR7RK+LO>pN7H) zy_R2pHS-4_aLdLOS-`lRh--Vcb{ZKh`3tL=P@j;KRUy-azNVDBE2~FHpqDEi=}d+qcq|x z`(zPaG!R8pef8SiC69B_GX0T zpGX9w$NkK0Bj^LFmZHkXh87w6H$Gy>Q;GZ`_qJ%S;=&2r$lk?#w#xPQ10Lp_6SvT$e+U4DL?Mll zC}ZRyKNJdWYKk^DH$)=QNTgkAa?^hasL^4R@Pz*@z#*Q2#RARmH;DZQO^T)`FenkH znSf6$F^WQhW1^`93az>DP>>iy{ELN=V@M1Nok@wN0pA}AC&p5un8p+uJO=OL=o#T4 zc0fSoUz$pw#fB3|%vc7Q@el4 Promise.resolve() parameters: JSON.stringify(site.parameters), network_id: networksMap[site.network], priority: site.priority, + enabled: site.enabled, })); return upsert('sites', sitesWithNetworks, 'slug', knex); diff --git a/src/actors.js b/src/actors.js index 38083b78..17025fab 100644 --- a/src/actors.js +++ b/src/actors.js @@ -362,10 +362,12 @@ async function scrapeActors(actorNames) { } logger.verbose(`No profile for '${actorName}' available on ${scraperSlug}`); - throw new Error(`Profile for ${actorName} not available on ${scraperSlug}`); + throw Object.assign(new Error(`Profile for ${actorName} not available on ${scraperSlug}`), { warn: false }); }), Promise.reject(new Error())); } catch (error) { - logger.warn(`Error in scraper ${source}: ${error.message}`); + if (error.warn !== false) { + logger.warn(`Error in scraper ${source}: ${error.message}`); + } } return null; diff --git a/src/scrapers/score.js b/src/scrapers/score.js index 769999fc..810f715f 100644 --- a/src/scrapers/score.js +++ b/src/scrapers/score.js @@ -29,7 +29,7 @@ async function fetchPhotos(url) { } function scrapeAll(html) { - return exa(html, '.container .video').map(({ q, qa, qd, ql }) => { + return exa(html, '.container .video, .container-fluid .video').map(({ q, qa, qd, ql }) => { const release = {}; release.title = q('.title, .i-title', true); @@ -70,10 +70,10 @@ async function scrapeScene(html, url) { [release.entryId] = new URL(url).pathname.split('/').slice(-2); - release.title = q('h2.text-uppercase, h2.title', true); + release.title = q('h2.text-uppercase, h2.title, #breadcrumb-top + h1', true); release.description = qtext('.p-desc, .desc'); - release.actors = qa('.value a[href*=models], .value a[href*=performer]', true); + release.actors = qa('.value a[href*=models], .value a[href*=performer], .value a[href*=teen-babes]', true); release.tags = qa('a[href*=tag]', true); const dateEl = qa('.value').find(el => /\w+ \d+\w+, \d{4}/.test(el.textContent)); @@ -161,8 +161,8 @@ function scrapeProfile(html) { const avatar = qi('img'); if (avatar) profile.avatar = avatar; - const releases = ex(html, '#model-page + .container'); - profile.releases = scrapeAll(releases.document.outerHTML); + const releases = ex(html, '#model-page + .container, #model-page + .container-fluid'); + if (releases) profile.releases = scrapeAll(releases.document.outerHTML); return profile; } @@ -189,10 +189,16 @@ async function fetchScene(url, site) { return null; } -async function fetchProfile(actorName, scraperSlug, page = 1) { +async function fetchProfile(actorName, scraperSlug, page = 1, source = 0) { const letter = actorName.charAt(0).toUpperCase(); - const url = `https://www.scoreland.com/big-boob-models/browse/${letter}/?page=${page}`; + const sources = [ + `https://www.scoreland.com/big-boob-models/browse/${letter}/?page=${page}`, + `https://www.50plusmilfs.com/xxx-milf-models/browse/${letter}/?page=${page}`, + ]; + + const url = sources[source]; + const res = await bhttp.get(url, { followRedirects: false, }); @@ -210,7 +216,11 @@ async function fetchProfile(actorName, scraperSlug, page = 1) { return null; } - return fetchProfile(actorName, scraperSlug, page + 1); + return fetchProfile(actorName, scraperSlug, page + 1, source); + } + + if (sources[source + 1]) { + return fetchProfile(actorName, scraperSlug, 1, source + 1); } return null; diff --git a/src/utils/q.js b/src/utils/q.js index de0c97b1..4f22bb74 100644 --- a/src/utils/q.js +++ b/src/utils/q.js @@ -148,6 +148,8 @@ const funcs = { }; function ctx(element, window) { + if (!element) return null; + const contextFuncs = Object.entries(funcs) // dynamically attach methods with context .reduce((acc, [key, func]) => ({ ...acc,