Få Antal Pinterest Pins i PHP

Eftersom pinterest har upprepade gånger givit ett datum och sedan misslyckats med att släppa deras API, bestämde jag mig för att ta saken i mina egna händer. Observera att detta inte är det perfekta sättet att göra saker, men för nu fungerar det. Jag ville bygga en social graf på våra mest populära sidor så att vi kunde veta vilken typ av bilder och innehåll som resonerade med våra tittare, så jag kom upp med skriptet nedan och slogs sedan igenom varje webbadress i vår databas och fick uppgifterna jag behövs.

Jag borrade ner i iframe som skapades av en pinterest-knappsignal och kom fram med den här url:
http://pinit-cdn.pinterest.com/pinit.html?url=http://www.allrecipes.com
Jo det var lätt, numret visas där i sin egen div id CountBubble. Så jag curl'ed det och använde php biblioteket simple_html_dom för att analysera. Det höll dock tillbaka 0 men. Hoppsan! Det numret ändras med javascript efter att sidan är laddad. Ska ha tittat på källan istället för att inspektera elementet. Så jag ser källan istället och det finns det här fina kodstycke som bara sitter där för mitt programmeringsnöje.

 snode.setAttribute ('src', '//api.pinterest.com/v1/urls/count.json?callback=receiveCount&url='+targetUrl); 

Därefter samlar jag följande URL kommer troligen att dra data som jag behöver,
http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=http://www.allrecipes.com
som visar:

 receiveCount ({"count": 1148, "url": "http://www.allrecipes.com"}) 

Så, dess json-data inslagna i ett funktionssamtal från API-en har de inte släppt offentligt än. Så passande. Nedan är den lilla koden du behöver för att göra detta arbete i PHP. Du måste ha cURL aktiverat på din server.

 $ pinurl = "http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // html genom en funktion som kallar cURL $ html = str_replace ("receiveCount (", "", $ html); // avlägsna funktionssamtalet data är inslaget i $ html = substr ($ html, -1), $ pinterest = json_decode ($ html); // konvertera från json till php array $ pincount = $ pinterest-> räkna; echo $ pincount; // det finns talfunktionen pull_html ($ url) {$ ch = curl_init curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 10); $ html = curl_exec ($ ch); curl_close ($ ch); returnera $ html;} 

Som du kan se drar vi data med curl och raderar sedan det funktionssamtal som sitter runt json-data. Då handlar det bara om att använda json_decode för att göra json-data till en php-array. Voila! Helt klar. Jag har kört runt 3.000 webbadresser hittills och data har returnerat inget problem. Det var lite långsamt ibland, inte säkert om genom design eller genom. Det drar fortfarande och lagrar data när jag skriver det här. Jag är säker på en viss tid kommer det att finnas någon form av räntesänkning, men jag har inte stött på några väggar hittills. Kanske är det inte ens dolda från programmerare, men så vitt jag vet finns det inget officiellt stöd om du inte är en av de få utgivare som de har valt att arbeta med.

Se Även