diff options
Diffstat (limited to 'telegram.py')
-rwxr-xr-x | telegram.py | 78 |
1 files changed, 37 insertions, 41 deletions
diff --git a/telegram.py b/telegram.py index 3058339..d95ce34 100755 --- a/telegram.py +++ b/telegram.py @@ -5,68 +5,64 @@ from datetime import datetime from bs4 import BeautifulSoup import sys -def _format_date(dt): - """convert a datetime into an RFC 822 formatted date - Input date must be in GMT. - Stolen from PyRSS2Gen. - """ - # Looks like: - # Sat, 07 Sep 2002 00:00:01 GMT - # Can't use strftime because that's locale dependent - # - # Isn't there a standard way to do this for Python? The - # rfc822 and email.Utils modules assume a timestamp. The - # following is based on the rfc822 module. - return "%s, %02d %s %04d %02d:%02d:%02d GMT" % ( - ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][dt.weekday()], - dt.day, - ["Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][dt.month-1], - dt.year, dt.hour, dt.minute, dt.second) +from rss import _format_date + def telegram(channel): - url = 'https://t.me/s/' + 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'}) + 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'}) + 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'] + 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 + url = "https://t.me/s/" + channel - print("""<?xml version="1.0" encoding="UTF-8"?> + print( + """<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> - <title>Telegram: """ + channel + """</title> - <link>""" + url + """</link> - <description>The latest entries of the telegram channel of """ +channel + """</description> - <lastBuildDate>""" + _format_date(datetime.now()) + """</lastBuildDate>""") + <title>Telegram: """ + + channel + + """</title> + <link>""" + + url + + """</link> + <description>The latest entries of the telegram channel of """ + + channel + + """</description> + <lastBuildDate>""" + + _format_date(datetime.now()) + + """</lastBuildDate>""" + ) for title, description, link, date in telegram(channel): - print(' <item>') - print(' <title><![CDATA[' + title + ']]></title>') - print(' <link>' + link + '</link>') - print(' <description><![CDATA[' + description + ']]></description>') - print(' <pubDate>' + date + '</pubDate>') + print(" <item>") + print(" <title><![CDATA[" + title + "]]></title>") + print(" <link>" + link + "</link>") + print(" <description><![CDATA[" + description + "]]></description>") + print(" <pubDate>" + date + "</pubDate>") # print(' <media:content url="' + thumbnail + b'" type="image/jpeg" />') - print(' </item>') + print(" </item>") + + print(" </channel>") + print("</rss>") - print(' </channel>') - print('</rss>') if __name__ == "__main__": if len(sys.argv) != 2: - print('Usage:', sys.argv[0], '<telegram channel>') + print("Usage:", sys.argv[0], "<telegram channel>") sys.exit(1) main(sys.argv[1]) |