Exemplo n.º 1
0
 public function load($url, $parameters = null)
 {
     // to get the photo id we first need to use the embed API
     $embedApiUrl = "https://api.instagram.com/oembed?url={$url}";
     $embedInfo = file_get_contents($embedApiUrl, 0, null, null);
     $embedInfo = json_decode($embedInfo, true);
     if (null != $embedInfo && isset($embedInfo["media_id"])) {
         $mediaId = $embedInfo["media_id"];
         $mediaApiUrl = "https://api.instagram.com/v1/media/{$mediaId}?access_token=1907240.f59def8.6a53e4264d87413a8e8cd431430b6e94";
         $mediaDetails = file_get_contents($mediaApiUrl, 0, null, null);
         $mediaDetails = json_decode($mediaDetails, true);
         if (null !== $mediaDetails && is_array($mediaDetails) && array_key_exists("data", $mediaDetails)) {
             $mediaDetails = $mediaDetails["data"];
             $item = new Item();
             $item->setTitle($mediaDetails["caption"]["text"]);
             $item->setMediaCreatorUsername($mediaDetails['user']['username']);
             $item->setMediaCreatorRealname($mediaDetails['user']['full_name']);
             $item->setMediaType('Image');
             $item->setLayerType('Image');
             $item->setArchive('Instagram');
             $item->setUri($mediaDetails['images']['standard_resolution']['url']);
             $item->setAttributionUri($mediaDetails['link']);
             $item->setMediaDateCreated(DateTime::createFromFormat('U', $mediaDetails['created_time']));
             $item->setThumbnailUrl($mediaDetails['images']['thumbnail']['url']);
             $tags = $mediaDetails["tags"];
             if (isset($tags)) {
                 $item->setTags($tags);
             }
             $location = $mediaDetails["location"];
             if (null !== $location && is_array($location)) {
                 if (array_key_exists("latitude", $location) && array_key_exists("longitude", $location)) {
                     $item->setMediaGeoLatitude($mediaDetails['location']['latitude']);
                     $item->setMediaGeoLongitude($mediaDetails['location']['longitude']);
                 }
                 if (array_key_exists("name", $location)) {
                     $item->setLocation($mediaDetails['location']['name']);
                 }
             }
             return $this->returnResponse(array($item), true, false);
         }
     }
     return $this->returnResponse(array(), false, true);
 }
Exemplo n.º 2
0
 public function load($url, $parameters = null)
 {
     $loadCollectionItems = $parameters["load_child_items"];
     $checkForDuplicates = (bool) $parameters["check_for_duplicates"];
     $tags = $parameters["tags"];
     $user = $parameters["user"];
     $originalItems = null;
     $items = array();
     $apiUrl = "https://api.instagram.com/v1/tags/{$tags}/media/recent?access_token=1907240.f59def8.6a53e4264d87413a8e8cd431430b6e94";
     $itemsJson = file_get_contents($apiUrl, 0, null, null);
     if (FALSE !== $checkForDuplicates) {
         // temp check for duplicates [with duplicated code]. transition to max_id / min_id later.
         $em = $parameters["entityManager"];
         $originalItems = $em->getRepository('ZeegaDataBundle:Item')->findUriByUserArchive($user->getId(), "Instagram");
         if (isset($originalItems)) {
             $checkForDuplicates = TRUE;
         } else {
             $checkForDuplicates = FALSE;
         }
     } else {
         $checkForDuplicates = FALSE;
     }
     if (null !== $itemsJson) {
         $apiItems = json_decode($itemsJson, true);
         if (null !== $apiItems && is_array($apiItems) && array_key_exists("data", $apiItems)) {
             foreach ($apiItems["data"] as $apiItem) {
                 if (TRUE === $checkForDuplicates) {
                     if (TRUE === array_key_exists($apiItem['images']['standard_resolution']['url'], $originalItems)) {
                         continue;
                     }
                 }
                 $item = new Item();
                 $item->setTitle($apiItem["caption"]["text"]);
                 $item->setMediaCreatorUsername($apiItem['user']['username']);
                 $item->setMediaCreatorRealname($apiItem['user']['full_name']);
                 $item->setMediaType('Image');
                 $item->setLayerType('Image');
                 $item->setArchive('Instagram');
                 $item->setUri($apiItem['images']['standard_resolution']['url']);
                 $item->setAttributionUri($apiItem['link']);
                 $item->setMediaDateCreated(DateTime::createFromFormat('U', $apiItem['created_time']));
                 $item->setThumbnailUrl($apiItem['images']['thumbnail']['url']);
                 $tags = $apiItem["tags"];
                 if (isset($tags)) {
                     $item->setTags($tags);
                 }
                 $location = $apiItem["location"];
                 if (null !== $location && is_array($location)) {
                     if (array_key_exists("latitude", $location) && array_key_exists("longitude", $location)) {
                         $item->setMediaGeoLatitude($apiItem['location']['latitude']);
                         $item->setMediaGeoLongitude($apiItem['location']['longitude']);
                     }
                     if (array_key_exists("name", $location)) {
                         $item->setLocation($apiItem['location']['name']);
                     }
                 }
                 array_push($items, $item);
             }
         }
     }
     return $this->returnResponse($items, true, true);
 }
