警告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 フィードなどを簡単に取得できます。
このパッケージを気に入ったり使用したりする場合は、このリポジトリにスターを付けるか、@pgrimaud をフォローするか、スポンサーになることで愛を共有してください。
このバージョンでは、 Web スクレイピングを使用してあらゆるInstagram フィードを取得できます。
composer require pgrimaud/instagram-user-feed
v7.0.0 - 2023-12-31:
v6.16.6 - 2023-12-31:
v6.16.5 - 2023-12-24:
$profile->getMedias()
$api->getProfile()
呼び出した後、常に空の配列を返します。最初の 12 メディアを返すには$api->getMoreMedias($profile)
を呼び出す必要があります (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 ポリシーを追加し、データを直接表示できなくなりました。
メディアをストレージまたはサーバーにダウンロードして、Web サイトで直接提供できるようになりました。ここで例を見つけることができます。
例:
<?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 アカウントを作成する必要があります。
※ここではキャッシュドライバーによるセッションの保存が非常に重要です。 Instagram セッションの有効期間は... 1 年間です。したがって、理論的には、キャッシュドライバーと 1 つのアカウントを使用すると、Instagram への実際のログインは 1 回だけトリガーされ、セッションは長期間再利用されます。
@ibnux と @eldark の協力に感謝します
バージョン ^6.0 では、ログインが必須になり、Instagram への「実際の」リクエストをシミュレートするために Cookie (セッション) が保存されます。
ボットの検出が向上し、ヘッダーリクエストに実際のセッションデータが含まれていないと、あなたの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 | リー・チュンシェン | シェルモ | モジタバ |
ゲオルギー・グセフ | ジブラン・イジャズ | ジュリアン・カズン・アリオ | n-リショー | ドミトリー・アフォニン | アンドレイ・フィロイウ | フィキ・プラタマ |
カール | ピーター・カンペス | ボブ・ブラウン | ナガジュムラプロ | クレベング | BMRG14 | シナン・ポルタカル |
ディープビジョン7 | ユスフ・オズデミル | カディル・メリ・カン |
このプロジェクトは、全員参加者の仕様に従っています。あらゆる種類の貢献を歓迎します!
バグを見つけましたか?新しい機能が必要ですか?必要に応じて問題を作成するか、Twitter で私に連絡してください。
MIT ライセンスの条項に基づいてライセンスされています。