2013-05-10 9 views
7

Sto utilizzando Graph API per ottenere il post muro di una pagina fan.Graph API: recupero delle dimensioni delle immagini nel feed di pagina

Ho notato che l'app iOS di Facebook è in grado di determinare l'esatto rapporto per il segnaposto.

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" 
    } 
} 

Lì non contiene le informazioni di dimensione delle immagini nella risposta API, che mi piacerebbe avere una dimensione segnaposto corretta con il mio cliente personalizzato come il Facebook app per iOS

Ho provato ad aggiungere /facebook/feed?fields=picture,width,height ma senza fortuna nel recuperare le informazioni corrispondenti.

Esiste un modo per recuperare il parametro altezza e larghezza dell'immagine dall'API stesso?

risposta

1

No, l'API non restituisce TUTTE le dimensioni dell'immagine basate sul feed post di/page_id/feed o della tabella di flusso.

ho detto tutto perché, che cosa si può fare è:

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

Se il tipo di post è photo: enter image description here

Se il tipo di post è il video: enter image description here

Se il il tipo di post è link start con fbexternal (parametro estratto w eh): enter image description here

Se il tipo di post è link senza fbexternal (foto di facebook), abbiamo bloccato qui!: enter image description here

Codice Prototipo:

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! 

In conclusione, vi consiglio vivamente di ottenere la larghezza e l'altezza dell'immagine dopo il download di foto. Ad esempio, PHP ha funzione getimagesize e python ha Python Imaging Library (PIL).

+0

Grazie, penso di essere ok a lasciare il tipo "link" sconosciuto. Quindi l'API Graph non mi sembra un modo per recuperarla, e avrò tempo con FQL. –

0

Non sono sicuro che ci sia un modo più semplice per ottenere la larghezza e l'altezza di cui hai bisogno, ma qui c'è un modo sicuro ma piuttosto prolisso.

Prendendo il tuo esempio, l'ID che vedi per la prima immagine "20531316728_10151883063741729" non è in realtà l'ID per l'immagine. E 'per il posto che il quadro è in.

Cosa si può fare, è query per che postID

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

allora esporrà del quadro object_id 457.846.347.622.804 (fare una ricerca e vedrete ciò che intendo). ora esegui una query per l'ID dell'immagine e avrai la larghezza e l'altezza servite.

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

Da allora in poi si dovrebbe essere in grado di ottenere il rapporto di cui avete bisogno.

Se qualcuno ha un modo elegante per fare questo, mi piacerebbe anche saperlo.

+0

No, l'esempio funziona solo per il tipo di foto. Sia il video che il tipo di collegamento non restituiscono l'ID oggetto. Correzione –

+0

: il tipo di video può restituire object_id se è un video di Facebook, come https://www.facebook.com/photo.php?v=10200642979948528. Tuttavia, https://www.facebook.com/22707976849/posts/10151415452136850 non restituisce object_id. –

+0

Stavo parlando di foto di facebook e video di facebook, presumo che sia quello che la domanda stava ponendo. –

Problemi correlati