| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- # -*- coding: utf-8 -*-
- import re
- import signal
- import irc
- import requests
- from bs4 import BeautifulSoup
- from urllib.parse import urlparse
- ## IRC Config
- server = "127.0.0.1"
- port = 22025
- channels = ["#test", "#test1"]
- botnick = "website-title"
- ircc = irc.IRC()
- ircc.connect(server, port, channels, botnick)
- def signal_handler(sig, frame):
- print("Caught termination signal, cleaning up and exiting...")
- ircc.disconnect(server, port)
- print("Shut down successfully")
- exit(0)
- signal.signal(signal.SIGINT, signal_handler)
- while True:
- text = ircc.get_response()
- if not len(text) > 0:
- print("Error: disconnected from server")
- exit(-1)
- print(text)
- text_list = text.split(' ')
- if text_list[1] == "PRIVMSG":
- channel = text_list[2]
- msg = ' '.join(text_list[3:])
- url = re.findall(r'(https?://[^\s]+)', msg)
- for i in url:
- parsed_url = urlparse(i)
- if parsed_url.netloc.lower() in ['twitter.com','t.co', 'x.com'] or parsed_url.scheme != 'https':
- continue
- try:
- reqs = requests.get(i)
- except requests.exceptions.SSLError:
- print("SSLERROR: wrong signature type")
- continue
- soup = BeautifulSoup(reqs.text, 'html.parser')
- try:
- title_text = soup.find('title').get_text()
- except:
- print("Error: Title not found!")
- continue
- title_text = title_text.split('\n')
- title_msg = []
- # remove empty lines from title body
- for line in title_text:
- if not line.strip():
- continue
- title_msg.append(line)
- title_msg = " ".join(title_msg)
- print(f"Title: {title_msg}")
- ircc.send(channel, f"Title: {title_msg}")
|