diff --git a/public/img/logos/testedefudelidade/favicon.png b/public/img/logos/testedefudelidade/favicon.png new file mode 100644 index 00000000..385b3f03 Binary files /dev/null and b/public/img/logos/testedefudelidade/favicon.png differ diff --git a/public/img/logos/testedefudelidade/favicon_dark.png b/public/img/logos/testedefudelidade/favicon_dark.png new file mode 100644 index 00000000..08fac98b Binary files /dev/null and b/public/img/logos/testedefudelidade/favicon_dark.png differ diff --git a/public/img/logos/testedefudelidade/favicon_light.png b/public/img/logos/testedefudelidade/favicon_light.png new file mode 100644 index 00000000..2f0704d4 Binary files /dev/null and b/public/img/logos/testedefudelidade/favicon_light.png differ diff --git a/public/img/logos/testedefudelidade/lazy/favicon.png b/public/img/logos/testedefudelidade/lazy/favicon.png new file mode 100644 index 00000000..9b856a57 Binary files /dev/null and b/public/img/logos/testedefudelidade/lazy/favicon.png differ diff --git a/public/img/logos/testedefudelidade/lazy/favicon_dark.png b/public/img/logos/testedefudelidade/lazy/favicon_dark.png new file mode 100644 index 00000000..2271a0eb Binary files /dev/null and b/public/img/logos/testedefudelidade/lazy/favicon_dark.png differ diff --git a/public/img/logos/testedefudelidade/lazy/favicon_light.png b/public/img/logos/testedefudelidade/lazy/favicon_light.png new file mode 100644 index 00000000..4abd1147 Binary files /dev/null and b/public/img/logos/testedefudelidade/lazy/favicon_light.png differ diff --git a/public/img/logos/testedefudelidade/lazy/network.png b/public/img/logos/testedefudelidade/lazy/network.png new file mode 100644 index 00000000..218a82ae Binary files /dev/null and b/public/img/logos/testedefudelidade/lazy/network.png differ diff --git a/public/img/logos/testedefudelidade/lazy/testedefudelidade.png b/public/img/logos/testedefudelidade/lazy/testedefudelidade.png new file mode 100644 index 00000000..37ff52c8 Binary files /dev/null and b/public/img/logos/testedefudelidade/lazy/testedefudelidade.png differ diff --git a/public/img/logos/testedefudelidade/network.png b/public/img/logos/testedefudelidade/network.png new file mode 100644 index 00000000..fb95c4fb Binary files /dev/null and b/public/img/logos/testedefudelidade/network.png differ diff --git a/public/img/logos/testedefudelidade/testedefudelidade.png b/public/img/logos/testedefudelidade/testedefudelidade.png new file mode 100644 index 00000000..7cba823e Binary files /dev/null and b/public/img/logos/testedefudelidade/testedefudelidade.png differ diff --git a/public/img/logos/testedefudelidade/thumbs/favicon.png b/public/img/logos/testedefudelidade/thumbs/favicon.png new file mode 100644 index 00000000..9b856a57 Binary files /dev/null and b/public/img/logos/testedefudelidade/thumbs/favicon.png differ diff --git a/public/img/logos/testedefudelidade/thumbs/favicon_dark.png b/public/img/logos/testedefudelidade/thumbs/favicon_dark.png new file mode 100644 index 00000000..2271a0eb Binary files /dev/null and b/public/img/logos/testedefudelidade/thumbs/favicon_dark.png differ diff --git a/public/img/logos/testedefudelidade/thumbs/favicon_light.png b/public/img/logos/testedefudelidade/thumbs/favicon_light.png new file mode 100644 index 00000000..4abd1147 Binary files /dev/null and b/public/img/logos/testedefudelidade/thumbs/favicon_light.png differ diff --git a/public/img/logos/testedefudelidade/thumbs/network.png b/public/img/logos/testedefudelidade/thumbs/network.png new file mode 100644 index 00000000..e6c0da45 Binary files /dev/null and b/public/img/logos/testedefudelidade/thumbs/network.png differ diff --git a/public/img/logos/testedefudelidade/thumbs/testedefudelidade.png b/public/img/logos/testedefudelidade/thumbs/testedefudelidade.png new file mode 100644 index 00000000..4a227fb8 Binary files /dev/null and b/public/img/logos/testedefudelidade/thumbs/testedefudelidade.png differ diff --git a/src/scrapers/testedefudelidade.js b/src/scrapers/testedefudelidade.js new file mode 100644 index 00000000..b156a081 --- /dev/null +++ b/src/scrapers/testedefudelidade.js @@ -0,0 +1,109 @@ +'use strict'; + +const unprint = require('unprint'); + +const slugify = require('../utils/slugify'); + +function scrapeAll(scenes) { + return scenes.map(({ query }) => { + const release = {}; + + release.url = query.url('.title') || query.url('.thumb a'); + release.entryId = new URL(release.url).pathname.replaceAll('/', ''); + + release.title = query.content('.title') || query.attribute('.title', 'title') || query.attribute('.thumb a', 'title'); + release.duration = query.duration('.time'); + + release.actors = query.all('.cast a').map((el) => ({ + name: unprint.query.content(el), + url: unprint.query.url(el, null), + })); + + release.poster = query.img('.thumb img'); + + /* not accurate enough + const [, year, month] = release.poster?.match(/uploads\/(\d{4})\/(\d{2})/) || []; + + if (year) { + release.date = new Date(year, month - 1, 1); + release.datePrecision = 'month'; + } + */ + + return release; + }); +} + +function scrapeScene({ query }, { url }) { + const release = {}; + + release.entryId = new URL(url).pathname.replaceAll('/', ''); + + release.title = query.content('.topVideo .right .title'); + release.description = query.content('.topVideo .right .descript'); + + release.date = query.date('.topVideo .right .row', 'DD/MM/YYYY', { match: /\d{2}\/\d{2}\/\d{4}/ }); + + release.duration = query.duration('.topVideo .right .row'); + + release.actors = query.all('.infosVideo .left a[href*="/modelos"]').map((el) => ({ + name: unprint.query.attribute(el, '.img img', 'title') || unprint.query.content(el).trim(), + url: unprint.query.url(el, null), + avatar: unprint.query.img(el, '.img img'), + })); + + release.poster = query.img('.topVideo .player img'); + release.covers = query.imgs('#singleBackground img'); + + release.tags = query.contents('.infosVideo .left a[href*="/categoria"]'); + release.studio = slugify(query.content('//strong[contains(text(), "Produtora")]/following-sibling::p'), ''); + + if (query.content('.infosVideo .left').includes('1080p')) { + release.qualities = [1080]; + } + + return release; +} + +function scrapeProfile({ query }, url) { + const profile = { url }; + + profile.avatar = query.img('.model .photo img'); + profile.scenes = scrapeAll(unprint.initAll(query.all('.single .itemsingle'))); + + console.log(profile); + return profile; +} + +async function fetchLatest(channel, page) { + const res = await unprint.get(`${channel.url}/videos/page/${page}/?filter=ultimos`, { + selectAll: '.single .itemsingle', + timeout: 30000, + }); + + if (res.ok) { + return scrapeAll(res.context, channel); + } + + return res.status; +} + +async function fetchProfile(actor, { entity }) { + const url = actor.url || `${entity.url}/models/${actor.slug}/`; + const res = await unprint.get(url); + + if (res.ok) { + return scrapeProfile(res.context, url); + } + + return res.status; +} + +module.exports = { + fetchLatest, + fetchProfile, + scrapeScene: { + scraper: scrapeScene, + unprint: true, + }, +};