警告2023-12-31 - 版本 7.0.0 將放棄對 PHP < 8.2 的支持
警告2022-11-09 - Instagram 再次更改了他的 DOM...請更新到此版本 6.16.4
警告2022-06-01 - Instagram 更改了他的 DOM 內容和個人資料資料載入。請更新至此版本6.15.0
無需 PHP 的 OAuth,即可輕鬆取得任何 Instagram feed 等。
如果您喜歡或使用這個包,請透過為這個儲存庫加註星標來分享您的喜愛,並關注@pgrimaud 或成為贊助商。
此版本可以使用網頁抓取檢索任何Instagram feed。
composer require pgrimaud/instagram-user-feed
v7.0.0 - 2023-12-31:
v6.16.6 - 2023 年 12 月 31 日:
v6.16.5 - 2023-12-24:
$api->getProfile()
後, $profile->getMedias()
將始終傳回一個空數組。需要呼叫$api->getMoreMedias($profile)
回傳前12個媒體(cookieguru)v6.16 - 2022-08-02:
v6.15 - 2022-06-02:
v6.12 - 2021-09-20:
v6.11 - 2021-09-13:
v6.10 - 2021-09-03:
v6.9 - 2021-09-02:
v6.8 - 2021-07-08:
v6.7 - 2021-01-31:
v6.6 - 2020-10-06:
v6.5 - 2020-09-14:
v6.4 - 2020-08-30:
v6.3-2020-07-03 :
v6.2 - 2020-06-01:
v6.1 - 2020-05-21:
v6.0 - 2020-05-20
Facebook 新增了新的 CORS 政策,無法直接顯示資料。
現在您可以將媒體下載到儲存或伺服器上,以便直接在您的網站上提供服務。您可以在這裡找到一個範例。
例子:
<?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
有些人可能無法登入該庫。這種情況發生在「舊」Instagram 帳戶上,或者如果您在某些共享主機上使用它(不是全部,我不知道為什麼...)。
現在您可以自動繞過檢查點挑戰。 (帶有代碼的電子郵件驗證)。您可以在這裡找到一個範例。
提示:您應該使用虛擬電子郵件建立一個虛擬 Instagram 帳戶才能使用此功能。
*使用快取驅動程式保存會話在這裡非常重要。 Instagram 會話的有效期限為... 1 年。因此理論上,使用快取驅動程式和一個帳戶只會觸發 Instagram 的一次真實登錄,然後長時間重複使用會話。
感謝@ibnux 和@eldark 的幫助
在版本^6.0中,現在強制登錄,它將保存cookie(會話)來模擬對Instagram的「真實」請求。
他們改進了機器人檢測,並且標頭請求中沒有真實的會話數據,您的 IP 可能很容易被 Instagram 軟禁止。
那麼,如果沒有登錄,你就無法取得大量資料。
提示:您只需建立或使用虛擬帳戶即可輕鬆使用此軟體包。
6.0 快取中的新增功能:此程式庫實現 PSR-6 以實現最大的互通性。
<?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==
)
如果你想在媒體上使用分頁,只需呼叫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 );
感謝這些優秀的人(表情符號鍵):
皮埃爾·格里莫 | 揚·奧斯特倫德 | 提姆邦德 | 德林尼 | 勒內 | 伊基謝列夫1989 | 佩日華克 |
大衛‧格雷明格 | 山根奈奈 | 大衛庫尼亞萬 | gtapps | 李春生 | 謝爾莫 | 莫吉塔巴 |
喬治·古謝夫 | 吉布蘭·伊賈茲 | 朱利安·庫辛-阿利奧特 | 理查 | 德米特里·阿福寧 | 安德烈·費羅尤 | 菲基·普拉塔瑪 |
卡爾 | 彼得坎普傑斯 | 鮑伯·布朗 | 納加朱拉普羅 | 克利文 | BMRG14 | 希南·波塔卡爾 |
深視7 | 優素福·奧茲德米爾 | 卡迪爾·梅利赫·詹 |
該項目遵循所有貢獻者規範。歡迎任何形式的貢獻!
你發現了一個錯誤嗎?您需要新功能嗎?如果需要,您可以建立問題或在 Twitter 上聯絡我。
根據 MIT 許可證條款獲得許可。