ayesh / instagram-download
Instagram image and video downloader with URL validation and cURL integration.
This package's canonical repository appears to be gone and the package has been frozen as a result.
Installs: 1 611
Dependents: 0
Suggesters: 0
Security: 0
Stars: 177
Watchers: 17
Forks: 80
Open Issues: 7
Requires
- php: ^7.4
- ext-curl: *
Requires (Dev)
- phpstan/phpstan: ^0.12.18
- phpunit/phpunit: ^9.0.2
README
Instagram Photo and video download helper library.
New: Checkout TikTokOff - TikTok video online downloader (no watermarks)
Update on May 22, 2020: Due to Instagram no longer allowing anonymous users to view photos/videos, this library is currently not working. A new version 7 is in the works, but there is no ETA yet. Only IGTV videos are working now
Old and unsupported versions
Old and minimally supported versions
I wrote this class mainly for my online Instagram photo, video and IGTV downloader, but I thought share this piece for your own extensions.
- Validates Instagram URL (domain validation, URL path validation).
- Uses OG properties to detect the image and video URL.
- Supports Instagram photos, videos, and Instagram TV videos
- Verbose error reporting with proper exceptions.
- Full unit tests
- No dependencies other than PHP curl extension (which is most likely enabled by already)
Requirements
- PHP 7.4
- Curl
Thanks to:
- MetaData - Meta data parsing regex and curl class.
Installation
With composer Install the library by running the following in your project.
composer require ayesh/instagram-download
Without composer
Download the zip file from Github, and configure your autoload handler to autoload PSR-4 Ayesh\InstagramDownload
namespace from the downloaded contents src
directory.
You could also manually require the file. Requires a certain amount of guilty feeling because it's 2017 and you are not using a decent autoload mechanism.
require_once 'src/InstagramDownload.php'
Usage
<?php use Ayesh\InstagramDownload\InstagramDownload; $url = 'http://instagram.com/p/tmwAlCGygb/'; try { $client = new InstagramDownload($url); $url = $client->getDownloadUrl(); // Returns the download URL. $type = $client->getType(); // Returns "image" or "video" depending on the media type. } catch (\InvalidArgumentException $exception) { /* * \InvalidArgumentException exceptions will be thrown if there is a validation * error in the URL. You might want to break the code flow and report the error * to your form handler at this point. */ $error = $exception->getMessage(); } catch (\RuntimeException $exception) { /* * \RuntimeException exceptions will be thrown if the URL could not be * fetched, parsed, or a media could not be extracted from the URL. */ $error = $exception->getMessage(); }