PHP में Pinterest पिन की संख्या प्राप्त करना

चूंकि चिड़ियाघर ने बार-बार एक तिथि दी है और उसके बाद बाद में अपनी एपीआई जारी करने में असफल रहा, इसलिए मैंने इस मामले को अपने हाथों में लेने का फैसला किया। कृपया ध्यान दें कि यह चीजों को करने का आदर्श तरीका नहीं है, लेकिन, अब यह काम करता है। मैं अपने सबसे लोकप्रिय पृष्ठों का एक सामाजिक ग्राफ बनाना चाहता था ताकि हम जान सकें कि हमारे दर्शकों के साथ किस तरह की तस्वीरें और सामग्री गूंज रही थी, इसलिए मैं नीचे लिपि के साथ आया और फिर हमारे डेटाबेस में प्रत्येक यूआरएल के माध्यम से looped और डेटा मिला जरूरत है।

मैं आईफ्रेम में ड्रिल किया गया था जो एक पिन रुचि बटन कॉलआउट द्वारा बनाया गया था और इस यूआरएल के साथ आया था:
http://pinit-cdn.pinterest.com/pinit.html?url=http://www.allrecipes.com
वैसे यह आसान था, संख्या अपने स्वयं के डीवी आईडी काउंटरबबल में वहां प्रदर्शित होती है। तो मैंने इसे curled, और सरल_html_dom PHP पुस्तकालय का प्रयोग पार्स करने के लिए किया। हालांकि यह 0 लौट रहा है। ओह! पेज लोड होने के बाद जावास्क्रिप्ट के साथ यह संख्या बदल दी गई है। तत्व का निरीक्षण करने के बजाय स्रोत को देखना चाहिए था। तो मैं इसके बजाय स्रोत को देखता हूं और कोडिंग का यह अच्छा टुकड़ा बस मेरे प्रोग्रामिंग सुख के लिए वहां बैठा है।

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

उस से, मैं निम्नलिखित यूआरएल इकट्ठा करता हूं शायद मुझे आवश्यक डेटा खींच लेगा,
http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=http://www.allrecipes.com
जो प्रदर्शित करता है:

 प्राप्त करेंउंट ({"गिनती": 1148, "यूआरएल": "http://www.allrecipes.com"}) 

इसलिए, एपीआई से फ़ंक्शन कॉल में लिपटा गया उसका जेसन डेटा उन्होंने सार्वजनिक रूप से अभी तक जारी नहीं किया है। कितना सुविधाजनक। PHP में यह काम करने के लिए आपको आवश्यक कोड का थोड़ा सा नीचे दिया गया है। आपके सर्वर पर कर्ल सक्षम होना चाहिए।

 $ pinurl = "http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl। = $ brandurl; $ html = pull_html ($ pinurl); // एक फंक्शन के माध्यम से एचटीएमएल प्राप्त करें जो curl $ html = str_replace ("getCount (", "", $ html) कहता है; // फ़ंक्शन कॉल को हटाएं डेटा को HTML = substr ($ html, "" में लपेटा गया है, -1); $ pinterest = json_decode ($ html); // json से php array $ pincount = $ pinterest-> गिनती; echo $ pincount; // वहाँ संख्या फ़ंक्शन 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 ($ ch); वापसी $ एचटीएमएल;} 

जैसा कि आप देख सकते हैं, हम डेटा को कर्ल से खींचते हैं और फिर जेसन डेटा के चारों ओर लिपटे फ़ंक्शन कॉल को बाहर निकाल देते हैं। फिर यह जेसन डेटा को एक php सरणी में बदलने के लिए json_decode का उपयोग करने का मामला है। देखा! सब कुछ कर दिया। मैंने अब तक लगभग 3, 000 यूआरएल चलाए हैं और डेटा में कोई समस्या नहीं आई है। यह कभी-कभी थोड़ा धीमा था, सुनिश्चित नहीं है कि डिजाइन या द्वारा। जब भी मैं इसे टाइप करता हूं तब भी यह डेटा खींच रहा है और संग्रहीत कर रहा है। मुझे यकीन है कि किसी बिंदु पर कुछ प्रकार की दर सीमित होगी, लेकिन अब तक मैंने किसी भी दीवार में भाग नहीं लिया है। हो सकता है कि यह प्रोग्रामर से छिपी न हो, लेकिन जहां तक ​​मुझे पता है, तब तक कोई आधिकारिक समर्थन नहीं है जब तक कि आप उन कुछ प्रकाशकों में से एक नहीं हैं जिन्हें उन्होंने काम करने के लिए चुना है।

यह भी देखना