|
|
@ -0,0 +1,43 @@ |
|
|
|
const express = require('express') |
|
|
|
const scraper = require('tiktok-scraper'); |
|
|
|
|
|
|
|
const app = express() |
|
|
|
const port = 8080 |
|
|
|
|
|
|
|
app.get('/user/:user', async (req, res) => { |
|
|
|
let user = req.params.user |
|
|
|
if (user && user.length != 0) { |
|
|
|
try { |
|
|
|
let feed = { |
|
|
|
"version": "https://jsonfeed.org/version/1", |
|
|
|
"title": `TikTok user @${user}`, |
|
|
|
"home_page_url": `https://tiktok.com/@${user}`, |
|
|
|
"items": [] |
|
|
|
} |
|
|
|
let posts = await scraper.user(user, { number: 10 }) |
|
|
|
for (const post of posts.collector) { |
|
|
|
feed.items.push({ |
|
|
|
"id": post.id, |
|
|
|
"title": post.text, |
|
|
|
"content_text": post.text, |
|
|
|
"url": post.webVideoUrl, |
|
|
|
"date_published": new Date(parseInt(post.createTime, 10) * 1000), |
|
|
|
"attachments": [ |
|
|
|
{ |
|
|
|
"url": post.videoUrl, |
|
|
|
"mime_type": "video/mp4" |
|
|
|
} |
|
|
|
] |
|
|
|
}) |
|
|
|
} |
|
|
|
res.send(feed) |
|
|
|
} catch (error) { |
|
|
|
console.log(error) |
|
|
|
res.status(500).send(JSON.stringify(error)) |
|
|
|
} |
|
|
|
} else { |
|
|
|
res.status(403) |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
app.listen(port, () => console.log(`Listening at http://localhost:${port}`)) |