hermes 初始配置
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
---
|
||||
name: high-quality-image-downloader
|
||||
description: Skill for downloading high-quality images from free stock photo websites with fallback strategies
|
||||
---
|
||||
|
||||
## Purpose
|
||||
Download high-resolution images from free stock photo websites (Pexels, Unsplash, etc.) with multiple fallback strategies when direct downloads fail.
|
||||
|
||||
## When to Use
|
||||
- User requests high-quality images for reference, learning, or documentation
|
||||
- Need to download multiple images from free stock photo sites
|
||||
- Direct download methods fail due to website restrictions
|
||||
|
||||
## Prerequisites
|
||||
- Internet connection
|
||||
- Access to free stock photo websites
|
||||
- Sufficient disk space for downloads
|
||||
|
||||
## Steps
|
||||
|
||||
### 1. Primary Download Strategy (Pexels)
|
||||
```bash
|
||||
# Navigate to temp directory
|
||||
cd /tmp
|
||||
|
||||
# Try downloading from Pexels (most reliable)
|
||||
curl -s "https://www.pexels.com/search/{search_query}/" \
|
||||
| grep -o 'https://images.pexels.com/photos/[^\"]*\.jpg\?auto=compress' \
|
||||
| head -{number_of_images} \
|
||||
| sed 's/\\?auto=compress//g' \
|
||||
| xargs -I {} curl -s -O {}
|
||||
```
|
||||
|
||||
### 2. Secondary Download Strategy (Unsplash)
|
||||
```bash
|
||||
# If Pexels fails, try Unsplash
|
||||
curl -s "https://unsplash.com/s/photos/{search_query}" \
|
||||
| grep -o 'https://images.unsplash.com/photo[^\"]*\.jpg' \
|
||||
| head -{number_of_images} \
|
||||
| xargs -I {} curl -s -O {}
|
||||
```
|
||||
|
||||
### 3. Tertiary Download Strategy (Google Images)
|
||||
```bash
|
||||
# As last resort, try Google Images (may be blocked)
|
||||
curl -s "https://www.google.com/search?q={search_query}&tbm=isch" \
|
||||
| grep -o 'https://[^\"]*\.jpg' \
|
||||
| head -{number_of_images} \
|
||||
| xargs -I {} curl -s -O {}
|
||||
|
||||
# Alternative: Use Bing Images
|
||||
curl -s "https://www.bing.com/images/search?q={search_query}" \
|
||||
| grep -o 'https://[^\"]*\.jpg' \
|
||||
| head -{number_of_images} \
|
||||
| xargs -I {} curl -s -O {}
|
||||
```
|
||||
|
||||
### 4. File Verification
|
||||
```bash
|
||||
# Verify downloaded files
|
||||
ls -la /tmp/*.jpg | head -{number_of_images}
|
||||
file /tmp/*.jpg | head -{number_of_images}
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
## Error Handling
|
||||
|
||||
### Common Issues and Solutions:
|
||||
1. **Website blocking requests**: Use different User-Agent headers
|
||||
2. **Rate limiting**: Add delays between requests
|
||||
3. **Incomplete downloads**: Retry failed downloads
|
||||
4. **Wrong file formats**: Convert to standard formats
|
||||
5. **WeChat sending failures**: Provide local file paths instead
|
||||
6. **Large file sizes**: Use compressed formats (WebP) when possible
|
||||
|
||||
### Retry Logic:
|
||||
```bash
|
||||
# Retry failed downloads up to 3 times
|
||||
for attempt in {1..3}; do
|
||||
if [ -s "filename.jpg" ]; then
|
||||
echo "Download successful"
|
||||
break
|
||||
else
|
||||
echo "Download failed, retrying ($attempt/3)"
|
||||
sleep 2
|
||||
fi
|
||||
done
|
||||
|
||||
# Handle WeChat-specific failures
|
||||
grep -q "Weixin send failed" error.log && {
|
||||
echo "WeChat sending failed. Files saved to /tmp/"
|
||||
ls -la /tmp/*.jpg
|
||||
}
|
||||
```
|
||||
|
||||
### Retry Logic:
|
||||
```bash
|
||||
# Retry failed downloads up to 3 times
|
||||
for attempt in {1..3}; do
|
||||
if [ -s "filename.jpg" ]; then
|
||||
echo "Download successful"
|
||||
break
|
||||
else
|
||||
echo "Download failed, retrying ($attempt/3)"
|
||||
sleep 2
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
|
||||
## Verification Steps
|
||||
1. Check file sizes (should be > 1KB for valid images)
|
||||
2. Verify file format with `file` command
|
||||
3. Confirm expected number of files downloaded
|
||||
4. Test image displayability
|
||||
5. Verify WeChat sending capability (if applicable)
|
||||
6. Check file sizes for WeChat compatibility
|
||||
|
||||
|
||||
## WeChat Integration Notes
|
||||
- Direct file sending to WeChat may time out due to large file sizes
|
||||
- Use `MEDIA:/path/to/file` format for file sharing
|
||||
- Consider file size limits (typically 20MB for images)
|
||||
- If sending fails, provide file paths for user to access locally
|
||||
- WebP format may not display properly in all WeChat clients
|
||||
|
||||
|
||||
## Performance Tips
|
||||
- Use parallel downloads for faster processing
|
||||
- Cache successful search results
|
||||
- Clean up failed downloads automatically
|
||||
- Monitor disk space usage
|
||||
- Use WebP format for smaller file sizes when possible
|
||||
|
||||
## Example Usage
|
||||
```bash
|
||||
# Download 10 high-quality back exercise images
|
||||
cd /tmp
|
||||
curl -s "https://www.pexels.com/search/back%20exercises/" \
|
||||
| grep -o 'https://images.pexels.com/photos/[^\"]*\.jpg\?auto=compress' \
|
||||
| head -10 \
|
||||
| sed 's/\\?auto=compress//g' \
|
||||
| xargs -I {} curl -s -O {}
|
||||
|
||||
# Verify downloads
|
||||
ls -la /tmp/*.jpg | head -10
|
||||
file /tmp/*.jpg | head -10
|
||||
|
||||
# If WeChat sending fails, provide local paths
|
||||
echo "Files saved to /tmp/"
|
||||
ls -la /tmp/*.jpg
|
||||
```
|
||||
Reference in New Issue
Block a user