should be done now
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
venv/**
|
||||
config.toml
|
||||
372
main.py
Normal file
372
main.py
Normal file
@@ -0,0 +1,372 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
RSS to MQTT Push Notification Script
|
||||
Reads RSS feeds from config and sends new items as push notifications via MQTT
|
||||
"""
|
||||
|
||||
import json
|
||||
import hashlib
|
||||
import time
|
||||
import logging
|
||||
import re
|
||||
from typing import Set, Dict, Any, Optional
|
||||
from pathlib import Path
|
||||
from html import unescape
|
||||
from html.parser import HTMLParser
|
||||
|
||||
import toml
|
||||
import feedparser
|
||||
import paho.mqtt.client as mqtt
|
||||
|
||||
|
||||
class HTMLTextExtractor(HTMLParser):
|
||||
"""Simple HTML parser to extract text content"""
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.text_content = []
|
||||
|
||||
def handle_data(self, data):
|
||||
self.text_content.append(data.strip())
|
||||
|
||||
def get_text(self):
|
||||
return ' '.join(self.text_content).strip()
|
||||
|
||||
|
||||
def clean_html_text(html_content: str) -> str:
|
||||
"""Clean HTML content and extract plain text"""
|
||||
if not html_content:
|
||||
return ""
|
||||
|
||||
# First unescape HTML entities
|
||||
text = unescape(html_content)
|
||||
|
||||
# Use HTML parser to extract text
|
||||
parser = HTMLTextExtractor()
|
||||
try:
|
||||
parser.feed(text)
|
||||
clean_text = parser.get_text()
|
||||
except Exception:
|
||||
# Fallback: use regex to strip HTML tags
|
||||
clean_text = re.sub('<[^<]+?>', '', text)
|
||||
|
||||
# Clean up whitespace
|
||||
clean_text = re.sub(r'\s+', ' ', clean_text).strip()
|
||||
|
||||
return clean_text
|
||||
|
||||
|
||||
class RSSNotificationPusher:
|
||||
def __init__(self, config_path: str = "config.toml"):
|
||||
self.config_path = config_path
|
||||
self.config = self.load_config()
|
||||
self.seen_items: Dict[str, Set[str]] = {}
|
||||
self.mqtt_client = None
|
||||
self.setup_logging()
|
||||
self.setup_mqtt()
|
||||
|
||||
def setup_logging(self):
|
||||
"""Setup logging configuration"""
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(levelname)s - %(message)s',
|
||||
handlers=[
|
||||
logging.FileHandler('rss_notifier.log'),
|
||||
logging.StreamHandler()
|
||||
]
|
||||
)
|
||||
self.logger = logging.getLogger(__name__)
|
||||
|
||||
def load_config(self) -> Dict[str, Any]:
|
||||
"""Load configuration from TOML file"""
|
||||
try:
|
||||
with open(self.config_path, 'r') as f:
|
||||
config = toml.load(f)
|
||||
return config
|
||||
except FileNotFoundError:
|
||||
self.create_sample_config()
|
||||
raise FileNotFoundError(f"Config file {self.config_path} not found. Sample created.")
|
||||
except Exception as e:
|
||||
raise Exception(f"Error loading config: {e}")
|
||||
|
||||
def create_sample_config(self):
|
||||
"""Create a sample config file"""
|
||||
sample_config = {
|
||||
"broker": {
|
||||
"address": "proliant.lan",
|
||||
"client_id": "notification-pusher-client",
|
||||
"topic": "notification-pusher" # MQTT topic
|
||||
},
|
||||
"auth": {
|
||||
"username": "mqttuser",
|
||||
"password": "XXXXXXXXX"
|
||||
},
|
||||
"notifications": {
|
||||
"topic": "rss-feeds", # ntfy.sh topic for notifications
|
||||
"max_body_length": 150 # Maximum length for notification body
|
||||
},
|
||||
"rss": {
|
||||
"feeds": [
|
||||
"https://feeds.feedburner.com/TechCrunch",
|
||||
"https://rss.cnn.com/rss/edition.rss",
|
||||
"https://feeds.bbci.co.uk/news/rss.xml"
|
||||
],
|
||||
"check_interval": 300, # seconds
|
||||
"max_items_per_feed": 5 # Only check top N items per feed
|
||||
}
|
||||
}
|
||||
|
||||
with open(self.config_path, 'w') as f:
|
||||
toml.dump(sample_config, f)
|
||||
print(f"Sample config created at {self.config_path}")
|
||||
|
||||
def setup_mqtt(self):
|
||||
"""Setup MQTT client connection"""
|
||||
try:
|
||||
self.mqtt_client = mqtt.Client(client_id=self.config["broker"]["client_id"])
|
||||
|
||||
# Set credentials if provided
|
||||
if "auth" in self.config:
|
||||
self.mqtt_client.username_pw_set(
|
||||
self.config["auth"]["username"],
|
||||
self.config["auth"]["password"]
|
||||
)
|
||||
|
||||
# Setup callbacks
|
||||
self.mqtt_client.on_connect = self.on_mqtt_connect
|
||||
self.mqtt_client.on_disconnect = self.on_mqtt_disconnect
|
||||
self.mqtt_client.on_publish = self.on_mqtt_publish
|
||||
|
||||
# Connect to broker
|
||||
self.mqtt_client.connect(self.config["broker"]["address"], 1883, 60)
|
||||
self.mqtt_client.loop_start()
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"MQTT setup error: {e}")
|
||||
raise
|
||||
|
||||
def on_mqtt_connect(self, client, userdata, flags, rc):
|
||||
"""MQTT connection callback"""
|
||||
if rc == 0:
|
||||
self.logger.info("Connected to MQTT broker")
|
||||
else:
|
||||
self.logger.error(f"Failed to connect to MQTT broker: {rc}")
|
||||
|
||||
def on_mqtt_disconnect(self, client, userdata, rc):
|
||||
"""MQTT disconnection callback"""
|
||||
self.logger.warning("Disconnected from MQTT broker")
|
||||
|
||||
def on_mqtt_publish(self, client, userdata, mid):
|
||||
"""MQTT publish callback"""
|
||||
self.logger.debug(f"Message published: {mid}")
|
||||
|
||||
def generate_item_id(self, feed_url: str, item: Dict[str, Any]) -> str:
|
||||
"""Generate unique ID for RSS item"""
|
||||
# Use link if available, otherwise use title + published date
|
||||
identifier = item.get('link', '') + item.get('title', '') + item.get('published', '')
|
||||
return hashlib.md5((feed_url + identifier).encode()).hexdigest()
|
||||
|
||||
def parse_rss_feed(self, feed_url: str) -> list:
|
||||
"""Parse RSS feed and return new items (limited to most recent items)"""
|
||||
try:
|
||||
self.logger.info(f"Parsing feed: {feed_url}")
|
||||
feed = feedparser.parse(feed_url)
|
||||
|
||||
if feed.bozo:
|
||||
self.logger.warning(f"Feed parsing issues for {feed_url}: {feed.bozo_exception}")
|
||||
|
||||
# Initialize seen items set for this feed if not exists
|
||||
if feed_url not in self.seen_items:
|
||||
self.seen_items[feed_url] = set()
|
||||
|
||||
# Get max items to check from config (default 5)
|
||||
max_items = self.config.get("rss", {}).get("max_items_per_feed", 5)
|
||||
recent_entries = feed.entries[:max_items]
|
||||
self.logger.debug(f"Processing top {len(recent_entries)} entries from {feed_url}")
|
||||
|
||||
new_items = []
|
||||
for entry in recent_entries:
|
||||
item_id = self.generate_item_id(feed_url, entry)
|
||||
|
||||
if item_id not in self.seen_items[feed_url]:
|
||||
self.seen_items[feed_url].add(item_id)
|
||||
new_items.append(entry)
|
||||
|
||||
self.logger.info(f"Found {len(new_items)} new items in {feed_url} (checked top {max_items})")
|
||||
return new_items
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error parsing feed {feed_url}: {e}")
|
||||
return []
|
||||
|
||||
def extract_clean_description(self, entry: Dict[str, Any]) -> str:
|
||||
"""Extract and clean description/summary from RSS entry"""
|
||||
# Try different fields for content
|
||||
content_candidates = [
|
||||
entry.get('summary', ''),
|
||||
entry.get('description', ''),
|
||||
entry.get('content', [{}])[0].get('value', '') if entry.get('content') else '',
|
||||
entry.get('subtitle', '')
|
||||
]
|
||||
|
||||
# Find the first non-empty content
|
||||
raw_content = ""
|
||||
for candidate in content_candidates:
|
||||
if candidate and candidate.strip():
|
||||
raw_content = candidate
|
||||
break
|
||||
|
||||
if not raw_content:
|
||||
return "No description available"
|
||||
|
||||
# Clean HTML and extract text
|
||||
clean_text = clean_html_text(raw_content)
|
||||
|
||||
# If still empty after cleaning, try original with basic cleanup
|
||||
if not clean_text:
|
||||
clean_text = re.sub(r'<[^>]+>', '', raw_content)
|
||||
clean_text = re.sub(r'\s+', ' ', clean_text).strip()
|
||||
|
||||
return clean_text or "No description available"
|
||||
|
||||
def create_notification(self, entry: Dict[str, Any], feed_title: str = "") -> Dict[str, Any]:
|
||||
"""Create notification object from RSS entry"""
|
||||
# Extract and clean title
|
||||
title = entry.get('title', 'No Title').strip()
|
||||
title = clean_html_text(title) or title # Clean any HTML in title too
|
||||
|
||||
if feed_title:
|
||||
title = f"[{feed_title}] {title}"
|
||||
|
||||
# Extract and clean description
|
||||
body = self.extract_clean_description(entry)
|
||||
|
||||
# Truncate body if too long
|
||||
max_length = self.config.get("notifications", {}).get("max_body_length", 150)
|
||||
if len(body) > max_length:
|
||||
body = body[:max_length-3] + "..."
|
||||
|
||||
# Get notification topic from config (for ntfy.sh)
|
||||
notification_topic = self.config.get("notifications", {}).get("topic", "rss-feeds")
|
||||
|
||||
# Create notification object matching the Rust struct format
|
||||
notification = {
|
||||
"title": title,
|
||||
"body": body,
|
||||
"topic": notification_topic # This is the ntfy.sh topic
|
||||
}
|
||||
|
||||
# Add link if available
|
||||
if 'link' in entry and entry['link'].strip():
|
||||
notification["link"] = entry['link'].strip()
|
||||
|
||||
return notification
|
||||
|
||||
def send_notification(self, notification: Dict[str, Any]):
|
||||
"""Send notification via MQTT"""
|
||||
try:
|
||||
payload = json.dumps(notification, ensure_ascii=False)
|
||||
result = self.mqtt_client.publish(
|
||||
self.config["broker"]["topic"],
|
||||
payload,
|
||||
qos=1
|
||||
)
|
||||
|
||||
if result.rc == mqtt.MQTT_ERR_SUCCESS:
|
||||
self.logger.info(f"Notification sent: {notification['title'][:50]}...")
|
||||
self.logger.debug(f"Full notification: {notification}")
|
||||
else:
|
||||
self.logger.error(f"Failed to send notification: {result.rc}")
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error sending notification: {e}")
|
||||
|
||||
def process_feeds(self):
|
||||
"""Process all RSS feeds and send notifications for new items"""
|
||||
feeds = self.config.get("rss", {}).get("feeds", [])
|
||||
|
||||
if not feeds:
|
||||
self.logger.warning("No RSS feeds configured")
|
||||
return
|
||||
|
||||
for feed_url in feeds:
|
||||
try:
|
||||
# Parse feed
|
||||
feed_data = feedparser.parse(feed_url)
|
||||
feed_title = clean_html_text(feed_data.feed.get('title', '')) or 'RSS Feed'
|
||||
|
||||
# Get new items
|
||||
new_items = self.parse_rss_feed(feed_url)
|
||||
|
||||
# Send notifications for new items
|
||||
for item in new_items:
|
||||
notification = self.create_notification(item, feed_title)
|
||||
self.send_notification(notification)
|
||||
|
||||
# Small delay to avoid overwhelming
|
||||
time.sleep(0.5)
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error processing feed {feed_url}: {e}")
|
||||
|
||||
def run_once(self):
|
||||
"""Run the notification process once"""
|
||||
self.logger.info("Starting RSS notification check")
|
||||
self.process_feeds()
|
||||
self.logger.info("RSS notification check completed")
|
||||
|
||||
def run_continuously(self):
|
||||
"""Run the notification process continuously"""
|
||||
check_interval = self.config.get("rss", {}).get("check_interval", 300)
|
||||
self.logger.info(f"Starting continuous RSS monitoring (interval: {check_interval}s)")
|
||||
|
||||
try:
|
||||
while True:
|
||||
self.run_once()
|
||||
time.sleep(check_interval)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
self.logger.info("Shutting down...")
|
||||
except Exception as e:
|
||||
self.logger.error(f"Unexpected error: {e}")
|
||||
finally:
|
||||
self.cleanup()
|
||||
|
||||
def cleanup(self):
|
||||
"""Cleanup resources"""
|
||||
if self.mqtt_client:
|
||||
self.mqtt_client.loop_stop()
|
||||
self.mqtt_client.disconnect()
|
||||
self.logger.info("Cleanup completed")
|
||||
|
||||
|
||||
def main():
|
||||
"""Main entry point"""
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description='RSS to MQTT Push Notification Script')
|
||||
parser.add_argument('--config', default='config.toml', help='Config file path')
|
||||
parser.add_argument('--once', action='store_true', help='Run once and exit')
|
||||
parser.add_argument('--debug', action='store_true', help='Enable debug logging')
|
||||
args = parser.parse_args()
|
||||
|
||||
# Set debug level if requested
|
||||
if args.debug:
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
|
||||
try:
|
||||
pusher = RSSNotificationPusher(args.config)
|
||||
|
||||
if args.once:
|
||||
pusher.run_once()
|
||||
else:
|
||||
pusher.run_continuously()
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit(main())
|
||||
278
rss_notifier.log
Normal file
278
rss_notifier.log
Normal file
@@ -0,0 +1,278 @@
|
||||
2025-08-12 22:59:08,751 - INFO - Starting continuous RSS monitoring (interval: 300s)
|
||||
2025-08-12 22:59:08,751 - INFO - Starting RSS notification check
|
||||
2025-08-12 22:59:08,752 - INFO - Connected to MQTT broker
|
||||
2025-08-12 22:59:09,219 - INFO - Parsing feed: https://feeds.feedburner.com/TechCrunch
|
||||
2025-08-12 22:59:09,609 - INFO - Found 20 new items in https://feeds.feedburner.com/TechCrunch
|
||||
2025-08-12 22:59:09,609 - INFO - Notification sent: [Crunch Hype] Top 10 AI Tools That Will Transform Your Content Creation in 2025
|
||||
2025-08-12 22:59:10,110 - INFO - Notification sent: [Crunch Hype] LimeWire AI Studio Review 2023: Details, Pricing & Features
|
||||
2025-08-12 22:59:10,610 - INFO - Notification sent: [Crunch Hype] Top 10 AI Tools in 2023 That Will Make Your Life Easier
|
||||
2025-08-12 22:59:11,110 - INFO - Notification sent: [Crunch Hype] Top 10 AI Content Generator & Writer Tools in 2022
|
||||
2025-08-12 22:59:11,611 - INFO - Notification sent: [Crunch Hype] Beginner Guide to CJ Affiliate (Commission Junction) in 2022
|
||||
2025-08-12 22:59:12,111 - INFO - Notification sent: [Crunch Hype] TOP 11 AI MARKETING TOOLS YOU SHOULD USE (Updated 2022)
|
||||
2025-08-12 22:59:12,611 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions About Affiliate Marketing
|
||||
2025-08-12 22:59:13,112 - INFO - Notification sent: [Crunch Hype] What is Blockchain: Everything You Need to Know (2022)
|
||||
2025-08-12 22:59:13,612 - INFO - Notification sent: [Crunch Hype] ProWritingAid VS Grammarly: Which Grammar Checker is Better in (2022) ?
|
||||
2025-08-12 22:59:14,112 - INFO - Notification sent: [Crunch Hype] Sellfy Review 2022: How Good Is This Ecommerce Platform?
|
||||
2025-08-12 22:59:14,612 - INFO - Notification sent: [Crunch Hype] Ahrefs vs SEMrush: Which SEO Tool Should You Use?
|
||||
2025-08-12 22:59:15,113 - INFO - Notification sent: [Crunch Hype] Top 10 Best PLR(Private Label Rights) Websites | Which One You Should Join in 2022?
|
||||
2025-08-12 22:59:15,613 - INFO - Notification sent: [Crunch Hype] Canva Review 2022: Details, Pricing & Features
|
||||
2025-08-12 22:59:16,113 - INFO - Notification sent: [Crunch Hype] Top 7 Best Wordpress Plugin Of All Time
|
||||
2025-08-12 22:59:16,614 - INFO - Notification sent: [Crunch Hype] Ginger VS Grammarly: Which Grammar Checker is Better in (2022) ?
|
||||
2025-08-12 22:59:17,114 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions About NFTs(Non-Fungible Tokens)
|
||||
2025-08-12 22:59:17,614 - INFO - Notification sent: [Crunch Hype] 10 Best Chrome Extensions That Are Perfect for Everyone
|
||||
2025-08-12 22:59:18,025 - INFO - Shutting down...
|
||||
2025-08-12 22:59:18,616 - WARNING - Disconnected from MQTT broker
|
||||
2025-08-12 22:59:18,616 - INFO - Cleanup completed
|
||||
2025-08-12 23:00:32,764 - INFO - Starting continuous RSS monitoring (interval: 300s)
|
||||
2025-08-12 23:00:32,765 - INFO - Starting RSS notification check
|
||||
2025-08-12 23:00:32,765 - INFO - Connected to MQTT broker
|
||||
2025-08-12 23:00:33,161 - INFO - Parsing feed: https://feeds.feedburner.com/TechCrunch
|
||||
2025-08-12 23:00:33,531 - INFO - Found 20 new items in https://feeds.feedburner.com/TechCrunch
|
||||
2025-08-12 23:00:33,531 - INFO - Notification sent: [Crunch Hype] Top 10 AI Tools That Will Transform Your Content Creation in 2025
|
||||
2025-08-12 23:00:34,031 - INFO - Notification sent: [Crunch Hype] LimeWire AI Studio Review 2023: Details, Pricing & Features
|
||||
2025-08-12 23:00:34,531 - INFO - Notification sent: [Crunch Hype] Top 10 AI Tools in 2023 That Will Make Your Life Easier
|
||||
2025-08-12 23:00:35,032 - INFO - Notification sent: [Crunch Hype] Top 10 AI Content Generator & Writer Tools in 2022
|
||||
2025-08-12 23:00:35,532 - INFO - Notification sent: [Crunch Hype] Beginner Guide to CJ Affiliate (Commission Junction) in 2022
|
||||
2025-08-12 23:00:36,032 - INFO - Notification sent: [Crunch Hype] TOP 11 AI MARKETING TOOLS YOU SHOULD USE (Updated 2022)
|
||||
2025-08-12 23:00:36,533 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions About Affiliate Marketing
|
||||
2025-08-12 23:00:37,033 - INFO - Notification sent: [Crunch Hype] What is Blockchain: Everything You Need to Know (2022)
|
||||
2025-08-12 23:00:37,533 - INFO - Notification sent: [Crunch Hype] ProWritingAid VS Grammarly: Which Grammar Checker is Better in (2022) ?
|
||||
2025-08-12 23:00:38,034 - INFO - Notification sent: [Crunch Hype] Sellfy Review 2022: How Good Is This Ecommerce Platform?
|
||||
2025-08-12 23:00:38,534 - INFO - Notification sent: [Crunch Hype] Ahrefs vs SEMrush: Which SEO Tool Should You Use?
|
||||
2025-08-12 23:00:39,034 - INFO - Notification sent: [Crunch Hype] Top 10 Best PLR(Private Label Rights) Websites | Which One You Should Join in 2022?
|
||||
2025-08-12 23:00:39,535 - INFO - Notification sent: [Crunch Hype] Canva Review 2022: Details, Pricing & Features
|
||||
2025-08-12 23:00:40,035 - INFO - Notification sent: [Crunch Hype] Top 7 Best Wordpress Plugin Of All Time
|
||||
2025-08-12 23:00:40,535 - INFO - Notification sent: [Crunch Hype] Ginger VS Grammarly: Which Grammar Checker is Better in (2022) ?
|
||||
2025-08-12 23:00:41,036 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions About NFTs(Non-Fungible Tokens)
|
||||
2025-08-12 23:00:41,536 - INFO - Notification sent: [Crunch Hype] 10 Best Chrome Extensions That Are Perfect for Everyone
|
||||
2025-08-12 23:00:42,036 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions About Email Marketing
|
||||
2025-08-12 23:00:42,537 - INFO - Notification sent: [Crunch Hype] 7 Free Websites Every Content Creator Needs to Know
|
||||
2025-08-12 23:00:43,037 - INFO - Notification sent: [Crunch Hype] Top 9 Free AI Tools That Make Your Life Easier
|
||||
2025-08-12 23:00:43,651 - INFO - Parsing feed: https://rss.cnn.com/rss/edition.rss
|
||||
2025-08-12 23:00:43,701 - WARNING - Feed parsing issues for https://rss.cnn.com/rss/edition.rss: <urlopen error [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1028)>
|
||||
2025-08-12 23:00:43,701 - INFO - Found 0 new items in https://rss.cnn.com/rss/edition.rss
|
||||
2025-08-12 23:00:43,701 - INFO - RSS notification check completed
|
||||
2025-08-12 23:02:28,925 - INFO - Shutting down...
|
||||
2025-08-12 23:02:29,142 - WARNING - Disconnected from MQTT broker
|
||||
2025-08-12 23:02:29,142 - INFO - Cleanup completed
|
||||
2025-08-12 23:02:56,060 - INFO - Starting continuous RSS monitoring (interval: 300s)
|
||||
2025-08-12 23:02:56,060 - INFO - Starting RSS notification check
|
||||
2025-08-12 23:02:56,060 - INFO - Connected to MQTT broker
|
||||
2025-08-12 23:02:56,425 - INFO - Parsing feed: https://feeds.feedburner.com/TechCrunch
|
||||
2025-08-12 23:02:56,780 - INFO - Found 20 new items in https://feeds.feedburner.com/TechCrunch
|
||||
2025-08-12 23:02:56,781 - INFO - Notification sent: [Crunch Hype] Top 10 AI Tools That Will Transform ...
|
||||
2025-08-12 23:02:57,283 - INFO - Notification sent: [Crunch Hype] LimeWire AI Studio Review 2023: Deta...
|
||||
2025-08-12 23:02:57,785 - INFO - Notification sent: [Crunch Hype] Top 10 AI Tools in 2023 That Will Ma...
|
||||
2025-08-12 23:02:58,289 - INFO - Notification sent: [Crunch Hype] Top 10 AI Content Generator & Writer...
|
||||
2025-08-12 23:02:58,791 - INFO - Notification sent: [Crunch Hype] Beginner Guide to CJ Affiliate (Comm...
|
||||
2025-08-12 23:02:59,292 - INFO - Notification sent: [Crunch Hype] TOP 11 AI MARKETING TOOLS YOU SHOULD...
|
||||
2025-08-12 23:02:59,793 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions Abou...
|
||||
2025-08-12 23:03:00,295 - INFO - Notification sent: [Crunch Hype] What is Blockchain: Everything You N...
|
||||
2025-08-12 23:03:00,796 - INFO - Notification sent: [Crunch Hype] ProWritingAid VS Grammarly: Which Gr...
|
||||
2025-08-12 23:03:01,298 - INFO - Notification sent: [Crunch Hype] Sellfy Review 2022: How Good Is This...
|
||||
2025-08-12 23:03:01,800 - INFO - Notification sent: [Crunch Hype] Ahrefs vs SEMrush: Which SEO Tool Sh...
|
||||
2025-08-12 23:03:02,302 - INFO - Notification sent: [Crunch Hype] Top 10 Best PLR(Private Label Rights...
|
||||
2025-08-12 23:03:02,804 - INFO - Notification sent: [Crunch Hype] Canva Review 2022: Details, Pricing ...
|
||||
2025-08-12 23:03:03,305 - INFO - Notification sent: [Crunch Hype] Top 7 Best Wordpress Plugin Of All T...
|
||||
2025-08-12 23:03:03,807 - INFO - Notification sent: [Crunch Hype] Ginger VS Grammarly: Which Grammar C...
|
||||
2025-08-12 23:03:04,308 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions Abou...
|
||||
2025-08-12 23:03:04,809 - INFO - Notification sent: [Crunch Hype] 10 Best Chrome Extensions That Are P...
|
||||
2025-08-12 23:03:05,310 - INFO - Notification sent: [Crunch Hype] Most Frequently Asked Questions Abou...
|
||||
2025-08-12 23:03:05,812 - INFO - Notification sent: [Crunch Hype] 7 Free Websites Every Content Creato...
|
||||
2025-08-12 23:03:06,314 - INFO - Notification sent: [Crunch Hype] Top 9 Free AI Tools That Make Your L...
|
||||
2025-08-12 23:03:06,879 - INFO - Parsing feed: https://rss.cnn.com/rss/edition.rss
|
||||
2025-08-12 23:03:06,928 - WARNING - Feed parsing issues for https://rss.cnn.com/rss/edition.rss: <urlopen error [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1028)>
|
||||
2025-08-12 23:03:06,928 - INFO - Found 0 new items in https://rss.cnn.com/rss/edition.rss
|
||||
2025-08-12 23:03:06,928 - INFO - RSS notification check completed
|
||||
2025-08-12 23:04:21,177 - INFO - Shutting down...
|
||||
2025-08-12 23:04:21,387 - WARNING - Disconnected from MQTT broker
|
||||
2025-08-12 23:04:21,387 - INFO - Cleanup completed
|
||||
2025-08-12 23:14:06,934 - INFO - Starting continuous RSS monitoring (interval: 300s)
|
||||
2025-08-12 23:14:06,934 - INFO - Starting RSS notification check
|
||||
2025-08-12 23:14:06,935 - INFO - Connected to MQTT broker
|
||||
2025-08-12 23:14:07,473 - INFO - Parsing feed: https://news.google.com/rss/search?q=Federal+Reserve+when:7d&hl=en-US&gl=US&ceid=US:en
|
||||
2025-08-12 23:14:07,564 - INFO - Found 100 new items in https://news.google.com/rss/search?q=Federal+Reserve+when:7d&hl=en-US&gl=US&ceid=US:en
|
||||
2025-08-12 23:14:07,565 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump ta...
|
||||
2025-08-12 23:14:08,065 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump to...
|
||||
2025-08-12 23:14:08,565 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed Offi...
|
||||
2025-08-12 23:14:09,066 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] A top Fe...
|
||||
2025-08-12 23:14:09,566 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump ma...
|
||||
2025-08-12 23:14:10,066 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] The Fed ...
|
||||
2025-08-12 23:14:10,567 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump cr...
|
||||
2025-08-12 23:14:11,067 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump Ta...
|
||||
2025-08-12 23:14:11,567 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump no...
|
||||
2025-08-12 23:14:12,068 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump’s ...
|
||||
2025-08-12 23:14:12,568 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump pi...
|
||||
2025-08-12 23:14:13,068 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Meet Ste...
|
||||
2025-08-12 23:14:13,569 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Donald T...
|
||||
2025-08-12 23:14:14,069 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump Na...
|
||||
2025-08-12 23:14:14,569 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump th...
|
||||
2025-08-12 23:14:15,070 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] ‘A Loyal...
|
||||
2025-08-12 23:14:15,570 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump to...
|
||||
2025-08-12 23:14:16,070 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump se...
|
||||
2025-08-12 23:14:16,571 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed's Bo...
|
||||
2025-08-12 23:14:17,071 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] J.P.Morg...
|
||||
2025-08-12 23:14:17,571 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump fa...
|
||||
2025-08-12 23:14:18,072 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump is...
|
||||
2025-08-12 23:14:18,572 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump ma...
|
||||
2025-08-12 23:14:19,073 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Who Does...
|
||||
2025-08-12 23:14:19,573 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Why the ...
|
||||
2025-08-12 23:14:20,073 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] US judge...
|
||||
2025-08-12 23:14:20,574 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Judge va...
|
||||
2025-08-12 23:14:21,074 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Inflatio...
|
||||
2025-08-12 23:14:21,574 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed's Co...
|
||||
2025-08-12 23:14:22,075 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Wilkinso...
|
||||
2025-08-12 23:14:22,575 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] US Fed's...
|
||||
2025-08-12 23:14:23,075 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump Wi...
|
||||
2025-08-12 23:14:23,576 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Here Are...
|
||||
2025-08-12 23:14:24,076 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump of...
|
||||
2025-08-12 23:14:24,577 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Abolish ...
|
||||
2025-08-12 23:14:25,077 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Bessent ...
|
||||
2025-08-12 23:14:25,577 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump is...
|
||||
2025-08-12 23:14:26,078 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] 3 things...
|
||||
2025-08-12 23:14:26,578 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump Ap...
|
||||
2025-08-12 23:14:27,078 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump an...
|
||||
2025-08-12 23:14:27,579 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Opinion ...
|
||||
2025-08-12 23:14:28,079 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump is...
|
||||
2025-08-12 23:14:28,580 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed's po...
|
||||
2025-08-12 23:14:29,080 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump th...
|
||||
2025-08-12 23:14:29,580 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed will...
|
||||
2025-08-12 23:14:30,081 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump ri...
|
||||
2025-08-12 23:14:30,581 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Bets on ...
|
||||
2025-08-12 23:14:31,081 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] The Fede...
|
||||
2025-08-12 23:14:31,582 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Why Trum...
|
||||
2025-08-12 23:14:32,082 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed gove...
|
||||
2025-08-12 23:14:32,582 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump th...
|
||||
2025-08-12 23:14:33,083 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump no...
|
||||
2025-08-12 23:14:33,583 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed offi...
|
||||
2025-08-12 23:14:34,084 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump wi...
|
||||
2025-08-12 23:14:34,584 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed's Da...
|
||||
2025-08-12 23:14:35,084 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Who is S...
|
||||
2025-08-12 23:14:35,585 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] The Impo...
|
||||
2025-08-12 23:14:36,085 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Is reval...
|
||||
2025-08-12 23:14:36,586 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] A top Fe...
|
||||
2025-08-12 23:14:36,655 - INFO - Shutting down...
|
||||
2025-08-12 23:14:37,588 - WARNING - Disconnected from MQTT broker
|
||||
2025-08-12 23:14:37,588 - INFO - Cleanup completed
|
||||
2025-08-12 23:16:44,760 - INFO - Starting continuous RSS monitoring (interval: 300s)
|
||||
2025-08-12 23:16:44,760 - INFO - Starting RSS notification check
|
||||
2025-08-12 23:16:44,761 - INFO - Connected to MQTT broker
|
||||
2025-08-12 23:16:45,384 - INFO - Parsing feed: https://news.google.com/rss/search?q=Federal+Reserve+when:7d&hl=en-US&gl=US&ceid=US:en
|
||||
2025-08-12 23:16:45,497 - INFO - Found 5 new items in https://news.google.com/rss/search?q=Federal+Reserve+when:7d&hl=en-US&gl=US&ceid=US:en (checked top 5)
|
||||
2025-08-12 23:16:45,497 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump ta...
|
||||
2025-08-12 23:16:45,997 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump to...
|
||||
2025-08-12 23:16:46,498 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Fed Offi...
|
||||
2025-08-12 23:16:46,998 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] A top Fe...
|
||||
2025-08-12 23:16:47,498 - INFO - Notification sent: ["Federal Reserve when:7d" - Google News] Trump ma...
|
||||
2025-08-12 23:16:48,456 - INFO - Parsing feed: https://news.google.com/rss/search?q=business+news&hl=en-US&gl=US&ceid=US:en
|
||||
2025-08-12 23:16:48,550 - INFO - Found 5 new items in https://news.google.com/rss/search?q=business+news&hl=en-US&gl=US&ceid=US:en (checked top 5)
|
||||
2025-08-12 23:16:48,550 - INFO - Notification sent: ["business news" - Google News] Rare earths: Austr...
|
||||
2025-08-12 23:16:49,050 - INFO - Notification sent: ["business news" - Google News] Trump’s pick to le...
|
||||
2025-08-12 23:16:49,551 - INFO - Notification sent: ["business news" - Google News] Spirit Airlines st...
|
||||
2025-08-12 23:16:50,051 - INFO - Notification sent: ["business news" - Google News] Musk threatens 'im...
|
||||
2025-08-12 23:16:50,551 - INFO - Notification sent: ["business news" - Google News] Cava stock plummet...
|
||||
2025-08-12 23:16:51,326 - INFO - Parsing feed: https://www.federalreserve.gov/feeds/press_orders.xml
|
||||
2025-08-12 23:16:51,436 - INFO - Found 5 new items in https://www.federalreserve.gov/feeds/press_orders.xml (checked top 5)
|
||||
2025-08-12 23:16:51,436 - INFO - Notification sent: [FRB: Press Release - Banking Applications] Federa...
|
||||
2025-08-12 23:16:51,936 - INFO - Notification sent: [FRB: Press Release - Banking Applications] Federa...
|
||||
2025-08-12 23:16:52,436 - INFO - Notification sent: [FRB: Press Release - Banking Applications] Federa...
|
||||
2025-08-12 23:16:52,936 - INFO - Notification sent: [FRB: Press Release - Banking Applications] Federa...
|
||||
2025-08-12 23:16:53,437 - INFO - Notification sent: [FRB: Press Release - Banking Applications] Federa...
|
||||
2025-08-12 23:16:54,086 - INFO - Parsing feed: https://www.federalreserve.gov/feeds/s_t_powell.xml
|
||||
2025-08-12 23:16:54,209 - WARNING - Feed parsing issues for https://www.federalreserve.gov/feeds/s_t_powell.xml: document declared as us-ascii, but parsed as utf-8
|
||||
2025-08-12 23:16:54,209 - INFO - Found 5 new items in https://www.federalreserve.gov/feeds/s_t_powell.xml (checked top 5)
|
||||
2025-08-12 23:16:54,209 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:16:54,709 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:16:55,209 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:16:55,709 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:16:56,210 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:16:56,886 - INFO - Parsing feed: https://www.federalreserve.gov/feeds/g19.xml
|
||||
2025-08-12 23:16:56,984 - WARNING - Feed parsing issues for https://www.federalreserve.gov/feeds/g19.xml: document declared as us-ascii, but parsed as utf-8
|
||||
2025-08-12 23:16:56,984 - INFO - Found 5 new items in https://www.federalreserve.gov/feeds/g19.xml (checked top 5)
|
||||
2025-08-12 23:16:56,984 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Data Downlo...
|
||||
2025-08-12 23:16:57,485 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Upcoming ch...
|
||||
2025-08-12 23:16:57,985 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Federal Res...
|
||||
2025-08-12 23:16:58,485 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Data Downlo...
|
||||
2025-08-12 23:16:58,986 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Upcoming ch...
|
||||
2025-08-12 23:16:59,702 - INFO - Parsing feed: https://www.federalreserve.gov/feeds/prates.xml
|
||||
2025-08-12 23:16:59,806 - WARNING - Feed parsing issues for https://www.federalreserve.gov/feeds/prates.xml: document declared as us-ascii, but parsed as utf-8
|
||||
2025-08-12 23:16:59,806 - INFO - Found 5 new items in https://www.federalreserve.gov/feeds/prates.xml (checked top 5)
|
||||
2025-08-12 23:16:59,806 - INFO - Notification sent: [The Fed: DDP: Policy Rates] Data Download Program...
|
||||
2025-08-12 23:17:00,307 - INFO - Notification sent: [The Fed: DDP: Policy Rates] Federal Reserve Board...
|
||||
2025-08-12 23:17:00,807 - INFO - Notification sent: [The Fed: DDP: Policy Rates] Data Download Program...
|
||||
2025-08-12 23:17:01,307 - INFO - Notification sent: [The Fed: DDP: Policy Rates] Federal Reserve Board...
|
||||
2025-08-12 23:17:01,807 - INFO - Notification sent: [The Fed: DDP: Policy Rates] Federal Reserve Board...
|
||||
2025-08-12 23:17:02,639 - INFO - Parsing feed: https://www.bls.gov/feed/cpi.rss
|
||||
2025-08-12 23:17:02,709 - WARNING - Feed parsing issues for https://www.bls.gov/feed/cpi.rss: <unknown>:19:27: not well-formed (invalid token)
|
||||
2025-08-12 23:17:02,709 - INFO - Found 0 new items in https://www.bls.gov/feed/cpi.rss (checked top 5)
|
||||
2025-08-12 23:17:02,772 - INFO - Parsing feed: https://www.bls.gov/feed/nlsoy.rss
|
||||
2025-08-12 23:17:02,844 - WARNING - Feed parsing issues for https://www.bls.gov/feed/nlsoy.rss: <unknown>:19:27: not well-formed (invalid token)
|
||||
2025-08-12 23:17:02,844 - INFO - Found 0 new items in https://www.bls.gov/feed/nlsoy.rss (checked top 5)
|
||||
2025-08-12 23:17:02,844 - INFO - RSS notification check completed
|
||||
2025-08-12 23:17:21,113 - INFO - Shutting down...
|
||||
2025-08-12 23:17:21,828 - WARNING - Disconnected from MQTT broker
|
||||
2025-08-12 23:17:21,828 - INFO - Cleanup completed
|
||||
2025-08-12 23:19:59,901 - INFO - Starting continuous RSS monitoring (interval: 300s)
|
||||
2025-08-12 23:19:59,901 - INFO - Starting RSS notification check
|
||||
2025-08-12 23:19:59,901 - INFO - Connected to MQTT broker
|
||||
2025-08-12 23:20:00,421 - INFO - Parsing feed: https://news.google.com/rss/search?q=business+news&hl=en-US&gl=US&ceid=US:en
|
||||
2025-08-12 23:20:00,520 - INFO - Found 5 new items in https://news.google.com/rss/search?q=business+news&hl=en-US&gl=US&ceid=US:en (checked top 5)
|
||||
2025-08-12 23:20:00,520 - INFO - Notification sent: ["business news" - Google News] Rare earths: Austr...
|
||||
2025-08-12 23:20:01,020 - INFO - Notification sent: ["business news" - Google News] Trump’s pick to le...
|
||||
2025-08-12 23:20:01,521 - INFO - Notification sent: ["business news" - Google News] Spirit Airlines st...
|
||||
2025-08-12 23:20:02,021 - INFO - Notification sent: ["business news" - Google News] Musk threatens 'im...
|
||||
2025-08-12 23:20:02,521 - INFO - Notification sent: ["business news" - Google News] Cava stock plummet...
|
||||
2025-08-12 23:20:03,191 - INFO - Parsing feed: https://www.federalreserve.gov/feeds/s_t_powell.xml
|
||||
2025-08-12 23:20:03,320 - WARNING - Feed parsing issues for https://www.federalreserve.gov/feeds/s_t_powell.xml: document declared as us-ascii, but parsed as utf-8
|
||||
2025-08-12 23:20:03,320 - INFO - Found 5 new items in https://www.federalreserve.gov/feeds/s_t_powell.xml (checked top 5)
|
||||
2025-08-12 23:20:03,320 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:20:03,820 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:20:04,321 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:20:04,821 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:20:05,321 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:20:05,989 - INFO - Parsing feed: https://www.federalreserve.gov/feeds/g19.xml
|
||||
2025-08-12 23:20:06,088 - WARNING - Feed parsing issues for https://www.federalreserve.gov/feeds/g19.xml: document declared as us-ascii, but parsed as utf-8
|
||||
2025-08-12 23:20:06,088 - INFO - Found 5 new items in https://www.federalreserve.gov/feeds/g19.xml (checked top 5)
|
||||
2025-08-12 23:20:06,088 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Data Downlo...
|
||||
2025-08-12 23:20:06,588 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Upcoming ch...
|
||||
2025-08-12 23:20:07,089 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Federal Res...
|
||||
2025-08-12 23:20:07,589 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Data Downlo...
|
||||
2025-08-12 23:20:08,089 - INFO - Notification sent: [The Fed: DDP: Consumer Credit (G.19)] Upcoming ch...
|
||||
2025-08-12 23:20:08,688 - INFO - Parsing feed: https://www.bls.gov/feed/cpi.rss
|
||||
2025-08-12 23:20:08,749 - WARNING - Feed parsing issues for https://www.bls.gov/feed/cpi.rss: <unknown>:19:27: not well-formed (invalid token)
|
||||
2025-08-12 23:20:08,749 - INFO - Found 0 new items in https://www.bls.gov/feed/cpi.rss (checked top 5)
|
||||
2025-08-12 23:20:08,813 - INFO - Parsing feed: https://www.bls.gov/feed/nlsoy.rss
|
||||
2025-08-12 23:20:08,864 - WARNING - Feed parsing issues for https://www.bls.gov/feed/nlsoy.rss: <unknown>:19:27: not well-formed (invalid token)
|
||||
2025-08-12 23:20:08,864 - INFO - Found 0 new items in https://www.bls.gov/feed/nlsoy.rss (checked top 5)
|
||||
2025-08-12 23:20:08,864 - INFO - RSS notification check completed
|
||||
2025-08-12 23:22:52,237 - INFO - Shutting down...
|
||||
2025-08-12 23:22:52,246 - WARNING - Disconnected from MQTT broker
|
||||
2025-08-12 23:22:52,246 - INFO - Cleanup completed
|
||||
2025-08-12 23:23:10,184 - INFO - Starting continuous RSS monitoring (interval: 300s)
|
||||
2025-08-12 23:23:10,184 - INFO - Starting RSS notification check
|
||||
2025-08-12 23:23:10,184 - INFO - Connected to MQTT broker
|
||||
2025-08-12 23:23:10,823 - INFO - Parsing feed: https://news.google.com/rss/search?q=business+news&hl=en-US&gl=US&ceid=US:en
|
||||
2025-08-12 23:23:10,914 - INFO - Found 5 new items in https://news.google.com/rss/search?q=business+news&hl=en-US&gl=US&ceid=US:en (checked top 5)
|
||||
2025-08-12 23:23:10,914 - INFO - Notification sent: ["business news" - Google News] Rare earths: Austr...
|
||||
2025-08-12 23:23:11,415 - INFO - Notification sent: ["business news" - Google News] Trump’s pick to le...
|
||||
2025-08-12 23:23:11,915 - INFO - Notification sent: ["business news" - Google News] Spirit Airlines st...
|
||||
2025-08-12 23:23:12,415 - INFO - Notification sent: ["business news" - Google News] Musk threatens 'im...
|
||||
2025-08-12 23:23:12,916 - INFO - Notification sent: ["business news" - Google News] Cava stock plummet...
|
||||
2025-08-12 23:23:13,646 - INFO - Parsing feed: https://www.federalreserve.gov/feeds/s_t_powell.xml
|
||||
2025-08-12 23:23:13,742 - WARNING - Feed parsing issues for https://www.federalreserve.gov/feeds/s_t_powell.xml: document declared as us-ascii, but parsed as utf-8
|
||||
2025-08-12 23:23:13,742 - INFO - Found 5 new items in https://www.federalreserve.gov/feeds/s_t_powell.xml (checked top 5)
|
||||
2025-08-12 23:23:13,742 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:23:14,242 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:23:14,743 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:23:15,243 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:23:15,744 - INFO - Notification sent: [FRB: Chair Powell: Speeches and Testimony] Powell...
|
||||
2025-08-12 23:23:16,551 - INFO - Parsing feed: https://www.bls.gov/feed/cpi.rss
|
||||
2025-08-12 23:23:16,615 - WARNING - Feed parsing issues for https://www.bls.gov/feed/cpi.rss: <unknown>:19:27: not well-formed (invalid token)
|
||||
2025-08-12 23:23:16,615 - INFO - Found 0 new items in https://www.bls.gov/feed/cpi.rss (checked top 5)
|
||||
2025-08-12 23:23:16,673 - INFO - Parsing feed: https://www.bls.gov/feed/nlsoy.rss
|
||||
2025-08-12 23:23:16,742 - WARNING - Feed parsing issues for https://www.bls.gov/feed/nlsoy.rss: <unknown>:19:27: not well-formed (invalid token)
|
||||
2025-08-12 23:23:16,742 - INFO - Found 0 new items in https://www.bls.gov/feed/nlsoy.rss (checked top 5)
|
||||
2025-08-12 23:23:16,742 - INFO - RSS notification check completed
|
||||
2025-08-12 23:23:48,992 - INFO - Shutting down...
|
||||
2025-08-12 23:23:49,779 - WARNING - Disconnected from MQTT broker
|
||||
2025-08-12 23:23:49,779 - INFO - Cleanup completed
|
||||
Reference in New Issue
Block a user