feat: tg-chan search, trivial dom/format (#5127)

This commit is contained in:
notofoe
2020-07-07 17:42:18 +08:00
committed by GitHub
parent 7475bcacfb
commit 7efb4d88a0
4 changed files with 19 additions and 15 deletions
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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'));
+15 -11
View File
@@ -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 '';
}