Siden pinterest har gjentatte ganger gitt en dato og deretter ikke klarte å frigjøre API, bestemte jeg meg for å ta saken i egne hender. Vær oppmerksom på at dette ikke er den ideelle måten å gjøre ting på, men for nå fungerer det. Jeg ønsket å bygge en sosial graf på våre mest populære sider, slik at vi kunne vite hva slags bilder og innhold som var resonerende med våre seere, så jeg kom opp med skriptet nedenfor og deretter slenget gjennom hver nettadresse i databasen vår og fikk dataene jeg behov for.
Jeg boret ned i iframe som ble opprettet av en pinterest-knapp, og kom opp med denne nettadressen:
http://pinit-cdn.pinterest.com/pinit.html?url=http://www.allrecipes.com
Vel det var lett, tallet vises her inne i sin egen div id CountBubble. Så jeg curl'ed det, og brukte simple_html_dom php biblioteket til å analysere. Det holdt tilbake 0 skjønt. Uff! Det nummeret endres med javascript etter at siden er lastet inn. Bør ha sett kilden i stedet for å inspisere elementet. Så jeg ser kilden i stedet, og det er dette fine koden, bare sitter der for programmeringsgleden.
snode.setAttribute ('src', '//api.pinterest.com/v1/urls/count.json?callback=receiveCount&url='+targetUrl);
Fra det samler jeg følgende nettadresse vil trolig trekke dataene jeg trenger,
http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=http://www.allrecipes.com
som viser:
receiveCount ({"count": 1148, "url": "http://www.allrecipes.com"})
Så, sin json data innpakket i et funksjonsanrop fra APIen de ikke har gitt ut offentlig ennå. Hvor praktisk. Nedenfor er den lille koden du trenger for å gjøre dette arbeidet i PHP. Du må ha CURL aktivert på serveren din.
$ pinurl = "http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl = $ brandurl; $ html = pull_html ($ pinurl); // html gjennom en funksjon som kaller cURL $ html = str_replace ("receiveCount (", "" $ html); // fjern funksjonssamtalen dataene pakkes inn i $ html = substr ($ html, -1); $ pinterest = json_decode ($ html); // konvertere fra json til php array $ pincount = $ pinterest-> telle; echo $ pincount; // det er tallfunksjonen pull_html ($ url) {$ ch = curl_init (), curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 10); $ html = curl_exec ($ ch); curl_close $ html;}
Som du ser, trekker vi dataene med krøll og fjerner deretter funksjonssamtalen som er pakket rundt json-dataene. Da er det bare et spørsmål om å bruke json_decode for å slå json dataene inn i en php array. Voila! Ferdig. Jeg har kjørt rundt 3.000 nettadresser så langt, og dataene har ikke returnert noe problem. Det var litt treg til tider, ikke sikker på om ved design eller ved. Det drar fortsatt og lagrer dataene mens jeg skriver dette. Jeg er sikker på at det til en viss grad vil være begrensende, men jeg har ikke kommet inn i noen vegger så langt. Kanskje dette ikke engang skal skjules fra programmerere, men så vidt jeg vet, er det ingen offisiell støtte med mindre du er en av de få utgiverne de har valgt å jobbe med.