public static function fromApi($mediaArray)
{
$instance = new self();
$instance->id = $mediaArray['id'];
$instance->type = $mediaArray['type'];
$instance->createdTime = $mediaArray['created_time'];
$instance->code = $mediaArray['code'];
$instance->link = $mediaArray['link'];
$instance->commentsCount = $mediaArray['comments']['count'];
$instance->likesCount = $mediaArray['likes']['count'];
$instance->imageLowResolutionUrl = self::getCleanImageUrl($mediaArray['images']['low_resolution']['url']);
$instance->imageThumbnailUrl = self::getCleanImageUrl($mediaArray['images']['thumbnail']['url']);
$instance->imageStandardResolutionUrl = self::getCleanImageUrl($mediaArray['images']['standard_resolution']['url']);
$instance->imageHighResolutionUrl = str_replace('320x320', '1080x1080', $instance->imageLowResolutionUrl);
if (isset($mediaArray['caption'])) {
$instance->caption = $mediaArray['caption']['text'];
}
if ($instance->type === 'video') {
if (isset($mediaArray['video_views'])) {
$instance->videoViews = $mediaArray['video_views'];
}
$instance->videoLowResolutionUrl = $mediaArray['videos']['low_resolution']['url'];
$instance->videoStandardResolutionUrl = $mediaArray['videos']['standard_resolution']['url'];
$instance->videoLowBandwidthUrl = $mediaArray['videos']['low_bandwidth']['url'];
}
if (isset($mediaArray['location']['id'])) {
$instance->locationId = $mediaArray['location']['id'];
}
if (isset($mediaArray['location']['name'])) {
$instance->locationName = $mediaArray['location']['name'];
}
return $instance;
}
public static function getPaginateMedias($username, $maxId = '') { $hasNextPage = true; $medias = []; $toReturn = ['medias' => $medias, 'maxId' => $maxId, 'hasNextPage' => $hasNextPage]; $response = Request::get(Endpoints::getAccountMediasJsonLink($username, $maxId)); if ($response->code !== 200) { throw new InstagramException('Response code is ' . $response->code . '. Body: ' . $response->body . ' Something went wrong. Please report issue.'); } $arr = json_decode($response->raw_body, true); if (!is_array($arr)) { throw new InstagramException('Response code is ' . $response->code . '. Body: ' . $response->body . ' Something went wrong. Please report issue.'); } if (count($arr['items']) === 0) { return $toReturn; } foreach ($arr['items'] as $mediaArray) { $medias[] = Media::fromApi($mediaArray); } $maxId = $arr['items'][count($arr['items']) - 1]['id']; $hasNextPage = $arr['more_available']; $toReturn = ['medias' => $medias, 'maxId' => $maxId, 'hasNextPage' => $hasNextPage]; return $toReturn; }