Files
newsgroups/10 list of newsgroups.py
2025-12-27 17:24:30 +01:00

59 lines
1.3 KiB
Python

from datetime import datetime, UTC
import nntplib
from db import get_conn
from dotenv import load_dotenv
import os
load_dotenv() # načte .env
EWEKA_USER = os.getenv("EWEKA_USER")
EWEKA_PASS = os.getenv("EWEKA_PASS")
PROVIDER = "eweka"
print("🔌 Connecting to PostgreSQL...")
conn = get_conn()
conn.autocommit = True
cur = conn.cursor()
print("🔌 Connecting to Eweka NNTP...")
with nntplib.NNTP_SSL(
host="news.eweka.nl",
port=563,
user=EWEKA_USER,
password=EWEKA_PASS,
readermode=True,
) as nntp:
print("📜 Fetching LIST ACTIVE...")
resp, groups = nntp.list()
print(f"📦 Received {len(groups)} groups")
rows = [
(
name,
int(first),
int(last),
flag,
PROVIDER,
datetime.now(UTC),
)
for name, last, first, flag in groups
]
cur.executemany(
"""
INSERT INTO newsgroups
(name, first_article, last_article, posting_flag, provider, fetched_at)
VALUES (%s, %s, %s, %s, %s, %s)
ON CONFLICT (name) DO UPDATE SET
first_article = EXCLUDED.first_article,
last_article = EXCLUDED.last_article,
posting_flag = EXCLUDED.posting_flag,
fetched_at = EXCLUDED.fetched_at
""",
rows,
)
print("🎉 DONE")