diff --git a/README.md b/README.md index 15cea2b..9413d93 100644 --- a/README.md +++ b/README.md @@ -73,9 +73,12 @@ python2 feedupdater.py ``` To start the bot, run: - ``` python2 main.py +``` + or +``` +python2 main.py 2>&1 > newsbot.log & ``` If you want to run this as a systemd service, you can use the `rss2irc.service` file after adjusting the paths in there. diff --git a/bot.py b/bot.py index 472d120..3f5b120 100644 --- a/bot.py +++ b/bot.py @@ -6,13 +6,13 @@ import irc.bot import irc.client import irc.connection -import tinyurl import time import re import sys import feedparser import datetime import dateutil.parser +import requests from colour import Colours from db import FeedDB from config import Config @@ -67,7 +67,7 @@ def on_join(self, connection, event): self.__first_start = True def welcome_msg(self): - msg = u"Hi, I'm the channel's " + self.get_bolded_text(self.__get_colored_text(self.color_feedname,"RSS")) + u" news publishing bot v2.0. Send " + self.__get_colored_text(self.color_num,"!help") + u" to receive a list of commands in private message (PM). If you find me annoying, you can to use " + self.__get_colored_text(self.color_num,"/IGNORE " + self.connection.get_nickname()) + u" to stop reading me." + msg = u"Hi, I'm the channel " + self.get_bolded_text(self.__get_colored_text(self.color_feedname,"RSS")) + u" news publishing bot v2.1. Send " + self.__get_colored_text(self.color_num,"!help") + u" to receive a command list in private message (PM). If you find me annoying, you can to use " + self.__get_colored_text(self.color_num,"/IGNORE " + self.connection.get_nickname()) + u" to stop reading me." time.sleep(1) return msg @@ -187,7 +187,7 @@ def post_news(self, feed_name, title, url, date): """Try shortening url""" if self.__config.shorturls: try: - post_url = tinyurl.create_one(url) + post_url = self.shorten(url) if ("error" in post_url.lower()): post_url = url except Exception as e: @@ -204,6 +204,15 @@ def post_news(self, feed_name, title, url, date): print datetime.datetime.now(), e sys.stdout.flush() + def shorten(self, url): + try: # Trying to shorten URL + sresponse = requests.get('https://v.gd/create.php?format=json&url=' + url) + surl = sresponse.json()['shorturl'] + except Exception as err: + print('A shortening error occurred.') + surl = url + return surl + def __get_colored_text(self, color, text): if not self.__config.use_colors: return text @@ -241,9 +250,9 @@ def __init__(self): self.__connected = False def __check_config(self): - necessary_options = ["HOST", "PORT", "PASSWORD", "SSL", "CHANNEL", "NICK", "admin_nicks", "use_colors", - "num_col", "date", "feedname", "shorturls", "dateformat", "feedlimit", "update_before_connecting", - "url", "feedorderdesc"] + necessary_options = ["HOST", "PORT", "PASSWORD", "SSL", "CHANNEL", + "use_colors", "num_col", "feedname", "newstitle", "url", "date", "shorturls", "dateformat", "feedlimit", + "postdelay", "feedorderdesc", "update_before_connecting", "filterkeywords"] missing_options = [] for key in necessary_options: if not hasattr(self.__config, key): diff --git a/config.py.sample b/config.py.sample index 57c3fc5..4b8cd4f 100644 --- a/config.py.sample +++ b/config.py.sample @@ -5,21 +5,20 @@ class Config(object): lastpubmsg = 0 def __init__(self): - self.HOST = "irc.rizon.net" + self.HOST = 'irc.rizon.net' self.PORT = 9999 self.PASSWORD = None self.SSL = True - self.NICK = "rss2irc" - self.NICKPASS = "" - self.CHANNEL = "#tests" - self.admin_nicks= [''] + self.NICK = 'rss2irc' + self.NICKPASS = '' + self.CHANNEL = '#tests' - """ + ''' 00 - white 01 - black 02 - blue (navy) 03 - green 04 - red 05 - brown 06 - purple 07 - orange 08 - yellow 09 - light green 10 - teal 11 - cyan 12 - light blue 13 - pink 14 - grey 15 - light grey - """ + ''' self.use_colors = True self.num_col = 'red' # Empty for dafault color @@ -33,5 +32,6 @@ class Config(object): self.postdelay = 180 # Post delay during conversation in seconds. 0 for off. self.feedorderdesc = False self.update_before_connecting = True # Update all feeds before connecting to the IRC server - self.filterkeywords = {} # Lower-case keywords list to filter in title news. Use - # {"one","two","three"} to activate or {} for deactivate. + self.filterkeywords = () # Lower-case keywords list to filter in title news. Use + # ('one','two','three') to activate or () for deactivate. + diff --git a/requirements.txt b/requirements.txt index df2be02..2836f6a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,4 +15,4 @@ pytz==2016.4 six==1.10.0 git+https://github.com/palantir/sqlite3worker#egg=sqlite3worker tempora==1.4 -TinyUrl==0.1.0 +requests==2.25.1