feat: add DuckDuckGo and Google News backends to alert plugin
DuckDuckGo (dg) searches via HTML lite endpoint with HTMLParser, resolves DDG redirect URLs to actual targets. Google News (gn) queries public RSS feed, parses RFC 822 dates. Both routed through SOCKS5 proxy via _urlopen. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -345,11 +345,12 @@ No API credentials needed (uses public GQL endpoint).
|
||||
!alert history <name> [n] # Show recent results (default 5)
|
||||
```
|
||||
|
||||
Searches keywords across YouTube (yt), Twitch (tw), SearXNG (sx), Reddit (rd),
|
||||
and Mastodon/Fediverse (ft) simultaneously. Names: lowercase alphanumeric + hyphens,
|
||||
1-20 chars. Keywords: 1-100 chars. Max 20 alerts/channel. Polls every 5min.
|
||||
Format: `[name/yt] Title -- URL`, `[name/rd] Title -- URL`, etc.
|
||||
No API credentials needed. Persists across restarts. History stored in `data/alert_history.db`.
|
||||
Searches keywords across 7 backends: YouTube (yt), Twitch (tw), SearXNG (sx),
|
||||
Reddit (rd), Mastodon (ft), DuckDuckGo (dg), Google News (gn). Names: lowercase
|
||||
alphanumeric + hyphens, 1-20 chars. Keywords: 1-100 chars. Max 20 alerts/channel.
|
||||
Polls every 5min. Format: `[name/yt] Title -- URL`, etc. No API credentials needed.
|
||||
DuckDuckGo and Google News route through SOCKS5 proxy. Persists across restarts.
|
||||
History stored in `data/alert_history.db`.
|
||||
|
||||
## SearX
|
||||
|
||||
|
||||
@@ -687,13 +687,15 @@ Platforms searched:
|
||||
- **SearXNG** (`sx`) -- Local SearXNG instance, searches general/news/videos/social media categories filtered to last 24h (no auth required)
|
||||
- **Reddit** (`rd`) -- JSON search API, sorted by new, past week (no auth required)
|
||||
- **Mastodon** (`ft`) -- Public hashtag timeline across 4 instances (no auth required)
|
||||
- **DuckDuckGo** (`dg`) -- HTML lite search endpoint via SOCKS5 proxy (no auth required)
|
||||
- **Google News** (`gn`) -- Public RSS feed via SOCKS5 proxy (no auth required)
|
||||
|
||||
Polling and announcements:
|
||||
|
||||
- Alerts are polled every 5 minutes by default
|
||||
- On `add`, existing results are recorded without announcing (prevents flood)
|
||||
- New results announced as `[name/yt] Title -- URL`, `[name/tw] Title -- URL`,
|
||||
`[name/sx] Title -- URL`, `[name/rd] Title -- URL`, or `[name/ft] Title -- URL`
|
||||
- New results announced as `[name/<tag>] Title -- URL` where tag is `yt`, `tw`,
|
||||
`sx`, `rd`, `ft`, `dg`, or `gn`
|
||||
- Titles are truncated to 80 characters
|
||||
- Each platform maintains its own seen list (capped at 200 per platform)
|
||||
- 5 consecutive errors doubles the poll interval (max 1 hour)
|
||||
|
||||
Reference in New Issue
Block a user