Home › Forums › WoodMart support forum › instagram did not return a 200
instagram did not return a 200
- This topic has 6 replies, 4 voices, and was last updated 6 years, 1 month ago by Eric Watson.
-
AuthorPosts
-
March 15, 2018 at 4:48 pm #46294
BatanomiParticipantInstagram Feed: instagram did not return a 200
March 15, 2018 at 4:50 pm #46296
BatanomiParticipanti already put the follwoing code into functions.php
function woodmart_scrape_instagram($username, $slice = 9) {
$username = strtolower( $username );
$by_hashtag = ( substr( $username, 0, 1) == ‘#’ );if ( false === ( $instagram = get_transient( ‘instagram-media-new-2-‘.sanitize_title_with_dashes( $username ) ) ) ) {
$request_param = ( $by_hashtag ) ? ‘explore/tags/’ . substr( $username, 1) : trim( $username );
$remote = wp_remote_get( ‘https://instagram.com/’. $request_param );if ( is_wp_error( $remote ) )
return new WP_Error( ‘site_down’, esc_html__( ‘Unable to communicate with Instagram.’, ‘woodmart’ ) );if ( 200 != wp_remote_retrieve_response_code( $remote ) )
return new WP_Error( ‘invalid_response’, esc_html__( ‘Instagram did not return a 200.’, ‘woodmart’ ) );$shards = explode( ‘window._sharedData = ‘, $remote[‘body’] );
$insta_json = explode( ‘;</script>’, $shards[1] );
$insta_array = json_decode( $insta_json[0], TRUE );if ( !$insta_array )
return new WP_Error( ‘bad_json’, esc_html__( ‘Instagram has returned invalid data.’, ‘woodmart’ ) );// old style
if ( isset( $insta_array[‘entry_data’][‘UserProfile’][0][‘userMedia’] ) ) {
$images = $insta_array[‘entry_data’][‘UserProfile’][0][‘userMedia’];
$type = ‘old’;
// old_2 style
} elseif( $by_hashtag && isset( $insta_array[‘entry_data’][‘TagPage’][0][‘tag’][‘media’][‘nodes’] ) ) {
$images = $insta_array[‘entry_data’][‘TagPage’][0][‘tag’][‘media’][‘nodes’];
$type = ‘old_2’;
}else if ( isset( $insta_array[‘entry_data’][‘ProfilePage’][0][‘user’][‘media’][‘nodes’] ) ) {
$images = $insta_array[‘entry_data’][‘ProfilePage’][0][‘user’][‘media’][‘nodes’];
$type = ‘old_2’;
// new style
} elseif( $by_hashtag && isset( $insta_array[‘entry_data’][‘TagPage’][0][‘graphql’][‘hashtag’][‘edge_hashtag_to_media’][‘edges’] ) ) {
$images = $insta_array[‘entry_data’][‘TagPage’][0][‘graphql’][‘hashtag’][‘edge_hashtag_to_media’][‘edges’];
$type = ‘new’;
} else {
return new WP_Error( ‘bad_json_2’, esc_html__( ‘Instagram has returned invalid data.’, ‘woodmart’ ) );
}if ( !is_array( $images ) )
return new WP_Error( ‘bad_array’, esc_html__( ‘Instagram has returned invalid data.’, ‘woodmart’ ) );$instagram = array();
switch ( $type ) {
case ‘old’:
foreach ( $images as $image ) {
if ( $image[‘user’][‘username’] == $username ) {
$image[‘link’] = $image[‘link’];
$image[‘images’][‘thumbnail’] = preg_replace( “/^http:/i”, “”, $image[‘images’][‘thumbnail’] );
$image[‘images’][‘standard_resolution’] = preg_replace( “/^http:/i”, “”, $image[‘images’][‘standard_resolution’] );
$image[‘images’][‘low_resolution’] = preg_replace( “/^http:/i”, “”, $image[‘images’][‘low_resolution’] );
$instagram[] = array(
‘description’ => $image[‘caption’][‘text’],
‘link’ => $image[‘link’],
‘time’ => $image[‘created_time’],
‘comments’ => $image[‘comments’][‘count’],
‘likes’ => $image[‘likes’][‘count’],
‘thumbnail’ => $image[‘images’][‘thumbnail’],
‘large’ => $image[‘images’][‘standard_resolution’],
‘small’ => $image[‘images’][‘low_resolution’],
‘type’ => $image[‘type’]
);
}
}
break;
case ‘old_2’:
foreach ( $images as $image ) {
$image[‘thumbnail_src’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_src’] );
$image[‘thumbnail’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_resources’][0][‘src’] );
$image[‘medium’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_resources’][2][‘src’] );
$image[‘large’] = $image[‘thumbnail_src’];
$image[‘display_src’] = preg_replace( “/^https:/i”, “”, $image[‘display_src’] );
if ( $image[‘is_video’] == true ) {
$type = ‘video’;
} else {
$type = ‘image’;
}
$caption = esc_html__( ‘Instagram Image’, ‘woodmart’ );
if ( ! empty( $image[‘caption’] ) ) {
$caption = $image[‘caption’];
}
$instagram[] = array(
‘description’ => $caption,
‘link’ => ‘//instagram.com/p/’ . $image[‘code’],
‘time’ => $image[‘date’],
‘comments’ => $image[‘comments’][‘count’],
‘likes’ => $image[‘likes’][‘count’],
‘thumbnail’ => $image[‘thumbnail’],
‘medium’ => $image[‘medium’],
‘large’ => $image[‘large’],
‘original’ => $image[‘display_src’],
‘type’ => $type
);
}
break;
default:
foreach ( $images as $image ) {
$image = $image[‘node’];
$caption = esc_html__( ‘Instagram Image’, ‘woodmart’ );
if ( ! empty( $image[‘edge_media_to_caption’][‘edges’][0][‘node’][‘text’] ) ) $caption = $image[‘edge_media_to_caption’][‘edges’][0][‘node’][‘text’];$image[‘thumbnail_src’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_src’] );
$image[‘thumbnail’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_resources’][0][‘src’] );
$image[‘medium’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_resources’][2][‘src’] );
$image[‘large’] = $image[‘thumbnail_src’];$type = ( $image[‘is_video’] ) ? ‘video’ : ‘image’;
$instagram[] = array(
‘description’ => $caption,
‘link’ => ‘//instagram.com/p/’ . $image[‘shortcode’],
‘comments’ => $image[‘edge_media_to_comment’][‘count’],
‘likes’ => $image[‘edge_liked_by’][‘count’],
‘thumbnail’ => $image[‘thumbnail’],
‘medium’ => $image[‘medium’],
‘large’ => $image[‘large’],
‘type’ => $type
);
}
break;
}
// do not set an empty transient – should help catch private or empty accounts
if ( ! empty( $instagram ) ) {
$instagram = woodmart_compress( maybe_serialize( $instagram ) );
set_transient( ‘instagram-media-new-2-‘.sanitize_title_with_dashes( $username ), $instagram, apply_filters( ‘null_instagram_cache_time’, HOUR_IN_SECONDS*2 ) );
}
}
if ( ! empty( $instagram ) ) {
$instagram = maybe_unserialize( woodmart_decompress( $instagram ) );
return array_slice( $instagram, 0, $slice );
} else {
return new WP_Error( ‘no_images’, esc_html__( ‘Instagram did not return any images.’, ‘woodmart’ ) );
}
}March 15, 2018 at 7:54 pm #46318
Artem TemosKeymasterHi,
Yes, we will fix this in our next theme update. You can find a solution on another topic https://xtemos.com/forums/topic/instagram-has-returned-invalid-data-4/
Regards
March 26, 2018 at 8:59 am #48829
idanyasharParticipantI also get this error (Instagram did not return a 200.) after updating the code you are suggesting in the functions.php file.(https://xtemos.com/forums/topic/instagram-has-returned-invalid-data-4/)
When I use “@” before the name of the Instagram account, I get this error “Instagram did not return a 200.”
and without “@”, I get this error “Instagram has returned invalid data.”
Please adviseMarch 26, 2018 at 9:48 am #48838
Eric WatsonParticipantHello,
As we can see Instagram element working correctly on your website. http://prntscr.com/iwgihz
Kind Regards
XTemos StudioMarch 26, 2018 at 9:49 am #48840
idanyasharParticipantYes all fixed after update to 2.1.0 🙂
ThanksMarch 26, 2018 at 9:58 am #48844
Eric WatsonParticipantYou are welcome!
-
AuthorPosts
Tagged: instagram did not return a 200
- You must be logged in to create new topics. Login / Register