56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
FreshRSS News Fetcher - Uses Google Reader API
|
|
"""
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
import urllib.request
|
|
import urllib.error
|
|
|
|
CONFIG_FILE = Path.home() / ".config/clawdbot/miniflux-news.json"
|
|
|
|
def get_credentials():
|
|
"""Load credentials from config"""
|
|
if not CONFIG_FILE.exists():
|
|
print("Error: Config file not found", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
with open(CONFIG_FILE) as f:
|
|
return json.load(f)
|
|
|
|
def fetch_freshrss():
|
|
"""Fetch unread items from FreshRSS"""
|
|
creds = get_credentials()
|
|
url = creds['url']
|
|
password = creds['token']
|
|
|
|
# FreshRSS Google Reader API endpoints
|
|
auth_url = f"{url}?Email=admin&Passwd={password}"
|
|
|
|
try:
|
|
# Authenticate
|
|
req = urllib.request.Request(auth_url, method='POST')
|
|
req.add_header('Content-Type', 'application/x-www-form-urlencoded')
|
|
|
|
with urllib.request.urlopen(req, timeout=30) as response:
|
|
auth_response = response.read().decode('utf-8')
|
|
print("Auth response:", auth_response[:200], file=sys.stderr)
|
|
|
|
print("FreshRSS connection successful!", file=sys.stderr)
|
|
|
|
# TODO: Parse auth token and fetch actual entries
|
|
# This needs proper Google Reader API implementation
|
|
print("Note: Full FreshRSS integration requires Google Reader API implementation")
|
|
|
|
except urllib.error.HTTPError as e:
|
|
print(f"HTTP Error {e.code}: {e.reason}", file=sys.stderr)
|
|
print("FreshRSS API access may need different authentication", file=sys.stderr)
|
|
return []
|
|
except Exception as e:
|
|
print(f"Error: {e}", file=sys.stderr)
|
|
return []
|
|
|
|
if __name__ == '__main__':
|
|
fetch_freshrss()
|