From 5505fbf9d5cb83befc222e75b8112062f5de1b15 Mon Sep 17 00:00:00 2001 From: notofoe <43095406+notofoe@users.noreply.github.com> Date: Sun, 4 Oct 2020 04:27:35 +0800 Subject: [PATCH] feat: telegram channel audio & podcast support (#5785) --- lib/routes/telegram/channel.js | 37 +++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/lib/routes/telegram/channel.js b/lib/routes/telegram/channel.js index b6901536a..848983a84 100644 --- a/lib/routes/telegram/channel.js +++ b/lib/routes/telegram/channel.js @@ -21,6 +21,10 @@ module.exports = async (ctx) => { description: $('.tgme_channel_info_description').text(), link: resourceUrl, allowEmpty: true, + + itunes_author: $('.tgme_channel_info_header_title').text(), + image: $('.tgme_page_photo_image > img').attr('src'), + item: list && list @@ -136,6 +140,26 @@ module.exports = async (ctx) => { return messageVideos; }; + /* audio */ + const messageAudioUrl = item.find('audio.tgme_widget_message_voice').length ? item.find('audio.tgme_widget_message_voice').attr('src') : ''; + const messageAudioText = item.find('audio.tgme_widget_message_voice').length ? `` : ''; + const messageAudioDuration = () => { + if (item.find('.tgme_widget_message_voice_duration').length) { + const durationInMmss = item.find('.tgme_widget_message_voice_duration').text(); + const p = durationInMmss.split(':'); + + let second = 0, + minute = 1; + while (p.length > 0) { + second += minute * parseInt(p.pop(), 10); + minute *= 60; + } + return second.toString(); + } else { + return ''; + } + }; + /* link preview */ const linkPreview = () => { const linkPreviewSite = item.find('.link_preview_site_name').length ? `${item.find('.link_preview_site_name').text()}
` : ''; @@ -162,6 +186,9 @@ module.exports = async (ctx) => { /* attachment */ const attachmentTitle = item.find('.tgme_widget_message_document_title').length ? item.find('.tgme_widget_message_document_title').text() + ' / ' + item.find('.tgme_widget_message_document_extra').text() : ''; + /* pubDate */ + const pubDate = new Date(item.find('.tgme_widget_message_date time').attr('datetime')).toUTCString(); + /* message text & title */ const messageTextObject = item.find('.tgme_widget_message_bubble > .tgme_widget_message_text'); let messageText = '', @@ -175,16 +202,20 @@ module.exports = async (ctx) => { } else if (attachmentTitle !== '') { messageTitle = attachmentTitle; } else { - messageTitle = '无题'; + messageTitle = pubDate; } } return { title: mediaTag() + messageTitle, - description: fwdFrom() + replyContent() + messageText + linkPreview() + messageImgs + messageVideos(), - pubDate: new Date(item.find('.tgme_widget_message_date time').attr('datetime')).toUTCString(), + description: fwdFrom() + replyContent() + messageAudioText + messageText + linkPreview() + messageImgs + messageVideos(), + pubDate: pubDate, link: item.find('.tgme_widget_message_date').attr('href'), author: item.find('.tgme_widget_message_from_author').text(), + + enclosure_url: messageAudioUrl, + enclosure_length: messageAudioDuration(), + enclosure_type: 'audio/ogg', }; }) .get()