1import { Dataset, createCheerioRouter } from 'crawlee';
2
3export const router = createCheerioRouter();
4
5router.addDefaultHandler(async ({ request, $, log }) => {
6 const { userData: { channelName, id } } = request;
7 const error = $('div.tgme_widget_message_error, div.message_media_not_supported').text().trim();
8 if (error) {
9 log.error(error, request.userData);
10 return;
11 }
12 const author = $('a.tgme_widget_message_author_name').length ? $('a.tgme_widget_message_author_name') : $('a.tgme_widget_message_owner_name');
13 const forwarded = $('div.tgme_widget_message_forwarded_from a');
14 const post = {
15 id,
16 channelName,
17 authorName: author?.text(),
18 authorTelegram: author?.attr('href'),
19 repliedTo: $('a.tgme_widget_message_reply').attr('href'),
20 forwardedTitle: $(forwarded)?.text() || undefined,
21 forwardedFromUrl: $(forwarded)?.attr('href') || undefined,
22 date: $('a.tgme_widget_message_date time').attr('datetime'),
23 viewsCount: $('span.tgme_widget_message_views').text(),
24 text: $('div.tgme_widget_message_text').text(),
25 linkPreview: $('a.tgme_widget_message_link_preview').text().trim() || undefined,
26 };
27 await Dataset.pushData(post);
28});
29
30
31
32
33