Exemplo n.º 3
0
 public function parseItem($itemArray, $user, $item = null, $ingestor = null)
 {
     if (!isset($item)) {
         $item = new Item();
         // set the defaults
         $item->setDateCreated(new \DateTime("now"));
         $item->setChildItemsCount(0);
         $item->setEnabled(true);
         $item->setPublished(false);
         $item->setUser($user);
     }
     $item->setDateUpdated(new \DateTime("now"));
     // parse the item
     if (isset($ingestor)) {
         $item->setIngestedBy($ingestor);
     }
     if (isset($itemArray['title'])) {
         $item->setTitle($itemArray['title']);
     }
     if (isset($itemArray['description'])) {
         $item->setDescription($itemArray['description']);
     }
     if (isset($itemArray['text'])) {
         $mediaType = $item->getMediaType();
         $text = $item->getText();
         if ($mediaType !== 'project' || $mediaType == 'project' && !isset($text)) {
             if (is_array($itemArray['text'])) {
                 $itemJson = json_encode($itemArray['text']);
                 // quick fix to encode integers properly before upgrading to php >= 5.3.3
                 $itemJson = preg_replace("/\"(\\d+)\"/", '$1', $itemJson);
                 $item->setText($itemJson);
             } else {
                 $item->setText($itemArray['text']);
             }
         }
     }
     if (isset($itemArray['uri'])) {
         $item->setUri($itemArray['uri']);
     }
     if (isset($itemArray['attribution_uri'])) {
         $item->setAttributionUri($itemArray['attribution_uri']);
     }
     if (isset($itemArray['media_type'])) {
         $item->setMediaType($itemArray['media_type']);
     }
     if (isset($itemArray['layer_type'])) {
         $item->setLayerType($itemArray['layer_type']);
     }
     if (isset($itemArray['media_geo_latitude'])) {
         $item->setMediaGeoLatitude($itemArray['media_geo_latitude']);
     }
     if (isset($itemArray['media_geo_longitude'])) {
         $item->setMediaGeoLongitude($itemArray['media_geo_longitude']);
     }
     if (isset($itemArray['headline'])) {
         $item->setHeadline($itemArray['headline']);
     }
     $thumbnailSize = 4;
     $mediaType = $item->getMediaType();
     if ($mediaType === 'project') {
         $thumbnailSize = 6;
     }
     if (!isset($itemArray['thumbnail_url']) || isset($itemArray['create_thumbnail'])) {
         $thumbnail = $this->thumbnailService->getItemThumbnail($item->getUri(), $thumbnailSize);
     } else {
         $thumbnail = $itemArray['thumbnail_url'];
     }
     if (null !== $thumbnail) {
         $item->setThumbnailUrl($thumbnail);
     }
     if (isset($itemArray['media_date_created'])) {
         $parsedDate = strtotime($itemArray['media_date_created']);
         if ($parsedDate) {
             $d = date("Y-m-d h:i:s", $parsedDate);
             $item->setMediaDateCreated(new \DateTime($d));
         }
     }
     if (isset($itemArray['media_creator_username'])) {
         $item->setMediaCreatorUsername($itemArray['media_creator_username']);
     } else {
         $item->setMediaCreatorUsername($user->getDisplayName());
     }
     if (isset($itemArray['media_creator_realname'])) {
         $item->setMediaCreatorRealname($itemArray['media_creator_realname']);
     } else {
         $item->setMediaCreatorUsername($user->getDisplayName());
     }
     if (isset($itemArray['archive'])) {
         $item->setArchive($itemArray['archive']);
     }
     if (isset($itemArray['location'])) {
         $item->setLocation($itemArray['location']);
     }
     if (isset($itemArray['license'])) {
         $item->setLicense($itemArray['license']);
     }
     if (isset($itemArray['attributes'])) {
         $item->setAttributes($itemArray['attributes']);
     }
     if (isset($itemArray['tags'])) {
         $item->setTags($itemArray['tags']);
     }
     if (isset($itemArray['published'])) {
         $item->setPublished($itemArray['published']);
     }
     if (isset($itemArray["child_items"])) {
         foreach ($itemArray["child_items"] as $child_item) {
             $child = self::parseItem($child_item, $user, $ingestor);
             if (isset($child)) {
                 $item->addChildItem($child);
             }
         }
     }
     return $item;
 }