diff --git a/public/img/logos/fullpornnetwork/baddaddypov.png b/public/img/logos/fullpornnetwork/baddaddypov.png index cf3fad7d..16fecfcc 100644 Binary files a/public/img/logos/fullpornnetwork/baddaddypov.png and b/public/img/logos/fullpornnetwork/baddaddypov.png differ diff --git a/public/img/logos/fullpornnetwork/favicon.png b/public/img/logos/fullpornnetwork/favicon.png new file mode 100644 index 00000000..cb41fe2b Binary files /dev/null and b/public/img/logos/fullpornnetwork/favicon.png differ diff --git a/public/img/logos/fullpornnetwork/misc/bad-daddy-pov_original.png b/public/img/logos/fullpornnetwork/misc/bad-daddy-pov_original.png new file mode 100644 index 00000000..cf3fad7d Binary files /dev/null and b/public/img/logos/fullpornnetwork/misc/bad-daddy-pov_original.png differ diff --git a/seeds/02_sites.js b/seeds/02_sites.js index 6131b4bf..76f2ec8c 100644 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -1846,115 +1846,115 @@ const sites = [ { slug: 'analbbc', name: 'Anal BBC', - url: 'https://analbbc.com/', + url: 'https://analbbc.com', tags: ['anal', 'bbc'], network: 'fullpornnetwork', }, { slug: 'analviolation', name: 'Anal Violation', - url: 'https://analviolation.com/', + url: 'https://analviolation.com', tags: ['anal'], network: 'fullpornnetwork', }, { slug: 'analized', name: 'ANALIZED', - url: 'https://analized.com/', + url: 'https://analized.com', tags: ['anal'], network: 'fullpornnetwork', }, { slug: 'baddaddypov', name: 'Bad Daddy POV', - url: 'https://baddaddypov.com/', + url: 'https://baddaddypov.com', tags: ['pov', 'family'], network: 'fullpornnetwork', }, { slug: 'dtfsluts', name: 'DTF Sluts', - url: 'https://dtfsluts.com/', + url: 'https://dtfsluts.com', network: 'fullpornnetwork', }, { slug: 'girlfaction', name: 'Girlfaction', - url: 'https://girlfaction.com/', + url: 'https://girlfaction.com', tags: ['lesbian'], network: 'fullpornnetwork', }, { slug: 'hergape', name: 'Her Gape', - url: 'https://hergape.com/', + url: 'https://hergape.com', tags: ['anal'], network: 'fullpornnetwork', }, { slug: 'homemadeanalwhores', name: 'Homemade Anal Whores', - url: 'https://homemadeanalwhores.com/', + url: 'https://homemadeanalwhores.com', tags: ['anal'], network: 'fullpornnetwork', }, { slug: 'jamesdeen', name: 'James Deen', - url: 'https://jamesdeen.com/', + url: 'https://jamesdeen.com', network: 'fullpornnetwork', }, { slug: 'onlyprince', name: 'Only Prince', - url: 'https://onlyprince.com/', + url: 'https://onlyprince.com', tags: ['bbc'], network: 'fullpornnetwork', }, { slug: 'pervertgallery', name: 'Pervert Gallery', - url: 'http://pervertgallery.com/', + url: 'http://pervertgallery.com', network: 'fullpornnetwork', }, { slug: 'povperverts', name: 'POV Perverts', - url: 'http://povperverts.net/', + url: 'http://povperverts.net', tags: ['pov'], network: 'fullpornnetwork', }, { slug: 'teenageanalsluts', name: 'Teenage Anal Sluts', - url: 'https://teenageanalsluts.com/', + url: 'https://teenageanalsluts.com', tags: ['anal'], network: 'fullpornnetwork', }, { slug: 'twistedvisual', name: 'Twisted Visual', - url: 'https://twistedvisual.com/', + url: 'https://twistedvisual.com', network: 'fullpornnetwork', }, { slug: 'yourmomdoesanal', name: 'Your Mom Does Anal', - url: 'http://yourmomdoesanal.com/', + url: 'http://yourmomdoesanal.com', tags: ['anal', 'milf'], network: 'fullpornnetwork', }, { slug: 'yourmomdoesporn', name: 'Your Mom Does Porn', - url: 'https://yourmomdoesporn.com/', + url: 'https://yourmomdoesporn.com', tags: ['milf'], network: 'fullpornnetwork', }, { slug: 'mugfucked', name: 'Mugfucked', - url: 'https://mugfucked.com/', + url: 'https://mugfucked.com', tags: ['facefucking', 'blowjob'], network: 'fullpornnetwork', }, diff --git a/src/scrapers/fullpornnetwork.js b/src/scrapers/fullpornnetwork.js new file mode 100644 index 00000000..0cbe2422 --- /dev/null +++ b/src/scrapers/fullpornnetwork.js @@ -0,0 +1,67 @@ +'use strict'; + +const { get, geta } = require('../utils/q'); + +function scrapeLatest(scenes) { + return scenes.map(({ el, q, qa, qd, qu, ql }) => { + const release = {}; + + release.entryId = el.dataset.setid || q('.update_thumb', 'id').match(/\w+-\w+-(\d+)-\d+/)[1]; + release.url = qu('.title'); + + release.title = q('.title', true); + release.description = q('.title', 'title'); + + release.date = qd('.video-data > span:last-child', 'YYYY-MM-DD'); + release.duration = ql('.video-data > span'); + + release.actors = qa('.update_models a', true); + + const poster = q('.update_thumb', 'src0_1x'); + release.poster = [ + poster.replace('-1x', '-2x'), + poster, + ]; + + return release; + }); +} + +function scrapeScene({ q, qa, qd, qtx }, url) { + const release = { url }; + + release.entryId = q('#image_parent img', 'id').match(/\w+-\w+-(\d+)-\d+/)[1]; + + release.title = q('.trailer_title', true); + release.description = qtx('.text p'); + release.date = qd('span[data-dateadded]', 'YYYY-MM-DD', null, 'data-dateadded'); + + release.actors = qa('.update_models a', true); + release.tags = qa('.video-info a[href*="/categories"]', true); + + const poster = q('#image_parent img', 'src0_1x'); + release.poster = [ + poster.replace('-1x', '-2x'), + poster, + ]; + + return release; +} + +async function fetchLatest(site, page = 1) { + const url = `${site.url}/categories/movies_${page}_d.html`; + const qLatest = await geta(url, '.latest-updates .update'); + + return qLatest && scrapeLatest(qLatest, site); +} + +async function fetchScene(url, site) { + const qScene = await get(url, '.content-wrapper'); + + return qScene && scrapeScene(qScene, site); +} + +module.exports = { + fetchLatest, + fetchScene, +}; diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index 882503cc..ae6661ea 100644 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -18,6 +18,7 @@ const famedigital = require('./famedigital'); const fantasymassage = require('./fantasymassage'); const freeones = require('./freeones'); const freeonesLegacy = require('./freeones_legacy'); +const fullpornnetwork = require('./fullpornnetwork'); const girlsway = require('./girlsway'); const iconmale = require('./iconmale'); const insex = require('./insex'); @@ -75,6 +76,7 @@ module.exports = { fakehub, famedigital, fantasymassage, + fullpornnetwork, girlsway, insex, jayrock,