38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import xml.etree.ElementTree as ET
|
|
from datetime import datetime, timezone
|
|
|
|
def parse_forum(filepath, forum_name):
|
|
tree = ET.parse(filepath)
|
|
root = tree.getroot()
|
|
forum_title = root.get('title', forum_name)
|
|
print(f"\n=== {forum_title} (Recent threads) ===")
|
|
|
|
count = 0
|
|
for thread in root.findall('.//thread'):
|
|
subject = thread.get('subject', '')
|
|
author = thread.get('author', '')
|
|
articles = thread.get('numarticles', '0')
|
|
lastpost = thread.get('lastpostdate', '')
|
|
postdate = thread.get('postdate', '')
|
|
|
|
# Check if recent (June 2026)
|
|
try:
|
|
dt = datetime.strptime(lastpost[:25], '%a, %d %b %Y %H:%M:%S')
|
|
dt = dt.replace(tzinfo=timezone.utc)
|
|
now = datetime.now(timezone.utc)
|
|
days_ago = (now - dt).days
|
|
except:
|
|
days_ago = 999
|
|
|
|
if days_ago <= 30: # Last 30 days
|
|
count += 1
|
|
if count <= 10:
|
|
print(f" [{lastpost[:16]}] {subject} (by {author}, {articles} posts, {days_ago}d ago)")
|
|
|
|
for forum_file, name in [
|
|
("/home/hermes/workspace/bgg-scrape/forum25.xml", "Articles & Blogs"),
|
|
("/home/hermes/workspace/bgg-scrape/forum30.xml", "Videos & Podcasts"),
|
|
("/home/hermes/workspace/bgg-scrape/forum26.xml", "Board Game Design"),
|
|
]:
|
|
parse_forum(forum_file, name)
|