-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
61 lines (48 loc) · 2.65 KB
/
Copy pathconfig.py
File metadata and controls
61 lines (48 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env python
from decouple import config
# NewsAPI Configuration
NEWS_API_KEY = config('NEWS_API_KEY', default="")
TOP_HEADLINES = config('TOP_HEADLINES', default="https://newsapi.org/v2/top-headlines")
EVERYTHING = config('EVERYTHING', default="https://newsapi.org/v2/everything")
PAGE_SIZE = config('PAGE_SIZE', default=100, cast=int)
# Filtering Configuration
EXCLUDE_DOMAINS = config('EXCLUDE_DOMAINS', default="")
EXCLUDE_URLS = config('EXCLUDE_URLS', default="goodbullhunting.com,queerty.com")
# RSS Feed Configuration
RSS_FEEDS = config('RSS_FEEDS', default="")
# Caching Configuration
CACHE_SESSION = config('CACHE_SESSION', default=True, cast=bool)
CACHE_HOURS = config('CACHE_HOURS', default=8, cast=int)
CACHE_TTL = CACHE_HOURS * 60 * 60 # Convert hours to seconds
TTL = config('CACHE_TTL', default=CACHE_TTL, cast=int)
# Archive configuration (see backlog task-011)
ARCHIVE_DIR = config('ARCHIVE_DIR', default="archive")
# Persistent exclusion list — git-committed CSV of URLs that should never be ingested.
# Reloaded into DuckDB on every ArticleDB open so exclusions survive ephemeral DB rebuilds.
EXCLUDE_URLS_CSV = config('EXCLUDE_URLS_CSV', default='exclude_urls.csv')
# Rate-limiting configuration (see backlog task-006.03)
RATE_LIMIT_REQUESTS = config('RATE_LIMIT_REQUESTS', default=100, cast=int)
RATE_LIMIT_INTERVAL_SEC = config('RATE_LIMIT_INTERVAL_SEC', default=3600, cast=int)
# Categories for news fetching
CATEGORIES = (
'business',
'general',
'health',
'science',
'technology',
)
# DJT filtering configuration
DJT_FILTER_ENABLED = config('DJT_FILTER_ENABLED', default=True, cast=bool)
DJT_FILTER_MIN_SCORE = config('DJT_FILTER_MIN_SCORE', default=1.0, cast=float)
# Sentiment analysis configuration (see docs/ai.md)
SENTIMENT_ENABLED = config('SENTIMENT_ENABLED', default=True, cast=bool)
SENTIMENT_MAX_SCORE = config('SENTIMENT_MAX_SCORE', default=0.0, cast=float)
# LLM judge configuration - any OpenAI-compatible chat completions endpoint (default: Fireworks)
LLM_API_KEY = config('LLM_API_KEY', default="")
LLM_BASE_URL = config('LLM_BASE_URL', default="https://api.fireworks.ai/inference/v1")
LLM_MODEL = config('LLM_MODEL', default="accounts/fireworks/models/gpt-oss-20b")
# Local LLM judge target (see docs/ai.md and cli.py) - defaults reuse the oMLX vars
# already used for local agentic coding (~/git/pi_config/docs/omlx-agentic-coding.md)
LOCAL_LLM_BASE_URL = config('LOCAL_LLM_BASE_URL', default=f"{config('OMLX_BASE_URL', default='http://127.0.0.1:8000')}/v1")
LOCAL_LLM_MODEL = config('LOCAL_LLM_MODEL', default="gpt-oss-20b-OptiQ-4bit")
LOCAL_LLM_API_KEY = config('LOCAL_LLM_API_KEY', default=config('OMLX_API_KEY', default=""))