From c593ef587148423ec597804aac1cfa9fb311fff3 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Wed, 6 May 2020 20:27:50 +0200 Subject: [PATCH] Initial commit --- .drone.yml | 20 ++++++++++++++++++++ .gitignore | 2 ++ Dockerfile | 11 +++++++++++ index.js | 43 +++++++++++++++++++++++++++++++++++++++++++ package.json | 19 +++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 .drone.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 index.js create mode 100644 package.json diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..79a6b48 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,20 @@ +kind: pipeline +name: default + +steps: + - name: publish + image: plugins/docker + settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + repo: quay.io/jlelse/tiktokjson + registry: quay.io + tags: latest + when: + branch: + - master + event: + exclude: + - pull_request \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..074ab52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +package-lock.json +node_modules \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ecfbe03 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM node:14-alpine + +WORKDIR /app + +COPY package.json ./ +RUN npm install + +COPY index.js . + +EXPOSE 8080 +CMD [ "node", "index.js" ] \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..a79e55d --- /dev/null +++ b/index.js @@ -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}`)) \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..6ca7383 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "tiktokrss", + "version": "1.0.0", + "description": "TikTok to JSON Feed", + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "repository": { + "type": "git", + "url": "https://git.jlel.se/jlelse/TikTokJsonFeed.git" + }, + "author": "jlelse", + "license": "MIT", + "dependencies": { + "express": "^4.17.1", + "tiktok-scraper": "^1.1.10" + } +}