A modern, elegant PHP library for downloading Instagram reels with ease.
- π― Download videos from Instagram reels
- πΌοΈ Get reel thumbnails
- π Simple and intuitive API
- π Automatic fallback mechanisms
- π‘οΈ Comprehensive error handling
- π Smart reel URL validation
Install via Composer:
composer require reelflow/reelflow-php
use Code3\ReelFlow\ReelFlow;
use Code3\ReelFlow\InstagramException;
// Create an instance
$downloader = new ReelFlow();
try {
// Get reel information
$video = $downloader->getVideoInfo('https://www.instagram.com/reel/xyz123/');
// Access reel details
echo $video->getVideoUrl(); // Direct video URL
echo $video->getThumbnailUrl(); // Thumbnail URL
echo $video->getWidth(); // Video width
echo $video->getHeight(); // Video height
echo $video->getUsername(); // Creator's username
echo $video->getDescription(); // Reel description
} catch (InstagramException $e) {
echo "Error {$e->getStatusCode()}: {$e->getMessage()}";
}
use Code3\ReelFlow\ReelflowFacade;
// Use the static facade method
$video = ReelflowFacade::getVideoInfo('https://www.instagram.com/reel/xyz123/');
Retrieves video information from an Instagram reel URL.
- Parameters:
$url
(string): The Instagram reel URL
- Returns: VideoInfo object
- Throws: InstagramException
getVideoUrl(): string
- Get the direct video URLgetThumbnailUrl(): string
- Get thumbnail image URLgetWidth(): int
- Get video widthgetHeight(): int
- Get video heightgetUsername(): string
- Get the username of the reel creatorgetDescription(): string
- Get the reel descriptiontoArray(): array
- Get all info as array
$video = $downloader->getVideoInfo($url);
$videoData = $video->toArray();
// Access data from array
echo $videoData['videoUrl']; // Direct video URL
echo $videoData['thumbnailUrl']; // Thumbnail URL
echo $videoData['width']; // Video width
echo $videoData['height']; // Video height
echo $videoData['username']; // Creator's username
echo $videoData['description']; // Reel description
Extends PHP's built-in Exception class with additional status code information.
getStatusCode(): int
- Get HTTP status codegetMessage(): string
- Get error message
// Regular reel URL
$url1 = 'https://www.instagram.com/reel/xyz123/';
// Short reel URL
$url2 = 'https://www.instagram.com/reels/xyz123/';
// URL with parameters
$url3 = 'https://www.instagram.com/reel/xyz123/?utm_source=ig_web_copy_link';
try {
$video = $downloader->getVideoInfo($url);
if ($video) {
// Process reel video
$videoUrl = $video->getVideoUrl();
// Download or stream video
} else {
echo "No reel information found";
}
} catch (InstagramException $e) {
switch ($e->getStatusCode()) {
case 400:
echo "Invalid reel URL format";
break;
case 404:
echo "Reel not found";
break;
case 500:
// Handle various 500 error cases
if (strpos($e->getMessage(), 'Failed to parse server response') !== false) {
echo "Error: Instagram API response was malformed";
} elseif (strpos($e->getMessage(), 'Failed to connect to Instagram server') !== false) {
echo "Error: Could not establish connection with Instagram";
} elseif (strpos($e->getMessage(), 'Instagram server error') !== false) {
echo "Error: Instagram server is experiencing issues";
} elseif (strpos($e->getMessage(), 'Failed to extract video dimensions') !== false) {
echo "Error: Could not retrieve video dimensions";
} else {
echo "Internal server error: " . $e->getMessage();
}
break;
default:
echo "Error: " . $e->getMessage();
}
}
- PHP 7.4 or higher
- Composer
- GuzzleHttp Client
- Symfony DomCrawler
- GitHub Issues: Open an issue
- Email: h3dev.pira@gmail.com
- Telegram: @h3dev
MIT Β© Hossein Pira
Made with β€οΈ by Hossein Pira