diff --git a/docs/README.md b/docs/README.md
index 8b47eac449..d71fe3bb80 100755
--- a/docs/README.md
+++ b/docs/README.md
@@ -590,6 +590,8 @@ RSSHub 提供下列 API 接口:
+
+
### 美拍
diff --git a/lib/router.js b/lib/router.js
index 9859314778..446f8c350a 100755
--- a/lib/router.js
+++ b/lib/router.js
@@ -727,6 +727,7 @@ router.get('/curseforge/files/:project', require('./routes/curseforge/files'));
// 抖音
router.get('/douyin/user/:id', require('./routes/douyin/user'));
+router.get('/douyin/like/:id', require('./routes/douyin/like'));
// 少数派 sspai
router.get('/sspai/series', require('./routes/sspai/series'));
diff --git a/lib/routes/douyin/like.js b/lib/routes/douyin/like.js
new file mode 100644
index 0000000000..7ba09cd43a
--- /dev/null
+++ b/lib/routes/douyin/like.js
@@ -0,0 +1,71 @@
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const id = ctx.params.id;
+ const browser = await require('../../utils/puppeteer')();
+ const page = await browser.newPage();
+
+ const timerPromise = new Promise((resolve) => setTimeout(resolve, 1000));
+ await timerPromise;
+
+ const data = await new Promise((resolve) => {
+ const result = {
+ name: null,
+ description: null,
+ list: null,
+ };
+
+ page.goto(`https://www.douyin.com/share/user/${id}`)
+ .then(() => {
+ page.click('.like-tab').catch(() => {});
+ })
+ .catch(() => {});
+
+ page.on('response', (response) => {
+ const req = response.request();
+ if (req.url().match(`www.douyin.com/share/user/${id}`)) {
+ response.text().then((text) => {
+ const $ = cheerio.load(text);
+ result.name = $('.nickname').text();
+ result.description = $('.signature').text();
+ if (result.list) {
+ resolve(result);
+ browser.close();
+ }
+ });
+ } else if (req.url().match('www.douyin.com/aweme/v1/aweme/favorite')) {
+ response.json().then((data) => {
+ result.list = data;
+ if (result.name) {
+ resolve(result);
+ browser.close();
+ }
+ });
+ }
+ });
+ });
+
+ ctx.state.data = {
+ title: `${data.name}的抖音-喜欢的视频`,
+ link: `https://www.douyin.com/share/user/${id}`,
+ description: data.description,
+ item:
+ data.list &&
+ data.list.aweme_list.map((item) => ({
+ title: item.share_info.share_desc,
+ description: `
+
${item.share_info.share_desc}
+ APP 内打开
+
+
`,
+ link: item.video.play_addr.url_list[0],
+ })),
+ };
+};