diff --git a/docs/social-media.md b/docs/social-media.md index 8dac72da8..82c547688 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -284,6 +284,10 @@ pageClass: routes +### 快拍 Stories + + + ## Matters ### 最新排序 diff --git a/lib/router.js b/lib/router.js index 3e45033a5..28bc6170c 100644 --- a/lib/router.js +++ b/lib/router.js @@ -172,6 +172,7 @@ router.get('/twitter/followings/:id', require('./routes/twitter/followings')); // Instagram router.get('/instagram/user/:id', require('./routes/instagram/user')); router.get('/instagram/tag/:tag', require('./routes/instagram/tag')); +router.get('/instagram/story/:username', require('./routes/instagram/story')); // Youtube router.get('/youtube/user/:username/:embed?', require('./routes/youtube/user')); diff --git a/lib/routes/instagram/story.js b/lib/routes/instagram/story.js new file mode 100644 index 000000000..5095f3f17 --- /dev/null +++ b/lib/routes/instagram/story.js @@ -0,0 +1,34 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const username = ctx.params.username; + + const response = (await got({ + method: 'get', + url: `https://api.storiesig.com/stories/${username}`, + headers: { + Referer: `https://storiesig.com/?username=${username}`, + }, + })).data; + + const items = response.items.map((item) => { + const image = item.image_versions2 && item.image_versions2.candidates[0].url; + const video = item.video_versions && item.video_versions[0].url; + + const description = item.video_versions ? `` : ``; + const pubDate = new Date(item.taken_at * 1000).toUTCString(); + + return { + title: `[快拍/Stories]${item.caption || ''} ${pubDate}`, + description, + pubDate, + link: `https://www.instagram.com/stories/${username}/${item.id}`, + }; + }); + + ctx.state.data = { + title: `${response.user.full_name}'s stories on Instagram`, + link: `https://www.instagram.com/stories/${username}/`, + item: items, + }; +};