bulk commit changes!
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
## 1. Configuration Setup
|
||||
|
||||
- [x] 1.1 Add `ROYALTY_IMAGE_PROVIDERS` config variable to `backend/config.py` with default `pixabay,unsplash,pexels,wikimedia,picsum`
|
||||
- [x] 1.2 Add `PIXABAY_API_KEY` config variable to `backend/config.py`
|
||||
- [x] 1.3 Add `UNSPLASH_ACCESS_KEY` config variable to `backend/config.py`
|
||||
- [x] 1.4 Add `PEXELS_API_KEY` config variable to `backend/config.py`
|
||||
- [x] 1.5 Update `.env.example` with new provider API key placeholders
|
||||
|
||||
## 2. Query Refinement
|
||||
|
||||
- [x] 2.1 Create `extract_image_keywords(headline: str) -> str` function in `backend/news_service.py`
|
||||
- [x] 2.2 Implement stop word removal (articles, prepositions, common verbs)
|
||||
- [x] 2.3 Implement keyword limit (max 5 significant words)
|
||||
- [x] 2.4 Handle edge cases: empty headline, only stop words, special characters
|
||||
|
||||
## 3. Provider Implementations
|
||||
|
||||
- [x] 3.1 Create `fetch_pixabay_image(query: str) -> tuple[str | None, str | None]` function
|
||||
- [x] 3.2 Implement Pixabay API call with `webformatURL` extraction and `"Photo by {user} on Pixabay"` credit
|
||||
- [x] 3.3 Create `fetch_unsplash_image(query: str) -> tuple[str | None, str | None]` function
|
||||
- [x] 3.4 Implement Unsplash API call with `urls.regular` extraction and `"Photo by {user.name} on Unsplash"` credit
|
||||
- [x] 3.5 Create `fetch_pexels_image(query: str) -> tuple[str | None, str | None]` function
|
||||
- [x] 3.6 Implement Pexels API call with `src.large` extraction and `"Photo by {photographer} on Pexels"` credit
|
||||
|
||||
## 4. Provider Fallback Chain
|
||||
|
||||
- [x] 4.1 Create provider registry mapping provider names to fetch functions
|
||||
- [x] 4.2 Parse `ROYALTY_IMAGE_PROVIDERS` into ordered list at startup
|
||||
- [x] 4.3 Implement `get_enabled_providers()` that filters by configured API keys
|
||||
- [x] 4.4 Modify `fetch_royalty_free_image()` to iterate provider chain with fallback
|
||||
|
||||
## 5. Integration
|
||||
|
||||
- [x] 5.1 Wire refined query extraction into `fetch_royalty_free_image()` call
|
||||
- [x] 5.2 Preserve MCP endpoint as highest priority (existing behavior)
|
||||
- [x] 5.3 Preserve Wikimedia and Picsum as fallback providers in chain
|
||||
- [x] 5.4 Add error logging for each provider failure with provider name
|
||||
|
||||
## 6. Documentation
|
||||
|
||||
- [x] 6.1 Update README environment variables table with new provider keys
|
||||
- [x] 6.2 Add provider configuration section to README explaining priority chain
|
||||
- [x] 6.3 Document attribution requirements for each provider
|
||||
|
||||
## 7. Verification
|
||||
|
||||
- [x] 7.1 Test Pixabay provider with sample query (requires API key)
|
||||
- [x] 7.2 Test Unsplash provider with sample query (requires API key)
|
||||
- [x] 7.3 Test Pexels provider with sample query (requires API key)
|
||||
- [x] 7.4 Test fallback chain when primary provider fails
|
||||
- [x] 7.5 Test fallback to Picsum when no API keys configured
|
||||
- [x] 7.6 Verify attribution format matches provider requirements
|
||||
Reference in New Issue
Block a user