feat: 增加数字尾巴(首页、鲸图)路由,将甩甩尾巴修改到数字尾巴-闲置并从shopping移动到social-media (#3368)

This commit is contained in:
erriy
2019-11-11 12:04:15 +08:00
committed by DIYgod
parent b1ecb60792
commit 62d245e877
6 changed files with 178 additions and 17 deletions

View File

@@ -147,22 +147,6 @@ pageClass: routes
</Route>
## 甩甩尾巴
### 分类
<Route author="xyqfer" example="/dgtle/trade/111" path="/dgtle/trade/:typeId?" :paramsDesc="['分类 id默认为全部']">
| 全部 | 电脑 | 手机 | 平板 | 相机 | 影音 | 外设 | 生活 | 公告 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 0 | 111 | 109 | 110 | 113 | 114 | 115 | 112 | 116 |
</Route>
### 关键词
<Route author="gaoliang" example="/dgtle/trade/search/ipad" path="/dgtle/trade/search/:keyword" :paramsDesc="['搜索关键词']"/>
## 淘宝众筹
### 众筹项目

View File

@@ -544,6 +544,54 @@ pageClass: routes
<Route author="ihewro" example="/meipai/user/56537299" path="/meipai/user/:id" :paramsDesc="['用户 id, 可在 分享出去获得的用户主页 URL 中找到']"/>
## 数字尾巴
### 首页
<Route author="Erriy" example="/dgtle" path="/dgtle" />
### 闲置(分类)
<Route author="xyqfer" example="/dgtle/trade/111" path="/dgtle/trade/:typeId?" :paramsDesc="['分类 id默认为全部']">
| 全部 | 电脑 | 手机 | 平板 | 相机 | 影音 | 外设 | 生活 | 公告 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 0 | 111 | 109 | 110 | 113 | 114 | 115 | 112 | 116 |
</Route>
### 闲置(关键词)
<Route author="gaoliang" example="/dgtle/trade/search/ipad" path="/dgtle/trade/search/:keyword" :paramsDesc="['搜索关键词']"/>
### 鲸图(分类)
<Route author="Erriy" example="/dgtle/whale/category/0" path="/dgtle/whale/category/:category" :paramsDesc="['分类 id']">
| 精选 | 人物 | 静物 | 二次元 | 黑白 | 自然 | 美食 | 电影与游戏 | 科技与艺术 | 城市与建筑 | 萌物 | 美女 |
| ---- | ---- | ---- | ------ | ---- | ---- | ---- | ---------- | ---------- | ---------- | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
</Route>
### 鲸图(排行榜)
<Route author="Erriy" example="/dgtle/whale/rank/download/day" path="/dgtle/whale/rank/:type/:rule" :paramsDesc="['排行榜类型', '排行榜周期']">
type
| 下载排行榜 | 点赞排行榜 |
| ---------- | ---------- |
| download | like |
rule
| 日排行 | 周排行 | 月排行 | 总排行 |
| ------ | ------ | ------ | ------ |
| day | week | month | amount |
</Route>
## 刷屏
### 最新

View File

@@ -828,7 +828,10 @@ router.get('/solidot/:type?', require('./routes/solidot/main'));
// Hermes UK
router.get('/parcel/hermesuk/:tracking', require('./routes/parcel/hermesuk'));
// 甩甩尾巴
// 数字尾巴
router.get('/dgtle', require('./routes/dgtle/index'));
router.get('/dgtle/whale/category/:category', require('./routes/dgtle/whale'));
router.get('/dgtle/whale/rank/:type/:rule', require('./routes/dgtle/whale_rank'));
router.get('/dgtle/trade/:typeId?', require('./routes/dgtle/trade'));
router.get('/dgtle/trade/search/:keyword', require('./routes/dgtle/keyword'));

57
lib/routes/dgtle/index.js Normal file
View File

@@ -0,0 +1,57 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
const response = await got({
method: 'get',
url: 'https://opser.api.dgtle.com/v1/app/index?page=1',
});
const article_items = response.data.items.filter((item) => item.type in { 1: '', 4: '' });
const items = await Promise.all(
article_items.map(async (item) => {
let title = '';
let olink = ''; // 原始链接
let dlink = ''; // description 链接
let category = '';
let description = '';
if (1 === item.type) {
title = item.title;
dlink = `https://opser.api.dgtle.com/v1/article/view/${item.aid}`;
olink = `https://www.dgtle.com/article-${item.aid}-1.html`;
category = '文章';
description = await ctx.cache.tryGet(dlink, async () => {
const resp = await got.get(dlink);
return resp.data.content;
});
} else if (4 === item.type) {
title = item.summary;
dlink = `https://opser.api.dgtle.com/v1/feeds/inst/${item.aid}`;
olink = `https://www.dgtle.com/inst-${item.aid}-1.html`;
category = '兴趣动态';
description = await ctx.cache.tryGet(dlink, async () => {
const resp = await got.get(dlink);
return resp.data.imgs_url.reduce((content, dimg) => (content += `<img src=${dimg.path.split('?')[0]} />`), resp.data.content);
});
}
return Promise.resolve({
title: title,
description,
pubDate: new Date(item.send_at * 1000).toUTCString(),
link: olink,
category: category,
author: item.author.username,
});
})
);
ctx.state.data = {
title: '数字尾巴 - 首页',
link: 'https://www.dgtle.com',
description: '数字尾巴首页内容',
item: items,
};
};

29
lib/routes/dgtle/whale.js Normal file
View File

@@ -0,0 +1,29 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
const cid = Number(ctx.params.category);
const categories = ['精选', '人物', '静物', '二次元', '黑白', '自然', '美食', '电影与游戏', '科技与艺术', '城市与建筑', '萌物', '美女'];
const host = 'https://www.dgtle.com';
const response = await got({
method: 'get',
url: `https://opser.api.dgtle.com/v1/whale/index?category_id=${cid}&page=1&per-page=10`,
});
const items = response.data.items.map((item) => ({
title: item.content,
pubDate: new Date(item.updated_at * 1000).toUTCString(),
author: item.author.username,
description: `<img src=${item.attachment.pic_url.split('?')[0]} />`,
link: item.attachment.pic_url.split('?')[0],
}));
ctx.state.data = {
title: `数字尾巴 - 鲸图 - ${categories[cid]}`,
description: '分类鲸图',
link: host,
item: items,
};
};

View File

@@ -0,0 +1,40 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
const type = ctx.params.type;
const rule = ctx.params.rule;
const stype = {
download: '下载',
like: '点赞',
};
const srule = {
day: '日排行',
week: '周排行',
month: '月排行',
amount: '总排行',
};
const host = 'https://www.dgtle.com';
const response = await got({
method: 'get',
url: `https://opser.api.dgtle.com/v1/whale-rank/list?rule=${rule}&type=${type}`,
});
const items = response.data.items.map((item) => ({
title: item.content,
pubDate: new Date(item.updated_at * 1000).toUTCString(),
author: item.author.username,
description: `<img src=${item.attachment.pic_url.split('?')[0]} />`,
link: item.attachment.pic_url.split('?')[0],
}));
ctx.state.data = {
title: `数字尾巴 - 鲸图 - ${stype[type]}${srule[rule]}`,
description: '鲸图排行榜',
link: host,
item: items,
};
};