Peringatan 31-12-2023 - Versi 7.0.0 akan menghentikan dukungan untuk PHP <8.2
Peringatan 09-11-2022 - Instagram mengubah DOM-nya LAGI... Harap perbarui ke versi ini 6.16.4
Peringatan 01-06-2022 - Instagram mengubah konten DOM dan pemuatan data profilnya. Harap perbarui ke versi 6.15.0 ini
Ambil feed Instagram apa pun dengan mudah dan lainnya tanpa OAuth untuk PHP.
Jika Anda menyukai atau menggunakan paket ini, silakan bagikan kecintaan Anda dengan membintangi repositori ini, ikuti @pgrimaud atau jadilah sponsor.
Versi ini dapat mengambil feed Instagram APAPUN menggunakan web scraping .
composer require pgrimaud/instagram-user-feed
v7.0.0 - 31-12-2023:
v6.16.6 - 31-12-2023:
v6.16.5 - 24-12-2023:
$profile->getMedias()
akan selalu mengembalikan array kosong setelah memanggil $api->getProfile()
. Penting untuk memanggil $api->getMoreMedias($profile)
untuk mengembalikan 12 media pertama (cookieguru)v6.16 - 02-08-2022:
v6.15 - 02-06-2022:
v6.12 - 20-09-2021:
v6.11 - 13-09-2021:
v6.10 - 03-09-2021:
v6.9 - 02-09-2021:
v6.8 - 08-07-2021:
v6.7 - 31-01-2021:
v6.6 - 06-10-2020:
v6.5 - 14-09-2020:
v6.4 - 30-08-2020:
v6.3 -03-07-2020:
v6.2 - 01-06-2020:
v6.1 - 21-05-2020:
v6.0 - 20-05-2020
Facebook menambahkan kebijakan CORS baru, dan Anda tidak dapat menampilkan datanya secara langsung.
Anda sekarang dapat mengunduh media di penyimpanan atau server Anda untuk menyajikannya langsung di situs web Anda. Anda dapat menemukan contohnya di sini.
Contoh:
<?php
// include vendor & classes
// random picture from instagram
$ url = ' https://scontent-cdt1-1.cdninstagram.com/v/t51.2885-19/s150x150/156309873_1632221153646196_1273891214497323498_n.jpg?tp=1&_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_ohc=vbxGNZrjPmUAX8CIDdC&edm=ABfd0MgBAAAA&ccb=7-4&oh=ae5811c07f0e73b945eb203cd58c2101&oe=60EDD1EE&_nc_sid=7bff83 '
// define directory
$ downloadDir = __DIR__ . ' /../assets ' ; // change it
$ fileName = MediaDownloadHelper:: downloadMedia ( $ url , $ downloadDir );
// file was downloaded here : __DIR__ . '/../assets/v-t51.2885-19-s150x150-156309873_1632221153646196_1273891214497323498_n.jpg
Beberapa orang mungkin mengalami kesulitan untuk login dengan perpustakaan ini. Ini terjadi untuk akun Instagram "lama" atau jika Anda menggunakannya di beberapa shared hosting (tidak semua, saya tidak tahu kenapa...).
Anda sekarang dapat secara otomatis melewati tantangan pos pemeriksaan. (verifikasi email dengan kode). Anda dapat menemukan contohnya di sini.
Tips: Anda sebaiknya membuat akun instagram tiruan menggunakan kotak email tiruan untuk menggunakan fitur ini.
*Menyimpan sesi dengan driver cache sangat penting di sini. Sesi Instagram berlaku selama... 1 TAHUN . Jadi secara teori, menggunakan driver cache dan satu akun hanya akan memicu satu login nyata ke Instagram kemudian menggunakan kembali sesi tersebut untuk waktu yang lama.
Terima kasih kepada @ibnux dan @eldark atas bantuannya
Dalam versi ^6.0, login sekarang wajib , ini akan menyimpan cookie (sesi) untuk mensimulasikan permintaan "nyata" ke Instagram.
Mereka meningkatkan deteksi bot mereka dan tanpa data sesi nyata dalam permintaan header, IP Anda dapat dengan mudah diblokir sementara oleh Instagram.
Lalu, Anda tidak dapat mengambil banyak data tanpa login.
Tips: Anda hanya perlu membuat atau menggunakan akun tiruan untuk menggunakan paket ini dengan mudah.
Baru di 6.0 Cache : Pustaka ini mengimplementasikan PSR-6 untuk interoperabilitas terbaik.
<?php
use Instagram Api ;
use Symfony Component Cache Adapter FilesystemAdapter ;
$ cachePool = new FilesystemAdapter ( ' Instagram ' , 0 , __DIR__ . ' /../cache ' );
$ api = new Api ( $ cachePool );
$ api -> login ( ' username ' , ' password ' ); // mandatory
$ profile = $ api -> getProfile ( ' robertdowneyjr ' );
echo $ profile -> getUserName (); // robertdowneyjr
echo $ profile -> getFullName (); // Robert Downey Jr. Official
<?php
$ api = new Api ( $ cachePool );
$ api -> login ( ' username ' , ' password ' );
$ profile = $ api -> getProfile ( ' robertdowneyjr ' );
print_r ( $ profile );
Instagram Hydrator Component Feed Object
(
[id] => 1518284433
[userName] => robertdowneyjr
[fullName] => Robert Downey Jr. Official
[biography] => @ officialfootprintcoalition @coreresponse
[followers] => 46382057
[following] => 50
[profilePicture] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-19/s320x320/72702032_542075739927421_3928117925747097600_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_ohc=h2zGWoshNjUAX9ze3jb&oh=cf6441cfc3f258da3bf4cfef29686c7d&oe=5EEEC338
[externalUrl] => http: //coreresponse.org/covid19
[private] =>
[verified] => 1
[mediaCount] => 453
(
[ 0 ] => Instagram ModelInstagramMedia Object
(
[id] => 2307655221969878423
[typeName] => GraphImage
[height] => 1350
[width] => 1080
[thumbnailSrc] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-15/sh0.08/e35/c0.180.1440.1440a/s640x640/96225997_178111910111734_5886065436455432375_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_cat=1&_nc_ohc=GqcYpSEbz8gAX_GF1Ep&oh=1b293215142d407faca46a2fd28eab71&oe=5EF0EBDF
[link] => https: //www.instagram.com/p/CAGcDKplv2X/
[date] => DateTime Object
(
[date] => 2020 - 05 - 12 22 : 06 : 01.000000
[timezone_type] => 3
[timezone] => Europe/Paris
)
[displaySrc] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-15/e35/p1080x1080/96225997_178111910111734_5886065436455432375_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_cat=1&_nc_ohc=GqcYpSEbz8gAX_GF1Ep&oh=6c19ddef96fdc07d7926b05e36cb2bed&oe=5EEED2CE
[caption] => The sweetest things are worth waiting for…Susan and I are producing a @Netflix original series, Sweet Tooth, based on the comic by @Jefflemire. Can’t wait to share it with you all. @NXonNetflix @warnerbrostv #SweetTooth
[comments] => 3308
[likes] => 687988
[thumbnails] => Array
(
[ 0 ] => stdClass Object
(
[src] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-15/e35/c0.180.1440.1440a/s150x150/96225997_178111910111734_5886065436455432375_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_cat=1&_nc_ohc=GqcYpSEbz8gAX_GF1Ep&oh=24b300201afc0e0c82166c6288e0ed5b&oe=5EF00196
[config_width] => 150
[config_height] => 150
)
[ 1 ] => stdClass Object
(
[src] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-15/e35/c0.180.1440.1440a/s240x240/96225997_178111910111734_5886065436455432375_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_cat=1&_nc_ohc=GqcYpSEbz8gAX_GF1Ep&oh=203d0a3d01d77a2978739c96eb67e607&oe=5EEF6DE0
[config_width] => 240
[config_height] => 240
)
[ 2 ] => stdClass Object
(
[src] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-15/e35/c0.180.1440.1440a/s320x320/96225997_178111910111734_5886065436455432375_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_cat=1&_nc_ohc=GqcYpSEbz8gAX_GF1Ep&oh=7b9cee64460e1c9c501e59621e6ccfb2&oe=5EF18BE6
[config_width] => 320
[config_height] => 320
)
[ 3 ] => stdClass Object
(
[src] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-15/e35/c0.180.1440.1440a/s480x480/96225997_178111910111734_5886065436455432375_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_cat=1&_nc_ohc=GqcYpSEbz8gAX_GF1Ep&oh=f3d8c31eca2d3c3ab6653b3ed3ebe4f4&oe=5EEFEAC0
[config_width] => 480
[config_height] => 480
)
[ 4 ] => stdClass Object
(
[src] => https: //scontent-cdt1-1.cdninstagram.com/v/t51.2885-15/sh0.08/e35/c0.180.1440.1440a/s640x640/96225997_178111910111734_5886065436455432375_n.jpg?_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_cat=1&_nc_ohc=GqcYpSEbz8gAX_GF1Ep&oh=1b293215142d407faca46a2fd28eab71&oe=5EF0EBDF
[config_width] => 640
[config_height] => 640
)
)
[location] =>
[video] =>
[videoViewCount] => 0
)
...
[endCursor:InstagramModelInstagramProfile:private] => QVFEblBGclVyOEtCMmRLZkVxUUdVbmhsYXNMZmMmplNWtZRkJnRnZOSUdMM1BDRmt3ZA==
)
Jika Anda ingin menggunakan paginasi pada media, panggil saja metode getMoreMedias
.
<?php
$ api = new Api ( $ cachePool );
$ api -> login ( $ credentials -> getLogin (), $ credentials -> getPassword ());
$ profile = $ api -> getProfile ( ' twhiddleston ' );
print_r ( $ profile -> getMedias ()); // 12 first medias
do {
$ profile = $ api -> getMoreMedias ( $ profile );
print_r ( $ profile -> getMedias ()); // 12 more medias
// avoid 429 Rate limit from Instagram
sleep ( 1 );
} while ( $ profile -> hasMoreMedias ());
<?php
use Instagram Api ;
use Symfony Component Cache Adapter FilesystemAdapter ;
$ cachePool = new FilesystemAdapter ( ' Instagram ' , 0 , __DIR__ . ' /../cache ' );
$ api = new Api ( $ cachePool );
$ api -> login ( ' username ' , ' password ' ); // mandatory
$ profile = $ api -> getProfile ( ' starwars ' ); // we need instagram username
sleep ( 1 );
$ feedStories = $ api -> getStories ( $ profile -> getId ());
$ stories = $ feedStories -> getStories ();
print_r ( $ stories );
Terima kasih kepada orang-orang hebat ini (kunci emoji):
Pierre Grimaud | Jan Ostlund | Tim Obligasi | Dlinny | Rene | ikiselev1989 | Pezhvak |
David Greminger | Nana YAMANE | David Kurniawan | gtapps | Chun-Sheng, Li | Schelmo | Mojtaba |
Georgy Gusev | Jibran Ijaz | Julien Sepupu-Alliot | n-richaud | Dmitry Afonin | Andrey Firoiu | Fiki Pratama |
Karel | Peter Kampjes | Bob Brown | nagajoomlapro | pintar | BMRG14 | Sinan Portakal |
visi mendalam7 | Yusuf Özdemir | Kadir Melih Bisa |
Proyek ini mengikuti spesifikasi semua kontributor. Kontribusi apa pun diterima!
Anda menemukan bug? Anda memerlukan fitur baru? Anda dapat membuat masalah jika diperlukan atau menghubungi saya di Twitter.
Dilisensikan berdasarkan ketentuan Lisensi MIT.