mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-19 09:52:21 +08:00
feat: tg-chan search, trivial dom/format (#5127)
This commit is contained in:
@@ -92,7 +92,7 @@ Only for self-hosted
|
||||
|
||||
### Channel
|
||||
|
||||
<RouteEn path="/telegram/channel/:username" example="/telegram/channel/awesomeDIYgod" :paramsDesc="['channel name']" radar="1">
|
||||
<RouteEn path="/telegram/channel/:username/:searchQuery?" example="/telegram/channel/awesomeDIYgod/%23DIYgod的豆瓣动态" :paramsDesc="['channel name', 'search query; replace `#` by `%23` for tag searching']" radar="1">
|
||||
|
||||
::: tip
|
||||
|
||||
|
||||
@@ -384,13 +384,13 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 瞬间更新
|
||||
|
||||
<Route author="ImSingee" example="/soul/Y2w2aTNWQVBLOU09" path="/soul:id" :paramsDesc="['用户 id, 分享用户主页时的 URL 的 userIdEcpt 参数']" radar="1"></Route>
|
||||
<Route author="ImSingee" example="/soul/Y2w2aTNWQVBLOU09" path="/soul/:id" :paramsDesc="['用户 id, 分享用户主页时的 URL 的 userIdEcpt 参数']" radar="1"></Route>
|
||||
|
||||
## Telegram
|
||||
|
||||
### 频道
|
||||
|
||||
<Route author="DIYgod" example="/telegram/channel/awesomeDIYgod" path="/telegram/channel/:username" :paramsDesc="['频道 username']" radar="1">
|
||||
<Route author="DIYgod" example="/telegram/channel/awesomeDIYgod/%23DIYgod的豆瓣动态" path="/telegram/channel/:username/:searchQuery?" :paramsDesc="['频道 username', '搜索关键词, 如需搜索 tag 请用 `%23` 替代 `#`']" radar="1">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
|
||||
+1
-1
@@ -262,7 +262,7 @@ router.get('/v2ex/post/:postid', require('./routes/v2ex/post'));
|
||||
router.get('/v2ex/tab/:tabid', require('./routes/v2ex/tab'));
|
||||
|
||||
// Telegram
|
||||
router.get('/telegram/channel/:username', require('./routes/telegram/channel'));
|
||||
router.get('/telegram/channel/:username/:searchQuery?', require('./routes/telegram/channel'));
|
||||
router.get('/telegram/stickerpack/:name', require('./routes/telegram/stickerpack'));
|
||||
router.get('/telegram/blog', require('./routes/telegram/blog'));
|
||||
|
||||
|
||||
@@ -3,15 +3,19 @@ const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const username = ctx.params.username;
|
||||
const searchQuery = ctx.params.searchQuery;
|
||||
const resourceUrl = searchQuery ? `https://t.me/s/${username}?q=${encodeURIComponent(searchQuery)}` : `https://t.me/s/${username}`;
|
||||
|
||||
const { data } = await got.get(`https://t.me/s/${username}`);
|
||||
const { data } = await got.get(resourceUrl);
|
||||
const $ = cheerio.load(data);
|
||||
const list = $('.tgme_widget_message_wrap');
|
||||
|
||||
const feedTitle = searchQuery ? `「${searchQuery}」- ` + $('.tgme_channel_info_header_title').text() + ' - Telegram 频道' : $('.tgme_channel_info_header_title').text() + ' - Telegram 频道';
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('.tgme_channel_info_header_title').text() + ' - Telegram 频道',
|
||||
title: feedTitle,
|
||||
description: $('.tgme_channel_info_description').text(),
|
||||
link: `https://t.me/s/${username}`,
|
||||
link: resourceUrl,
|
||||
item:
|
||||
list &&
|
||||
list
|
||||
@@ -65,20 +69,20 @@ module.exports = async (ctx) => {
|
||||
|
||||
const replyAuthor = replyObject.find('.tgme_widget_message_author_name').length ? replyObject.find('.tgme_widget_message_author_name').text() : '';
|
||||
const replyLink = replyObject.attr('href').length ? replyObject.attr('href') : '';
|
||||
const replyMetatext = replyObject.find('.tgme_widget_message_metatext').length ? replyObject.find('tgme_widget_message_metatext').html() : '';
|
||||
const replyText = replyObject.find('.tgme_widget_message_text').length ? replyObject.find('.tgme_widget_message_text').html() : '';
|
||||
const replyMetatext = replyObject.find('.tgme_widget_message_metatext').length ? `<p><small>${replyObject.find('.tgme_widget_message_metatext').html()}</small></p>` : '';
|
||||
const replyText = replyObject.find('.tgme_widget_message_text').length ? `<p>${replyObject.find('.tgme_widget_message_text').html()}</p>` : '';
|
||||
|
||||
if (replyLink !== '') {
|
||||
return `<blockquote>
|
||||
<p><a href='${replyLink}'><strong>${replyAuthor}</strong>:</a></p>
|
||||
<p><small>${replyMetatext}</small></p>
|
||||
<p>${replyText}</p>
|
||||
${replyMetatext}
|
||||
${replyText}
|
||||
</blockquote>`;
|
||||
} else {
|
||||
return `<blockquote>
|
||||
<p><strong>${replyAuthor}</strong>:</p>
|
||||
<p><small>${replyMetatext}</small></p>
|
||||
<p>${replyText}</p>
|
||||
${replyMetatext}
|
||||
${replyText}
|
||||
</blockquote>`;
|
||||
}
|
||||
} else {
|
||||
@@ -134,11 +138,11 @@ module.exports = async (ctx) => {
|
||||
} else {
|
||||
linkPreviewTitle = '';
|
||||
}
|
||||
const linkPreviewDescription = item.find('.link_preview_description').length ? item.find('.link_preview_description').html() : '';
|
||||
const linkPreviewDescription = item.find('.link_preview_description').length ? `<p>${item.find('.link_preview_description').html()}</p>` : '';
|
||||
const linkPreviewImage = generateImg('.link_preview_image') + generateImg('.link_preview_right_image');
|
||||
|
||||
if (linkPreviewSite.length > 0 || linkPreviewTitle.length > 0 || linkPreviewDescription.length > 0 || linkPreviewImage.length > 0) {
|
||||
return `<blockquote>${linkPreviewSite}${linkPreviewTitle}<p>${linkPreviewDescription}</p>${linkPreviewImage}</blockquote>`;
|
||||
return `<blockquote>${linkPreviewSite}${linkPreviewTitle}${linkPreviewDescription}${linkPreviewImage}</blockquote>`;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user