98 lines
2.8 KiB
JavaScript
98 lines
2.8 KiB
JavaScript
const got = require('@/utils/got');
|
|
const utils = require('./utils');
|
|
const getLinkAndTitle = (type, period) => {
|
|
const baseURL = 'https://api.coolapk.com/v6/page/dataList?url=';
|
|
let link;
|
|
const res = {};
|
|
const types = {
|
|
jrrm: {
|
|
title: '今日热门',
|
|
url: baseURL + '%2Ffeed%2FstatList%3FcacheExpires%3D300%26statType%3Dday%26sortField%3Ddetailnum%26title%3D%E4%BB%8A%E6%97%A5%E7%83%AD%E9%97%A8&title=%E4%BB%8A%E6%97%A5%E7%83%AD%E9%97%A8&subTitle=&page=1',
|
|
},
|
|
|
|
dzb: {
|
|
title: '点赞榜',
|
|
sortField: 'likenum',
|
|
},
|
|
|
|
scb: {
|
|
title: '收藏榜',
|
|
sortField: 'favnum',
|
|
},
|
|
plb: {
|
|
title: '评论榜',
|
|
sortField: 'replynum',
|
|
},
|
|
ktb: {
|
|
title: '酷图榜',
|
|
sortField: 'likenum',
|
|
},
|
|
};
|
|
|
|
const periods = {
|
|
daily: {
|
|
description: '日榜',
|
|
statType: 'day',
|
|
},
|
|
weekly: {
|
|
description: '周榜',
|
|
statType: '7days',
|
|
},
|
|
};
|
|
|
|
if (type === 'jrrm') {
|
|
res.link = types.jrrm.url;
|
|
res.title = types.jrrm.title;
|
|
return res;
|
|
} else if (type === 'ktb') {
|
|
const trans = {
|
|
daily: {
|
|
description: '周榜',
|
|
statDays: '7days',
|
|
},
|
|
weekly: {
|
|
description: '月榜',
|
|
statDays: '30days',
|
|
},
|
|
};
|
|
link = `#/feed/coolPictureList?statDays=` + trans[period].statDays + `&listType=statFavNum&buildCard=1&title=` + trans[period].description + `&page=1`;
|
|
res.title = '酷图榜-' + trans[period].description;
|
|
} else {
|
|
link = `#/feed/statList?statType=` + periods[period].statType + `&sortField=` + types[type].sortField + `&title=` + periods[period].description + `&page=1`;
|
|
res.title = types[type].title + `-` + periods[period].description;
|
|
}
|
|
res.link = baseURL + encodeURIComponent(link);
|
|
return res;
|
|
};
|
|
|
|
module.exports = async (ctx) => {
|
|
const type = ctx.params.type || 'jrrm';
|
|
const period = ctx.params.period || 'daily';
|
|
const { link, title } = getLinkAndTitle(type, period);
|
|
const r = await got(link, {
|
|
headers: utils.getHeaders(),
|
|
});
|
|
const data = r.data.data;
|
|
const t = [];
|
|
for (const i of data) {
|
|
if (i.entityType === 'card') {
|
|
for (const k of i.entities) {
|
|
t.push(k);
|
|
}
|
|
} else {
|
|
t.push(i);
|
|
}
|
|
}
|
|
|
|
let out = await Promise.all(t.map((item) => utils.parseDynamic(item, ctx)));
|
|
|
|
out = out.filter((i) => i);
|
|
|
|
ctx.state.data = {
|
|
title,
|
|
link: 'https://www.coolapk.com/',
|
|
description: `热榜-` + title,
|
|
item: out,
|
|
};
|
|
};
|