0.1.0 2014-08-30 00:15 UTC


This module takes an Instagram URL and returns a data structure as if the URL had been marked up with a proper h-entry.


Bring in this library using composer, or just by including the src\p3k\instagram-shim.php file.

  "p3k/mf2-instagram-shim": "0.1.*",

First, initialize the Instagram client with your credentials.


Then you can call parseURL with a URL to a photo and get back a nicely formatted h-entry.

$data = p3k\instagram\parseURL('http://instagram.com/p/rhlnwxjcu9/');


Instagram returns unix timestamps and does not include timezone information anywhere. However, photos that are taken at a location can be assumed to be in that timezone. To augment the parsed result so that the returned dates include timezone, you can provide a function that will be used to look up the timezone of photos if location data is available.

The function should take two arguments, latitude and longitude, and return a string of the timezone name such as "America/Los_Angeles".

The code below will return the same timezone for all locations in the case that you want all your photos to be set to the same timezone.

  return 'America/Los_Angeles';

The code below will use a remote web API to find the timezone given a location.


  $ch = curl_init('http://timezone-api.geoloqi.com/timezone/' . $lat . '/' . $lng);
  $response = curl_exec($ch);
  if($response) {
    $timezone = json_decode($response);
    if($timezone) {
      return $timezone->timezone;

  return null;


Copyright 2014 by Aaron Parecki

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.