#!/usr/bin/env python3 from urllib.request import urlopen, Request from datetime import datetime from bs4 import BeautifulSoup import sys from rss import _format_date def telegram(channel): url = "https://t.me/s/" + channel res = urlopen(Request(url)) soup = BeautifulSoup(res, features="html.parser") # messages = soup.find_all('div', attrs={'class': 'tgme_widget_message_wrap'}) messages = soup.find_all("div", attrs={"class": "tgme_widget_message_bubble"}) for message in messages: date = message.find("time", attrs={"class": "time"})["datetime"] html = message.find("div", attrs={"class": "tgme_widget_message_text"}) # preview = message.find('div', attrs={'class': 'tgme_widget_message_bubble'}) link = message.find("a", attrs={"class": "tgme_widget_message_date"}) title = html.text if html else "No text" description = str(message) # if preview else '?' link = link["href"] yield title, description, link, date def main(channel): url = "https://t.me/s/" + channel print( """ Telegram: """ + channel + """ """ + url + """ The latest entries of the telegram channel of """ + channel + """ """ + _format_date(datetime.now()) + """""" ) for title, description, link, date in telegram(channel): print(" ") print(" <![CDATA[" + title + "]]>") print(" " + link + "") print(" ") print(" " + date + "") # print(' ') print(" ") print(" ") print("") if __name__ == "__main__": if len(sys.argv) != 2: print("Usage:", sys.argv[0], "") sys.exit(1) main(sys.argv[1])