मित्र लेखक यहाँ।
दरअसल, जैसा कि आपको संदेह था, समर्थन को ऑनलाइन करने से पहले उबंटू ऑनलाइन खातों में समर्थन की आवश्यकता है। दोस्तों आर्किटेक्चर हमारे लिए सभी प्राधिकरणों को करने और प्रबंधित करने के लिए UOA पर बहुत अधिक निर्भर करता है। मेरा पसंदीदा उदाहरण लिंक्डइन है, क्योंकि यह अब तक का एकमात्र प्रोटोकॉल है जिसमें समुदाय का योगदान था। यूओए प्लगइन ज्यादातर सिर्फ दो एक्सएमएल फाइलें हैं, साथ ही थोड़ा सा ऑटोकॉन्फ़ ट्रिक भी है, जो इस तरह दिखता है। (इस अंतर के लिए थोड़ा नीचे स्क्रॉल करें, जो स्पष्ट रूप से हर एक चीज को दिखाता है जिसे लिंक किए जाने के लिए काम करने के लिए आवश्यक है)।
एक बार जब आप अपने प्रोटोकॉल के लिए ऐसा ही कर लेते हैं, तो आपको lp: account-plugins के खिलाफ मर्ज का प्रस्ताव करना होगा और मार्डी की समीक्षा, अनुमोदन और मर्ज करना होगा। एक बार जब यह जगह हो जाती है, तो आप दोस्तों के प्लगइन को लिखना शुरू कर सकते हैं, जिसे पायथन 3 में लिखा जाएगा।
अब, एक प्रमुख, प्रमुख सुधार जो फ्रेंड्स ग्विबर पर पेश करता है, वह उपवर्गों का उपयोग है। मूल Gwibber कोड में, बिल्कुल उपवर्गों के साथ कुछ भी नहीं किया गया था, इसलिए हर नए प्रोटोकॉल प्लगइन निम्न-स्तरीय कार्यक्षमता के विभिन्न बिट्स की एक विशाल प्रतिलिपि और पेस्ट हैकजॉब था। दोस्तों को लागू करते समय, मैंने सुपरक्लास में आम कार्यक्षमता को निकालने के लिए बहुत सावधानी बरती, जिसे आसानी से उप-वर्ग और संशोधित किया जा सकता है। सुपरक्लास में काफी डॉकस्ट्रिंग्स भी हैं, जिन्हें आपको शुरू करने के लिए संदर्भित करना चाहिए। दुर्भाग्य से हमने अभी तक कहीं भी प्रकाशित करने के लिए स्फिंक्स की स्थापना नहीं की है, इसलिए आपको अभी के लिए कोड पढ़ना होगा।
कुछ महत्वपूर्ण बातों को ध्यान में रखना है कि आपकी कक्षा के नाम को उपयोग किए गए "प्रोवनाम" से मिलान करना होगा, केस-असंवेदनशील। इसलिए यदि आपने भविष्यवाणियां परिभाषित की हैं instagram, तो आपको फ़ाइल बनानी चाहिए protocols/instagram.py, और अपने पायथन वर्ग का नाम देना चाहिए Instagram।
वास्तव में कुछ भी करने के लिए आपके प्लगइन के लिए आपको जो दो सबसे महत्वपूर्ण विधियाँ लागू करनी हैं, उन्हें कहा जाता है _whoamiऔर receive। ये अच्छी तरह से आधारभूत में जुड़े हुए हैं (ऊपर लिंक किए गए हैं), लेकिन मूल रूप से _whoamiविधि को स्वचालित रूप से कहा जाएगा, और एक तानाशाही में पारित हो जाएगा जो पहले से ही पार्स किए गए JSON ब्लॉब का प्रतिनिधित्व करता है जो प्रमाणीकरण होने पर हमें सेवा द्वारा दिया गया था। यदि आप भाग्यशाली हैं, तो उस तानाशाह में आपका इंस्टाग्राम यूजरनेम, यूजर आईडी और प्रदर्शन नाम होगा, लेकिन यदि आपको उस जानकारी को इकट्ठा करने के लिए द्वितीयक एपीआई कॉल करने की आवश्यकता नहीं है। कृपया Facebook._whoamiएक प्रोटोकॉल के एक उदाहरण के लिए देखें जो सामने जानकारी प्रदान नहीं करता है और विधि के भीतर से अतिरिक्त एपीआई कॉल की आवश्यकता है, और देखेंTwitter._whoami एक प्रोटोकॉल के एक उदाहरण के लिए जिसने हमें उन सभी विवरणों को दिया जो हमें ठीक सामने चाहिए।
बाद में, receiveएपीआई कॉल करने के लिए विधि जिम्मेदार है जो नए संदेशों के लिए सेवा को प्रदूषित करती है। यह एक छोटा सा अधिक मुक्त रूप है, क्योंकि प्रत्येक REST API थोड़ा अलग है, इसलिए आपको यह पता लगाने के लिए वेबसाइट के एपीआई डॉक्स का उल्लेख करना चाहिए कि वास्तव में यहां क्या करना है। Http.py में हम प्रदान करते हैं Uploaderऔर Downloaderकक्षाएं जो REST API कॉल करना आसान बनाते हैं, और आपके लिए JSON सर्वर प्रतिक्रियाओं को पार्स भी कर सकते हैं। इन सुविधा वर्गों का उपयोग करना महत्वपूर्ण है क्योंकि वे लपेटते हैं libsoup, जो गनोम प्रॉक्सी सेटिंग्स को सम्मानित करने के लिए कॉन्फ़िगर किया गया है (आपको याद हो सकता है कि ग्वेबर्बर का प्रॉक्सी समर्थन हमेशा कितना अच्छा था, अच्छी तरह से हमने अब सब तय कर दिया है)।
एक बार जब आपको सर्वर से एपीआई प्रतिक्रिया मिल जाती है, तो आपको इसे हमारे डीमॉडेल में संग्रहीत करने की आवश्यकता होती है (जहां Gwibber ने आपके संदेशों को संग्रहीत करने के लिए एक sqlite db में डंप किए गए JSON बूँद का उपयोग किया है, हम एक DeMModel का उपयोग कर रहे हैं, जो मूल रूप से सिर्फ एक डेटाबेस है डीबस में राज्य साझा करता है, जिससे कई ग्राहकों के लिए संदेश डेटा को आसानी से प्रदर्शित करना आसान हो जाता है)। हम एक नया संदेश "प्रकाशन" संग्रहीत करने के कार्य को कहते हैं, और हम इसके लिए एक सुविधा विधि प्रदान करते हैं Base._publish। मूल रूप से आपको बस इतना करना है कि यहां खाली जगह भरनी है, सुनिश्चित करें कि जितनी संभव हो उतनी जानकारी भर दी जाए। _Publish के संभावित तर्क स्कीमा में परिभाषित किए गए हैं , और फिर आप मौजूदा प्लगइन्स को देखें कि वे इसे कैसे करते हैं।
एक बार जब आपने इसे दूर कर लिया, तो आपके पास इसे परखने में सक्षम होने के लिए पर्याप्त होना चाहिए। हम toolsडायरेक्ट्री ट्री के भीतर से अपना कोड चलाना आसान बनाने के लिए डायरेक्टरी में एक दो टूल प्रदान करते हैं , इसलिए आपको हर बार जब आप बदलाव करना चाहते हैं तो सिस्टम में इसे इंस्टॉल नहीं करना होगा। आपको जो करना चाहिए, वह स्रोत पेड़ के मूल में एक टर्मिनल, सीडी खोलें और चलाएं ./tools/debug_slave.py। DeeModel को जोड़ता है, और बस सब कुछ प्रदर्शित करता है कि यह करने के लिए होता है, तो आप संदेशों फिर स्रोत पेड़ की जड़ को लाइव प्रदर्शित होने के रूप में वे में आते हैं। फिर, एक दूसरे टर्मिनल में, सीडी देख सकते हैं, और चलाने के क्या करता है ./tools/debug_live.py instagram receiveऔर यह मैन्युअल रूप से Instagram.receive विधि को ट्रिगर करेगा और डिबगिंग आउटपुट का एक गुच्छा प्रदर्शित करेगा जो आपको बताता है कि यह क्या चल रहा है (आप कॉल के साथ अपना कोड छिड़क सकते हैंlog.debug("hi") यदि आप क्या होता है के बारे में और भी अधिक विवरण देखना चाहते हैं)।
ओह, और यदि आप अभी भी पढ़ रहे हैं, तो लिंक्डइन प्लगइन अभी तक ट्रंक में नहीं उतरा है, लेकिन आप अभी भी इसे यहां देख सकते हैं।
यदि आपके कोई अन्य प्रश्न हैं, तो मैं हमेशा #gwibber पर freenode में हूं, और मुझे यह भी दृढ़ता से महसूस होता है कि नया कोडबेस बहुत अधिक पठनीय और बेहतर दस्तावेज है, जो कि Gwibber के पास कभी भी था, इसलिए कृपया कोड पढ़ें और यह होना चाहिए ' उदाहरण के लिए सीखना बहुत मुश्किल नहीं है। फेसबुक और ट्विटर सबसे पूर्ण हैं।
दोस्तों में आपकी रुचि के लिए धन्यवाद!