public static function fromMediaPage($mediaArray)
{
$instance = new self();
$instance->id = $mediaArray['id'];
$instance->type = 'image';
if ($mediaArray['is_video']) {
$instance->type = 'video';
$instance->videoStandardResolutionUrl = $mediaArray['video_url'];
$instance->videoViews = $mediaArray['video_views'];
}
if (isset($mediaArray['caption_is_edited'])) {
$instance->captionIsEdited = $mediaArray['caption_is_edited'];
}
if (isset($mediaArray['is_ad'])) {
$instance->isAd = $mediaArray['is_ad'];
}
$instance->createdTime = $mediaArray['date'];
$instance->code = $mediaArray['code'];
$instance->link = Endpoints::getMediaPageLink($instance->code);
$instance->commentsCount = $mediaArray['comments']['count'];
$instance->likesCount = $mediaArray['likes']['count'];
$images = self::getImageUrls($mediaArray['display_src']);
$instance->imageStandardResolutionUrl = $images['standard'];
$instance->imageLowResolutionUrl = $images['low'];
$instance->imageHighResolutionUrl = $images['high'];
$instance->imageThumbnailUrl = $images['thumbnail'];
if (isset($mediaArray['caption'])) {
$instance->caption = $mediaArray['caption'];
}
if (isset($mediaArray['location']['id'])) {
$instance->locationId = $mediaArray['location']['id'];
}
if (isset($mediaArray['location']['name'])) {
$instance->locationName = $mediaArray['location']['name'];
}
$instance->owner = Account::fromMediaPage($mediaArray['owner']);
return $instance;
}
public static function getMediaByUrl($mediaUrl) { if (filter_var($mediaUrl, FILTER_VALIDATE_URL) === false) { throw new \InvalidArgumentException('Malformed media url'); } $response = Request::get(rtrim($mediaUrl, '/') . '/?__a=1'); if ($response->code === 404) { throw new InstagramNotFoundException('Media with given code does not exist or account is private.'); } if ($response->code !== 200) { throw new InstagramException('Response code is ' . $response->code . '. Body: ' . $response->body . ' Something went wrong. Please report issue.'); } $mediaArray = json_decode($response->raw_body, true); if (!isset($mediaArray['media'])) { throw new InstagramException('Media with this code does not exist'); } return Media::fromMediaPage($mediaArray['media']); }