Initialize system repository: agents, infra, and configuration

This commit is contained in:
2026-04-19 04:51:17 +00:00
parent b861f385e9
commit 0cb48b94e2
23 changed files with 1960 additions and 39 deletions

54
src/clients/rss.py Normal file
View File

@@ -0,0 +1,54 @@
import httpx
import feedparser
from typing import List, Dict, Any
import logging
logger = logging.getLogger("rss-client")
class RSSClient:
RSS_URL = "https://www.eveonline.com/rss/patch-notes"
def __init__(self, user_agent: str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"):
self.client = httpx.AsyncClient(
headers={"User-Agent": user_agent},
follow_redirects=True,
timeout=30.0
)
async def close(self):
await self.client.aclose()
async def get_latest_patch_notes(self) -> List[Dict[str, Any]]:
"""Fetch and parse the latest patch notes."""
try:
response = await self.client.get(self.RSS_URL)
response.raise_for_status()
feed = feedparser.parse(response.text)
entries = []
for entry in feed.entries:
entries.append({
"title": entry.title,
"link": entry.link,
"published": entry.published if hasattr(entry, "published") else None,
"summary": entry.description if hasattr(entry, "summary") else entry.get("description", "")
})
return entries
except Exception as e:
logger.error(f"RSS Fetch Failed: {str(e)}")
return []
if __name__ == "__main__":
import asyncio
async def test():
rss = RSSClient()
notes = await rss.get_latest_patch_notes()
print(f"Found {len(notes)} patch note entries.")
if notes:
print(f"Latest: {notes[0]['title']} ({notes[0]['link']})")
await rss.close()
asyncio.run(test())