mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-05 12:21:31 +08:00
feat(route): add DevolverDigital Blog (#12548)
* feat(route): add DevolverDigital Blog * use embedded json #__NEXT_DATA__ * index value using .map() * minor improvements
This commit is contained in:
42
lib/v2/devolverdigital/blog.js
Normal file
42
lib/v2/devolverdigital/blog.js
Normal file
@@ -0,0 +1,42 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const baseUrl = 'https://www.devolverdigital.com/blog';
|
||||
|
||||
const { data: response } = await got(baseUrl);
|
||||
const $ = cheerio.load(response);
|
||||
$('noscript').remove();
|
||||
|
||||
const nextData = JSON.parse($('#__NEXT_DATA__').text());
|
||||
const allBlogContents = $('div.flex > div > div > div > div:not([class])');
|
||||
|
||||
const items = nextData.props.pageProps.posts.map((post, postIndex) => {
|
||||
// img resource redirection and
|
||||
// clean up absolute layouts for img and span
|
||||
|
||||
const imageUrls = post.body.filter((item) => item.type === 'upload' && item.value.cloudinary.resource_type === 'image').map((item) => item.value.cloudinary.secure_url);
|
||||
|
||||
const allImageSpans = $(allBlogContents[postIndex]).find('span > img').parent();
|
||||
|
||||
allImageSpans.each((spanIndex, span) => {
|
||||
$(span).attr('style', $(span).attr('style').replace('position:absolute', ''));
|
||||
const img = $(span).find('img');
|
||||
img.attr('src', imageUrls[spanIndex]);
|
||||
img.attr('style', img.attr('style').replace('position:absolute', '').replace('width:0', '').replace('height:0', ''));
|
||||
});
|
||||
|
||||
return {
|
||||
title: post.title,
|
||||
author: post.author,
|
||||
pubDate: Date.parse(post.createdAt),
|
||||
description: $(allBlogContents[postIndex]).html(),
|
||||
};
|
||||
});
|
||||
|
||||
ctx.state.data = {
|
||||
title: 'DevolverDigital Blog',
|
||||
link: 'https://www.devolverdigital.com/blog',
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user