feat: add Xquik as X/Twitter search source
Add Xquik (xquik.com) as a new X/Twitter search source that uses a REST API with full engagement metrics (likes, retweets, replies, quotes, views, bookmarks). Uses stdlib urllib only -- no new dependencies. - scripts/lib/xquik.py: source module with search, parse, query expansion - tests/test_xquik.py: 32 unit tests covering all functions - env.py: XQUIK_API_KEY config and availability check - pipeline.py: source registration and retrieve dispatch - normalize.py: reuses _normalize_x (same item format as Bird) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -261,6 +261,7 @@ def get_config() -> dict[str, Any]:
|
||||
('SERPER_API_KEY', None),
|
||||
('OPENROUTER_API_KEY', None),
|
||||
('PARALLEL_API_KEY', None),
|
||||
('XQUIK_API_KEY', None),
|
||||
('FROM_BROWSER', None),
|
||||
('SETUP_COMPLETE', None),
|
||||
('INCLUDE_SOURCES', None),
|
||||
@@ -613,3 +614,17 @@ def is_pinterest_available(config: dict[str, Any]) -> bool:
|
||||
def get_pinterest_token(config: dict[str, Any]) -> str:
|
||||
"""Get Pinterest API token (same ScrapeCreators key as TikTok/Instagram)."""
|
||||
return config.get('SCRAPECREATORS_API_KEY') or ''
|
||||
|
||||
|
||||
# Xquik
|
||||
def is_xquik_available(config: dict[str, Any]) -> bool:
|
||||
"""Check if Xquik X search source is available.
|
||||
|
||||
Requires XQUIK_API_KEY (API key from xquik.com).
|
||||
"""
|
||||
return bool(config.get('XQUIK_API_KEY'))
|
||||
|
||||
|
||||
def get_xquik_token(config: dict[str, Any]) -> str:
|
||||
"""Get Xquik API key."""
|
||||
return config.get('XQUIK_API_KEY') or ''
|
||||
|
||||
Reference in New Issue
Block a user