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()