This module provides a scraper task to fetch recent records by hashtag, username or location. Records will are persisted in database (InstagramRecord).
- php ^7.0.0
- ext-json
- guzzlehttp/guzzle ^6.2
- phptek/jsontext ^1.0.1
- nathancox/codeeditorfield ^1.3
- colymba/gridfield-bulk-editing-tools 2.1.x-dev
composer require arillo/silverstripe-instagram-scraper
For fetching instagram records you can run Arillo\InstagramScraper\Tasks\ScraperTask with the following parameters:
- type (hashtag, username or location)
- subject (the query for the given type)
You can run following tasks through the commandline (e.g. with cronjobs).
php framework/cli-script.php dev/tasks/Arillo-InstagramScraper-Tasks-ScraperTask type=hashtag subject=<the_hashtag_to_query>
php framework/cli-script.php dev/tasks/Arillo-InstagramScraper-Tasks-ScraperTask type=username subject=<the_username_to_query>
php framework/cli-script.php dev/tasks/Arillo-InstagramScraper-Tasks-ScraperTask type=location subject=<instagram_location_id>
Or you can run them via the dev/tasks section in your browser.
Fetch records by topic:
public function getInstagramRecords()
{
// get records by topic (subject & type)
$records = InstagramRecord::by_topic(<subject>, <type>);
// $records is a data list, the query can be modified...
return $records
->exclude('Hidden', true)
->limit(10)
->sort('TakenAtTimestamp DESC')
;
}
Template usage example:
<% if $InstagramRecords.Exists %>
<% loop $InstagramRecords %>
<div>
<a href="$PostViewPage.Link" title="$Text" target="_blank">
<img src="$Image('320').URL" />
</a>
</div>
<% end_loop %>
<% end_if %>
- There might be problems to fetch data from Instagram caused by rate limiting.
- Please note that Instagram might change access permissions to the API endpoint used by this module.
If you find a bug or you have feature request, please post an issue and/or send a pull request.