From 5fa67d019300c0d0ad3b592288ab9ec6b6da5520 Mon Sep 17 00:00:00 2001 From: sakamossan Date: Thu, 2 Apr 2020 22:12:38 +0900 Subject: [PATCH] feat: add router twitter/trends (#4355) --- docs/en/social-media.md | 4 ++++ lib/router.js | 1 + lib/routes/twitter/trends.js | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 lib/routes/twitter/trends.js diff --git a/docs/en/social-media.md b/docs/en/social-media.md index 793f062458..20d3692cc9 100644 --- a/docs/en/social-media.md +++ b/docs/en/social-media.md @@ -148,6 +148,10 @@ This route requires Twitter token's corresponding id, therefore it's only availb +### Trends + + + ## Youtube ::: tip Tiny Tiny RSS users please notice diff --git a/lib/router.js b/lib/router.js index 374cf47f0d..91b4f79435 100644 --- a/lib/router.js +++ b/lib/router.js @@ -205,6 +205,7 @@ router.get('/twitter/list/:id/:name', require('./routes/twitter/list')); router.get('/twitter/likes/:id', require('./routes/twitter/likes')); router.get('/twitter/followings/:id', require('./routes/twitter/followings')); router.get('/twitter/keyword/:keyword', require('./routes/twitter/keyword')); +router.get('/twitter/trends/:woeid?', require('./routes/twitter/trends')); // Instagram router.get('/instagram/user/:id', require('./routes/instagram/user')); diff --git a/lib/routes/twitter/trends.js b/lib/routes/twitter/trends.js new file mode 100644 index 0000000000..b839a16848 --- /dev/null +++ b/lib/routes/twitter/trends.js @@ -0,0 +1,23 @@ +const utils = require('./utils'); +const config = require('@/config').value; + +module.exports = async (ctx) => { + if (!config.twitter || !config.twitter.consumer_key || !config.twitter.consumer_secret) { + throw 'Twitter RSS is disabled due to the lack of relevant config'; + } + const woeid = ctx.params.woeid || 1; // Global information is available by using 1 as the WOEID + const result = await utils.getTwit().get('trends/place', { id: woeid }); + const [{ trends }] = result.data; + + ctx.state.data = { + title: `Twitter Trends on ${woeid}(Yahoo! Where On Earth ID)`, + link: `https://twitter.com/i/trends`, + item: trends + .filter((t) => !t.promoted_content) + .map((t) => ({ + title: t.name, + link: t.url, + description: t.name + (t.tweet_volume ? ` (${t.tweet_volume})` : ''), + })), + }; +};