62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
from dotenv import load_dotenv
|
|
import os
|
|
import time
|
|
|
|
load_dotenv()
|
|
|
|
def ensure_folder_exists(folder_path):
|
|
os.makedirs(folder_path, exist_ok=True)
|
|
|
|
ADR = os.getenv("SERVER_ADDRESS", "http://localhost")
|
|
FinalFolder = os.getenv("TICKER_FOLDER", "./TickerFiles/")
|
|
XmlRoute = ADR + os.getenv("XML_ROUTE", "./xml/rss/input.xml")
|
|
SLEEP_SECONDS = int(os.getenv("SLEEP_SECONDS", "30"))
|
|
|
|
|
|
ensure_folder_exists(FinalFolder)
|
|
|
|
def get_posts_details(rss=None):
|
|
if rss is not None:
|
|
import feedparser
|
|
blog_feed = feedparser.parse(rss)
|
|
posts = blog_feed.entries
|
|
post_list = []
|
|
for post in posts:
|
|
temp = {}
|
|
temp["title"] = getattr(post, "title", "")
|
|
post_list.append(temp)
|
|
return post_list
|
|
else:
|
|
return None
|
|
|
|
while True:
|
|
posts_details = get_posts_details(rss=XmlRoute)
|
|
try:
|
|
for i in os.listdir(FinalFolder):
|
|
try:
|
|
os.remove(os.path.join(FinalFolder, i))
|
|
except Exception as e:
|
|
print(f"No file to delete: {e}")
|
|
except Exception as e:
|
|
print(f"Error listing directory: {e}")
|
|
|
|
x = 0
|
|
print("---------------------------------------------------------------------")
|
|
incEr = 0
|
|
if posts_details:
|
|
for i, post in enumerate(posts_details):
|
|
title = post.get('title', '')
|
|
x += 1
|
|
print(f"{x-incEr}) {title}")
|
|
if not title:
|
|
incEr += 1
|
|
continue
|
|
filename = f"{i+1-incEr:02}.txt"
|
|
try:
|
|
with open(os.path.join(FinalFolder, filename), "w", encoding='utf-8') as o:
|
|
o.write(title)
|
|
except Exception as e:
|
|
print(f"Error writing file {filename}: {e}")
|
|
print("number of files: ", x - incEr)
|
|
|
|
time.sleep(SLEEP_SECONDS) |