2013-05-10 15 views
7

Korzystam z interfejsu Graph API, aby uzyskać informacje o ścianie strony fanowskiej.Interfejs API wykresów: pobieranie wymiarów obrazu na kanale strony

Zauważyłem, że aplikacja na Facebooku iOS jest w stanie określić dokładny współczynnik dla jej symbolu zastępczego.

enter image description here

http://developers.facebook.com/tools/explorer?method=GET&path=facebook%2Ffeed%3Ffields%3Dpicture

{ 
    "data": [ 
      { 
      "picture": "http://photos-b.ak.fbcdn.net/hphotos-ak-frc1/247019_457846347622804_946521095_s.jpg", 
      "id": "20531316728_10151883063741729", 
      "created_time": "2013-05-02T16:57:25+0000" 
      }, 
       : 
       : 
       : 
      { 
      "picture": "http://photos-e.ak.fbcdn.net/hphotos-ak-ash4/223257_10151498310776729_930531604_s.jpg", 
      "id": "20531316728_10151498193061729", 
      "created_time": "2012-10-05T18:42:38+0000" 
      } 
      ], 
    "paging": { 
     "previous": "https://graph.facebook.com/20531316728/feed?fields=picture&limit=25&since=1367513845", 
     "next": "https://graph.facebook.com/20531316728/feed?fields=picture&limit=25&until=1349462557" 
    } 
} 

Nie zawiera on żadnych informacji o wymiarze zdjęciach w odpowiedzi API, które chciałbym mieć odpowiedni rozmiar zastępczy z mojego klienta korzystającego niczym Facebook Aplikacja na iOS.

Próbowałem dodać /facebook/feed?fields=picture,width,height, ale bez powodzenia w pobieraniu odpowiednich informacji.

Czy istnieje sposób na pobranie paramatu wysokości i szerokości zdjęć z samego interfejsu API?

Odpowiedz

1

Nie, interfejs API nie zwraca WSZYSTKICH wymiarów zdjęcia na podstawie kanału z pliku/page_id/tabeli danych lub strumienia.

wspominałem wszystko dlatego, co można zrobić, to:

SELECT post_id, created_time, actor_id, attachment, message FROM stream WHERE source_id=PAGE_ID AND created_time<now() LIMIT 50 

Jeśli typ post jest zdjęcie: enter image description here

Jeśli typ post jest film: enter image description here

Jeśli typ postu to początek połączenia z fbexternal (parametr wyodrębnienia w oraz h): enter image description here

Jeśli typ postu to łącze bez fbexternal (zdjęcie facebookowe), utknęliśmy tutaj!: enter image description here

Kod Prototype:

if attachment: 
    image_url = attachment.media[0].src 
    if image_url: 
     m = image_url.photo.images 
     if m: 
      if m.src == image_url: 
       image_width = m.width 
       image_height = m.height 
     else: #no dimensions info 
      if host by fbexternal: 
       #extract parameter w and h from https://fbexternal-a.akamaihd.net/safe_image.php?d=AQBhfbzbNudc_SE8&w=130&h=130&url=http%3A%2F%2F 
       image_width = 130 
       image_height = 130 
      else: 
       Stuck here, very hard to get extract photo id based on this url, a lot of work! 

Podsumowując, bardzo polecam, aby uzyskać szerokość i wysokość obrazu po pobierz zdjęcie. Na przykład PHP ma funkcję getimagesize, a Python ma bibliotekę Python Imaging Library (PIL).

+0

Dzięki, myślę, że nie ma mowy o pozostawieniu nieznanego typu "linku". Tak więc Graph API nie wydaje mi się, żebym mógł to odzyskać, będę musiał przejść z FQL w tym momencie. –

0

Nie jestem pewien, czy jest łatwiejszy sposób uzyskania szerokości i wysokości, których potrzebujesz, ale tutaj jest pewny, ale trochę rozwlekły sposób.

Podając przykład, identyfikator widoczny dla pierwszego obrazu "20531316728_10151883063741729" nie jest w rzeczywistości identyfikatorem obrazu. To na stanowisku, że obraz znajduje.

Co można zrobić, jest kwerendy dla tego postID

http://developers.facebook.com/tools/explorer?method=GET&path=20531316728_10151883063741729

to będzie wystawiać obraz na object_id 457846347622804 (nie szukaj, a zobaczysz co miałem na myśli). teraz wyszukujesz identyfikator tego zdjęcia, a otrzymasz swoją szerokość i wysokość.

http://developers.facebook.com/tools/explorer?method=GET&path=457846347622804

Odtąd powinieneś być w stanie uzyskać współczynnik trzeba.

Jeśli ktoś ma elegancki sposób na zrobienie tego, chciałbym wiedzieć też.

+0

Nie, twój przykład działa tylko dla typu zdjęcia. Zarówno wideo, jak i typ łącza nie zwrócą identyfikatora obiektu. –

+0

Korekta: typ wideo może zwrócić object_id, jeśli jest to wideo na Facebooku, takie jak https://www.facebook.com/photo.php?v=10200642979948528. Jednak https://www.facebook.com/22707976849/posts/10151415452136850 nie zwróci obiektu id_obiektu. –

+0

Mówiłem o filmach z Facebooka i Facebooku, zakładając, że właśnie o to pytało. –

Powiązane problemy