mirror of
https://github.com/SpudGunMan/meshing-around.git
synced 2026-08-07 17:32:52 +02:00
enhance rssread
enhance rssread enhance rssread enhance rssread
This commit is contained in:
+3
-1
@@ -57,7 +57,9 @@ spaceWeather = True
|
||||
|
||||
# enable or disable the RSS module, and truncate the story
|
||||
rssEnable = True
|
||||
rssFeedURL = http://www.hackaday.com/rss.xml
|
||||
rssFeedURL = http://www.hackaday.com/rss.xml,https://news.sparkfun.com/feeds/news
|
||||
# RSS feed names must match the order of the URLs above, default is used if no match
|
||||
rssFeedNames = default,sparkfun
|
||||
rssMaxItems = 3
|
||||
rssTruncate = 100
|
||||
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ def auto_response(message, snr, rssi, hop, pkiStatus, message_from_id, channel_n
|
||||
"q:": lambda: quizHandler(message, message_from_id, deviceID),
|
||||
"quiz": lambda: quizHandler(message, message_from_id, deviceID),
|
||||
"readnews": lambda: handleNews(message_from_id, deviceID, message, isDM),
|
||||
"readrss": lambda: get_rss_feed() if rssEnable else "RSS feed module is disabled",
|
||||
"readrss": lambda: get_rss_feed(message),
|
||||
"riverflow": lambda: handle_riverFlow(message, message_from_id, deviceID),
|
||||
"rlist": lambda: handle_repeaterQuery(message_from_id, deviceID, channel_number),
|
||||
"satpass": lambda: handle_satpass(message_from_id, deviceID, channel_number, message),
|
||||
|
||||
+22
-4
@@ -3,13 +3,31 @@ from modules.log import *
|
||||
import urllib.request
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
RSS_FEED_URL = rssFeedURL
|
||||
RSS_FEED_URLS = rssFeedURL
|
||||
RSS_FEED_NAMES = rssFeedNames
|
||||
RSS_RETURN_COUNT = rssMaxItems
|
||||
RSS_TRIM_LENGTH = rssTruncate
|
||||
|
||||
def get_rss_feed():
|
||||
def get_rss_feed(msg):
|
||||
# Determine which feed to use
|
||||
feed_name = "default"
|
||||
if msg and any(name in msg for name in RSS_FEED_NAMES):
|
||||
for name in RSS_FEED_NAMES:
|
||||
if name in msg:
|
||||
feed_name = name
|
||||
break
|
||||
|
||||
try:
|
||||
with urllib.request.urlopen(RSS_FEED_URL) as response:
|
||||
idx = RSS_FEED_NAMES.index(feed_name)
|
||||
feed_url = RSS_FEED_URLS[idx]
|
||||
except (ValueError, IndexError):
|
||||
return f"Feed '{feed_name}' not found."
|
||||
|
||||
if "?" in msg:
|
||||
return f"Fetches the latest {RSS_RETURN_COUNT} entries from the {feed_name} RSS feed."
|
||||
|
||||
try:
|
||||
with urllib.request.urlopen(feed_url) as response:
|
||||
xml_data = response.read()
|
||||
root = ET.fromstring(xml_data)
|
||||
items = root.findall('.//item')[:RSS_RETURN_COUNT]
|
||||
@@ -30,4 +48,4 @@ def get_rss_feed():
|
||||
formatted_entries.append(f"{title}\n{description}\n")
|
||||
return "\n".join(formatted_entries)
|
||||
except Exception as e:
|
||||
return f"Error fetching RSS feed: {e}"
|
||||
return ERROR_FETCHING_DATA
|
||||
|
||||
+2
-1
@@ -241,9 +241,10 @@ try:
|
||||
enableEcho = config['general'].getboolean('enableEcho', False) # default False
|
||||
echoChannel = config['general'].getint('echoChannel', '9') # default 9, empty string to ignore
|
||||
rssEnable = config['general'].getboolean('rssEnable', True) # default True
|
||||
rssFeedURL = config['general'].get('rssFeedURL', 'http://www.hackaday.com/rss.xml')
|
||||
rssFeedURL = config['general'].get('rssFeedURL', 'http://www.hackaday.com/rss.xml,https://www.arrl.org/rss/arrl.rss').split(',')
|
||||
rssMaxItems = config['general'].getint('rssMaxItems', 3) # default 3 items
|
||||
rssTruncate = config['general'].getint('rssTruncate', 100) # default 100 characters
|
||||
rssFeedNames = config['general'].get('rssFeedNames', 'default,arrl').split(',')
|
||||
|
||||
# emergency response
|
||||
emergency_responder_enabled = config['emergencyHandler'].getboolean('enabled', False)
|
||||
|
||||
Reference in New Issue
Block a user