Displaying results in terminal table with select, scroll and experimental search. Expanded broken character handling for PervCity scraper.

This commit is contained in:
2019-03-11 04:19:36 +01:00
parent 4fe7fd06e8
commit 02c421b737
9 changed files with 638 additions and 193 deletions

View File

@@ -9,9 +9,9 @@ function scrape(html, site) {
const sceneLinkElement = $('#scene_title_border a');
const url = `${site.url}/${sceneLinkElement.attr('href')}`;
const title = sceneLinkElement.attr('title');
const title = sceneLinkElement.attr('title').replace(/\u00E2\u0080\u0099/g, '\''); // replace weird apostrophes
const actors = $('.home_model_name a').toArray().map(element => $(element).text().replace(/,[\u0020\u00A0\u202F]/, ''));
const actors = $('.home_model_name a').toArray().map(element => $(element).text().replace(/,[\u0020\u00A0\u202F]/, '')); // replace weird commas
const date = moment.utc($('.add_date').text(), 'DD-MM-YYYY').toDate();
const stars = $('img[src*="/star.png"]').toArray().map(element => $(element).attr('src')).length || null;
@@ -26,11 +26,10 @@ function scrape(html, site) {
dislikes: null,
stars,
},
siteId: site.id,
site,
};
}
async function fetchReleases(site) {
// const session = bhttp.session();
@@ -39,9 +38,7 @@ async function fetchReleases(site) {
const latest = elements.total_arr.map(html => scrape(html, site));
return {
latest,
};
return latest;
}
module.exports = fetchReleases;

View File

@@ -16,7 +16,7 @@ function scrape(html, site) {
const [likes, dislikes] = $(element).find('.value')
.toArray()
.map(value => Number($(value).text()));
const stars = Math.floor(((likes * 5 + dislikes) / (likes + dislikes)) * 100) / 100;
const stars = likes || dislikes ? Math.floor(((likes * 5 + dislikes) / (likes + dislikes)) * 100) / 100 : null;
const actors = $(element).find('.sceneActors a')
.map((actorIndex, actorElement) => $(actorElement).attr('title'))
@@ -34,7 +34,7 @@ function scrape(html, site) {
dislikes,
stars,
},
siteId: site.id,
site,
};
});
}
@@ -45,10 +45,10 @@ async function fetchReleases(site) {
bhttp.get(`${site.url}/en/videos/AllCategories/0/1/upcoming`),
]);
return {
latest: scrape(latestRes.body.toString(), site),
upcoming: scrape(upcomingRes.body.toString(), site),
};
return [
...scrape(upcomingRes.body.toString(), site, true),
...scrape(latestRes.body.toString(), site),
];
}
module.exports = fetchReleases;