mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
fix: 修复36氪快讯, b站UP主动态, segmentfault频道, 界面新闻 (#4480)
This commit is contained in:
@@ -3,24 +3,20 @@ const got = require('@/utils/got');
|
||||
module.exports = async (ctx) => {
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: `https://36kr.com/api/newsflash?per_page=30`,
|
||||
url: `https://36kr.com/newsflashes`,
|
||||
headers: {
|
||||
'Content-Type': 'application/json; charset=utf-8',
|
||||
Host: '36kr.com',
|
||||
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25',
|
||||
},
|
||||
});
|
||||
const regexp = /<script>window\.initialState=(.*?)<\/script>/;
|
||||
const newsflashes = JSON.parse(response.data.match(regexp)[1]);
|
||||
|
||||
const newsflashes = response.data.data.items;
|
||||
|
||||
let newsflashesList = [];
|
||||
for (let i = 0; i < newsflashes.length; i++) {
|
||||
newsflashesList = newsflashesList.concat(newsflashes[i]);
|
||||
}
|
||||
|
||||
const out = newsflashesList.map((item) => {
|
||||
const date = item.published_at;
|
||||
const link = item.news_url;
|
||||
const title = item.title;
|
||||
const description = item.description;
|
||||
const out = newsflashes.newsflashList.flow.itemList.map((item) => {
|
||||
const link = item.templateMaterial.sourceUrlRoute ? new URL(`http://www.example.com/${item.templateMaterial.sourceUrlRoute}`).searchParams.get('url') : `https://36kr.com/newsflashes/${item.itemId}`;
|
||||
const date = item.templateMaterial.publishTime;
|
||||
const title = item.templateMaterial.widgetTitle;
|
||||
const description = item.templateMaterial.widgetContent;
|
||||
|
||||
const single = {
|
||||
title,
|
||||
|
||||
@@ -45,12 +45,18 @@ module.exports = async (ctx) => {
|
||||
}
|
||||
|
||||
const getDes = (data) => data.desc || data.description || data.content || data.summary || (data.vest && data.vest.content) + (data.sketch && data.sketch.title) || data.intro;
|
||||
const getOriginDes = (data) =>
|
||||
(data && data.author && data.author.name && `转发自: @${data.author.name}: `) + (data && data.title) + (data && data.image_urls && data.image_urls.length > 0 && `<br><img src="${data.image_urls[0]}">`) ||
|
||||
(data && data.apiSeasonInfo && data.apiSeasonInfo.title && `转发自: ${data.apiSeasonInfo.title}`) + (data && data.cover && `<br><img src="${data.cover}">`) ||
|
||||
'';
|
||||
|
||||
return {
|
||||
title: data.title || data.description || data.content || (data.vest && data.vest.content),
|
||||
description: `${getDes(data)}${origin ? `<br><br>转发自: @${(origin.user && origin.user.uname) || (origin.owner && origin.owner.name)}: ${getDes(origin.item || origin)}` : ''}${
|
||||
!disableEmbed && data.aid ? `<br><br>${utils.iframe(data.aid)}<br>` : ''
|
||||
}<br>${imgHTML} `,
|
||||
description: `${getDes(data)}${
|
||||
origin && (origin.user || origin.owner)
|
||||
? `<br><br>转发自: @${(origin.user && (origin.user.uname || origin.user.name)) || (origin.owner && origin.owner.name)}: ${getDes(origin.item || origin)}`
|
||||
: `${getOriginDes(origin)}`
|
||||
}${!disableEmbed && data.aid ? `<br><br>${utils.iframe(data.aid)}<br>` : ''}<br>${imgHTML} `,
|
||||
pubDate: new Date(item.desc.timestamp * 1000).toUTCString(),
|
||||
link: link,
|
||||
};
|
||||
|
||||
+11
-41
@@ -3,56 +3,23 @@ const got = require('@/utils/got');
|
||||
const util = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const url = `https://www.jiemian.com/lists/${ctx.params.cid}.html`;
|
||||
|
||||
const url = `https://a.jiemian.com/index.php?m=lists&a=ajaxNews&cid=${ctx.params.cid}&page=1`;
|
||||
const res = await got.get(url);
|
||||
const $ = cheerio.load(res.data);
|
||||
|
||||
let type, list;
|
||||
let html = res.data.substring(1);
|
||||
html = html.substring(0, html.length - 1);
|
||||
|
||||
const className = $('#load-list')[0].attribs.class;
|
||||
|
||||
if (className) {
|
||||
switch (className) {
|
||||
case 'list-view':
|
||||
type = 'list';
|
||||
list = $('.item-news').slice(0, 10).get();
|
||||
break;
|
||||
case 'list-view card':
|
||||
type = 'card';
|
||||
list = $('.news-view').slice(0, 10).get();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
const parsed = JSON.parse(html).rst;
|
||||
const doc = cheerio.load(parsed);
|
||||
const list = doc('.item-news').slice(0, 10).get();
|
||||
|
||||
const proList = [];
|
||||
|
||||
let out = await Promise.all(
|
||||
list.map(async (item) => {
|
||||
const $ = cheerio.load(item);
|
||||
let title, itemUrl;
|
||||
|
||||
switch (type) {
|
||||
case 'list':
|
||||
title = $('.item-main a').text();
|
||||
|
||||
itemUrl = $('.item-main a').attr('href');
|
||||
break;
|
||||
case 'card':
|
||||
title = $('.news-img a').attr('title');
|
||||
if (!title) {
|
||||
title = $('a').text();
|
||||
}
|
||||
itemUrl = $('.news-img a').attr('href');
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
const title = $('.item-main a').text();
|
||||
const itemUrl = $('.item-main a').attr('href');
|
||||
const cache = await ctx.cache.get(itemUrl);
|
||||
if (cache) {
|
||||
return Promise.resolve(JSON.parse(cache));
|
||||
@@ -70,6 +37,9 @@ module.exports = async (ctx) => {
|
||||
|
||||
out = util.ProcessFeed(out, responses);
|
||||
|
||||
const res2 = await got.get(`https://www.jiemian.com/lists/${ctx.params.cid}.html`);
|
||||
const $ = cheerio.load(res2.data);
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').text(),
|
||||
link: url,
|
||||
|
||||
@@ -62,7 +62,7 @@ module.exports = async (ctx) => {
|
||||
date_value = date_v.substring(0, date_v.length - 3);
|
||||
} else {
|
||||
// 文章
|
||||
description = $('div.article.fmt.article__content')
|
||||
description = $('article.article.fmt.article-content')
|
||||
.html()
|
||||
.replace(/data-src="/g, 'src="https://segmentfault.com')
|
||||
.trim();
|
||||
|
||||
Reference in New Issue
Block a user