4.9 KiB
FastDL High-Resolution Download Mode
Overview
The high-resolution download mode solves the problem where FastDL profile downloads return low-resolution images (640x640). By searching individual Instagram post URLs instead of downloading from the profile grid, we can get the original high-resolution images.
How It Works
The Workflow:
- Load Profile → Search username on FastDL to get the profile grid
- Extract Media IDs → Extract Instagram media IDs from FastDL's proxied URLs
- Convert to Instagram URLs → Convert media IDs to Instagram shortcodes
- Search Each URL → Search individual Instagram URLs on FastDL
- Download High-Res → Get high-resolution versions instead of thumbnails
Technical Details:
FastDL URLs contain Instagram media IDs in this format:
561378837_18538674661006538_479694548187839800_n.jpg
^^^^^^^^^^^^^^^^^^^^
This is the media ID
We convert the media ID 18538674661006538 to Instagram shortcode BB3NONxpzK using Instagram's custom base64 alphabet, then search for https://www.instagram.com/p/BB3NONxpzK/ on FastDL.
Usage
Python API:
from fastdl_module import FastDLDownloader
# Create downloader with high_res=True
downloader = FastDLDownloader(
headless=True,
use_database=True,
high_res=True # Enable high-resolution mode
)
# Download high-res posts
count = downloader.download(
username="username",
content_type="posts",
output_dir="downloads/highres",
max_downloads=10
)
print(f"Downloaded {count} high-resolution items")
Command Line:
# Using media-downloader.py with --high-res flag
./media-downloader.py --platform fastdl --username evalongoria --posts --high-res --limit 10
Important Limitations
⚠️ Old Posts May Fail
FastDL may not be able to fetch very old Instagram posts (e.g., from 2016). When this happens, you'll see:
FastDL encountered an error fetching this post (may be deleted/unavailable)
The downloader will skip these posts and continue with the next one.
⏱️ Slower Download Speed
High-res mode is significantly slower than regular profile downloads because:
- Each post requires a separate search on FastDL (~10-15 seconds per post)
- Regular mode downloads all items in batch from one page
- High-res mode: ~10-15 seconds per post
- Regular mode: ~2-5 seconds per post
Example timing:
- 10 posts in regular mode: ~30 seconds
- 10 posts in high-res mode: ~2-3 minutes
📊 When to Use Each Mode
Use High-Res Mode (high_res=True) when:
- Image quality is critical
- Downloading recent posts (last few years)
- Willing to wait longer for better quality
- Need original resolution for professional use
Use Regular Mode (high_res=False, default) when:
- Speed is more important than max quality
- Downloading many posts (50+)
- 640x640 resolution is acceptable
- Downloading stories/highlights (already optimized)
Resolution Comparison
| Mode | Resolution | Speed | Best For |
|---|---|---|---|
| Regular | 640x640px (thumbnail) | Fast | Bulk downloads, previews |
| High-Res | Up to 1440x1800px (original) | Slow | Professional use, archiving |
Testing
Test the high-res mode with a recent Instagram post:
#!/usr/bin/env python3
import os
os.environ['PLAYWRIGHT_BROWSERS_PATH'] = '/opt/media-downloader/.playwright'
import sys
sys.path.insert(0, '/opt/media-downloader/modules')
from fastdl_module import FastDLDownloader
# Test with a recent post
downloader = FastDLDownloader(headless=True, high_res=True, use_database=False)
count = downloader.download(
username="evalongoria", # Or any public profile
content_type="posts",
output_dir="test_highres",
max_downloads=2 # Test with just 2 posts
)
print(f"Downloaded {count} items")
Troubleshooting
No download links found
- Post may be too old or deleted
- Instagram may have changed their URL structure
- Check if the post is accessible on Instagram
"Something went wrong" error
- FastDL couldn't fetch the post from Instagram
- Common with old posts (2+ years)
- Downloader will skip and continue with next post
Timeout errors
- Increase timeout in settings
- Check internet connection
- Try with fewer posts first
Implementation Files
-
fastdl_module.py - Main module with high-res implementation
_media_id_to_shortcode()- Converts media IDs to shortcodes_extract_media_ids_from_fastdl_url()- Extracts IDs from URLs_search_instagram_url_on_fastdl()- Searches individual URLs_download_content_highres()- High-res download workflow
-
instagram_id_converter.py - Standalone converter utility
Future Improvements
Potential optimizations:
- Parallel URL searches (currently sequential)
- Caching of Instagram URL → download link mappings
- Batch processing for better performance
- Automatic fallback to regular mode for old posts
Generated on 2025-10-12