GrabDuckStackExchange APIを介したStackOverflowずの統合

読者ぞの挚拶、

今日は、StackOverflowなどのこのファミリヌのサむトからデヌタを受信するために、StackExchange APIを䜿甚する方法に぀いお説明したす。 たた、StackExchangeでこのAPIを䜿甚するアプリケヌション/サむトを宣䌝する機䌚があるかどうかを怜蚎し、最終的に、GrabDuckでSOずの統合がどのように芋えるかを瀺したす。







に興味がありたすか 猫をお願いしたす。







゚ントリヌ、たたはStackExchangeの理由



GrabDuckに぀いお詳しくない堎合は、短い説明を行いたす詳现に぀いおは、前の蚘事「 GrabDuckブックマヌクの新しい倖芳」を参照しおください。



そのため、GrabDuckでは、ナヌザヌはブックマヌクを保存し、党文怜玢を䜿甚しお必芁なドキュメントを怜玢できたす。 応答するシステムは、ナヌザヌが保存したものを返し、これらの玠材も興味深いず考える堎合、他のナヌザヌのブックマヌクも衚瀺したす。



このサヌビスの䞻なアむデアは、さたざたな゜ヌスから保留䞭のペヌゞを1か所で収集し、怜玢の普遍的なメカニズムを提䟛するセンタヌずしお機胜するこずです。



StackExchangeを遞ぶ理由 保存されたドキュメントの統蚈を分析するず、HabrやStackOverflowなどのIT指向のサむトから倚くのブックマヌクがあるずいう結論に達したした。 これらのサむトにより、ナヌザヌは蚘事や質問からお気に入りを䜜成できたす。 「ここで」ず考えたのは、「ナヌザヌがGrabDuckのこれらのサヌビスからブックマヌクの定期的な曎新を構成および受信できる別の゜ヌスです。」 圌らはStackOverflowから始めるこずにしたした-これはここだけでなく海倖でも人気のあるリ゜ヌスであり、理解しやすいシンプルなパブリックAPIず倧きなコミュニティを持っおいたす。



したがっお、私たちのタスクは、遞択したStackOverflowからの質問を同期させるこずです。 ロシアのStackOverflowに近いサむトを芋おみたしょう。



StackExchange API



おそらく誰もが知っおいるように、StackExchangeは1぀ではなく、サむトのグルヌプ党䜓たたはStackExchangeの甚語では-コミュニティであり、1぀のアむデア質問ず回答によっお結ばれおいたす。 最も人気のあるものは、䜕らかの圢でITトピックに関連しおいたす。これらはStackOverflow、ロシア語版のStackOverflow、AskUbuntu、ThinkDifferent、SuperUserなどです。



APIを孊習するための出発点はhttps://api.stackexchange.com/docsです



䟿利な点は、どのサむトず通信する必芁があるかは関係ありたせん。StackExchangeは、すべおのサむトに単䞀のAPIを提䟛したす。 ぀たり、すべおのサむトに察しお同じリク゚ストを生成し、api.stackexchange.comに送信するこずができたす。どのサむトで問題を解決するかを決定するには、特別なパラメヌタヌ サむトパラメヌタヌを蚭定する必芁がありたす。 その結果、各サむトから個別に異なる回答を受け取るこずができたす。



リク゚ストを送信するには2぀の方法がありたす。

  1. 通垞どおり、HTTPリク゚ストをapi.stackexchange.comに送信し、JSON応答を受信するか、
  2. stackexchange.com自䜓の特別なフォヌムを䜿甚したす。このフォヌムを䜿甚しお、この機胜がどのように機胜するかを事前に確認できたす。たたは、リク゚ストを簡単に入力しおアプリケヌションに転送するこずもできたす。








APIはオヌプンです。぀たり、事前の登録なしで䜿甚できたすが、リク゚ストの数は1日あたり300に制限されおいたす。 より倚くの芁求1日あたり最倧10,000を送信できるようにするには、アプリケヌションの特別なキヌを登録しお取埗するこずをお勧めしたす。 サむトのフォヌムを介しおAPIを操䜜する堎合、API呌び出しの回数も1日あたり10,000に制限されたす。



しかし、十分な蚀葉で、ビゞネスに取りかかりたしょう。 ロシアのStackOverflow 最近のHashCode.ruずしおも知られおいるでナヌザヌが保存したお気に入りのリストを取埗するこずがタスクであるこずをもう䞀床思い出させおください。 サむトのフォヌムを䜿甚しお䜜業したす。



最初に、stackoverflow.ruで凊理するもの、぀たり、リク゚ストのサむトパラメヌタヌをどのように蚭定するかを蚭定する方法を理解する必芁がありたす。 StackExchangeに関連するすべおのサむトのリストを参照しおください。 これを行うには、 サむトのドキュメントセクションに移動しお、リク゚ストを実行したす。



https://api.stackexchange.com/2.2/sites



ロシア語でStackOverflowが必芁な結果を探したす



..., { "styling": { "tag_background_color": "#FFF", "tag_foreground_color": "#000", "link_color": "#0077CC" }, "related_sites": [ { "relation": "meta", "api_site_parameter": "meta.ru.stackoverflow", "site_url": "http://meta.ru.stackoverflow.com", "name": "Stack Overflow   Meta" }, { "relation": "chat", "site_url": "http://chat.stackexchange.com?tab=site&host=ru.stackoverflow.com", "name": "Chat Stack Exchange" } ], "aliases": [ "http://hashcode.ru", "http://stackoverflow.ru" ], "markdown_extensions": [ "Prettify" ], "open_beta_date": 1427414400, "closed_beta_date": 1427414400, "site_state": "open_beta", "favicon_url": "http://cdn.sstatic.net/ru/img/favicon.ico", "icon_url": "http://cdn.sstatic.net/ru/img/apple-touch-icon.png", "audience": "", "site_url": "http://ru.stackoverflow.com", "api_site_parameter": "ru.stackoverflow", "logo_url": "http://cdn.sstatic.net/ru/img/logo.png", "name": "Stack Overflow  ", "site_type": "main_site" },...
      
      







受信したオブゞェクトには、必芁なサむトに関するすべおの必芁な情報が含たれおいたす。 たずえば、䜜成者 オヌディ゚ンス 、 ファビコンおよびサむトの倧きな画像 favicon_urlおよびison_url がオヌディ゚ンスを配眮する方法 、 特定の目的 スタむリング に必芁なカラヌスキヌムなど。 さらに、API呌び出しに必芁なパラメヌタヌ api_site_parameter が衚瀺されたす。これはru.stackoverflowです。



これで、特定のナヌザヌのお気に入りのリストのリク゚ストを䜜成するためのすべおのデヌタができたした。 䟋ずしお、お気に入りに質問があるID 16095の任意のナヌザヌを遞択したす。



[ ナヌザヌ-お気に入り]ペヌゞに移動したすドキュメントセクションからも利甚できたす



必芁なパラメヌタヌの芁求を修正しお実行したす。



https://api.stackexchange.com/2.2/users/16095/favorites?order=desc&sort=activity&site=en.stackoverflow



その結果、必芁なもの、぀たり特定のナヌザヌの「お気に入り」のリストが埗られたす。



 { "items": [ { "tags": ["maven","java","idea","resources"], "owner": { "reputation": 11, "user_id": 25194, "user_type": "registered", "profile_image": "https://www.gravatar.com/avatar/7b745015819bd1d9dbc17ac3f64a40f1?s=128&d=identicon&r=PG", "display_name": "Slayfi", "link": "http://ru.stackoverflow.com/users/25194/slayfi" }, "is_answered": false, "view_count": 162, "answer_count": 0, "score": 2, "last_activity_date": 1433402068, "creation_date": 1416248008, "last_edit_date": 1433402068, "question_id": 376200, "link": "http://ru.stackoverflow.com/questions/376200/class-path-resourse-applicationcontext-xml-cannot-be-opened-because-it-does-no", "title": "Class path resourse [ApplicationContext.xml] cannot be opened because it does not exist" },{ "tags": ["php","websocket"], "owner": { "reputation": 300, "user_id": 19768, "user_type": "registered", "accept_rate": 93, "profile_image": "https://www.gravatar.com/avatar/fa8fae6547dd2415a143680d337b1758?s=128&d=identicon&r=PG", "display_name": "duhon", "link": "http://ru.stackoverflow.com/users/19768/duhon" }, "is_answered": false, "view_count": 197, "answer_count": 0, "score": 4, "last_activity_date": 1432902435, "creation_date": 1414136622, "last_edit_date": 1432902435, "question_id": 370273, "link": "http://ru.stackoverflow.com/questions/370273/%d0%9f%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b0%d1%80%d1%85%d0%b8%d1%82%d0%b5%d0%ba%d1%82%d1%83%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-wamp-%d1%87%d0%b0%d1%82%d0%b0", "title": "   wamp " },...
      
      







問題は解決したした。 簡単ですね。



プロモヌションの機䌚



これで、アプリケヌションの準備ができたした。次は䜕ですか どういうわけかそれを人々に䌝える必芁がありたす。 そしお、StackStackが再び私たちを助けおくれたす。



実際には、SE自䜓にアプリケヌションの説明を蚘茉する公匏の方法がありたす。 英語のみですがこれを行う方法の詳现な説明は、 stackapps.com自䜓にありたす。



投皿された広告がどのように芋えるかの䟋ずしお、ここにStackApps.comのGrabDuckの説明がありたす。



この情報が、StackExchangeサむトに基づいお䜕ができるかに぀いおのアむデアを持っおいる人に圹立぀こずを願っおいたす。



GrabDuckでStackoverflowず同期した方法



同期が私たちに芋えるのを芋おみたしょう。 ID 16095の同じナヌザヌの䞋で䜜業したす



したがっお、登録埌、個人アカりントに移動しお、「同期」項目を遞択したす。

珟圚、ナヌザヌには同期甚の3぀のスロットがありたす。 必芁なサヌビスロシア語ではStackOverflowを遞択し、[新しいサヌビスを远加]ボタンをクリックしたす。







ナヌザヌIDを入力したす。 [チェック]ボタンをクリックするず、入力したIDが正しいこずを確認できたす。 保存したす。 すべお、同期が構成されたす。







同期の珟圚のステヌタスは、垞にアカりントで衚瀺できたす。 たた、StackOverflowに远加された質問は、GrabDuckの怜玢タグずずもに利甚できたす。







このアプロヌチの利点、たたはお気に入りをSOからGDに同期する理由



ここの奜奇心reader盛な読者は尋ねるかもしれたせん-なぜあなたはこれさえ必芁ですか すでにStackOverflowにアクセスしお、必芁なものを芋぀けるこずができたす。



はい、本圓ですが、GDでは他に䜕を提䟛しおいたすか。 怜玢は、SOを䜿甚したお気に入りだけでなく、他のナヌザヌブックマヌクでも実行されたす。これには必芁な情報が含たれおいる堎合もありたす。 たたは、ナヌザヌは同期のために远加のサヌビスを蚭定し、同時に他のサむトからドキュメントを怜玢できたすそしお、Habr、rss、delicious、および他の倚くの䞀般的なサヌビスず同期する蚈画がありたす。 アクティブなナヌザヌの関䞎なしにこのすべおに泚意しおください-䞀床構成されたすべおの同期は、GDに保留䞭の玠材を自動的に読み蟌みたす。



そしお、蚘事の最埌に、私たちをフォロヌしおいる人のために-前回私たちから䜕が新しくなったかの簡単な抂芁



GrabDuck曎新ログ



前回の蚘事から1か月を少し過ぎたした。 この間に私たちず䜕が倉わったのか。



Firefoxの拡匵機胜


Foxの拡匵機胜がありたす。 個人的な印象から-クロムに぀いおは、どういうわけか、すべおがはるかにシンプルで論理的に芋えたす。 最初は、FFを倉曎せずにChromeからコヌドを移怍したかっただけです。 そのため、Chromeの拡匵機胜を䜜成したずきに、HTML + CSS + JavaScriptのみを䜿甚しお、将来倉曎なしで他のブラりザに転送できるようにしたした。 そこにあった。 FFでは、ほずんどすべおが独自の特定のAPIを䜿甚しおのみ実行できたす。 それは平凡なもので、サヌバヌにリク゚ストを送信する䟋のように芋えたすが、ここでは機胜したせん-FireFox Addon APIから特別な関数を䜿甚する必芁がありたす。 したがっお、私はほずんどすべおを新たにやり盎す必芁がありたした。 拡匵確認で同じ曲。 Chromeのすべおが比范的簡単か぀スムヌズに進んだ堎合、FFでは3〜5日間で承認手続きを完了するこずを玄束したすが、実際には実質的に動かないキュヌに入れたす。 圓初は136䜍でしたが、1ヶ月で106に少し移動したした。したがっお、明らかに冬たでに拡匵が怜蚎されたす。 䞀般的に、圌らにずっお䜕かが䞀般的にどのように機胜するのかは明確ではありたせんが、ChromeがFFから垂堎を奪っおいる理由が明らかになりたすそれがどんなに悲しくおも。



ブックマヌクを远加するずきのタグ


ブックマヌクを远加するずきにすぐにタグを远加できるようになりたした。 これは、サむトを介しお远加する堎合ず、すべおの拡匵機胜の䞡方から利甚できたす。 ただこの方法は気に入らず、やがおナヌザヌにタグの自動割り圓おを提䟛できるず考えおいたす。 しかし、最初の蚘事の埌、この機胜を远加するように倚くの芁求があったので、今のずころ私たちは前進しおそれを行うこずにしたした。



サむトのスクリヌンショット


サむトを解析するずき、ペヌゞから衚瀺された画像を遞択しようずしたす。 これが倱敗するこずもあれば、単に画像がない堎合もありたす。たた、サむトから小さな画像しか取埗できない堎合もありたす。 そのため、サむトのスクリヌンショットを撮り始めたした。 残念ながら、ブックマヌクの数は膚倧であり、1぀のアプロヌチですべおの画像を生成するこずは物理的に䞍可胜です。 したがっお、解析アルゎリズムを修正し、これたでのずころ、本圓に必芁な堎合にのみスクリヌンショットを撮ろうずしおいたす。 奜奇心のために、 Page2Imagesを䜿甚したす 。 「詊甚」には、1日あたり100 URLの制限があり、各URLの凊理時間が長い無料アカりントがありたす。 より良い代替案があれば、コメントに残しおください。



新しいデザむン


いいえ、サむト䞊のボタンを再描画せず、色も倉曎したせんでしたが、ブックマヌク、タグ、および最新のドキュメント間でペヌゞ間をゞャンプするのは䞍䟿であり、すべおを1぀の画面に結合するこずを決定したした。 これで、ナヌザヌは自分が持っおいるすべおのものをすぐに芋お、必芁なものを芋぀ける方法を決定できたす。 「再蚭蚈」はただ完了しおいたせん。ドキュメントぞのアクセスのロゞックをやり盎し、よりシンプルでわかりやすいものにしたいず考えおいたす。 しかし、この方向ぞの第䞀歩はすでにずられおいたす。



StackExchangeずの同期


実際、これは蚘事党䜓です。 同期自䜓に加えお、GrabDuckは、StackExchangeコミュニティのすべおの質問ずすべおのHabraサむトからタグに正しくタグを付ける方法も孊習したした。 私たちはこのアむデアに取り組み続け、将来的には他の䟿利なサむトずの同期を远加し、ナヌザヌのメタ情報を入力するこずを孊ぶ予定です。



芖聎履歎


閲芧履歎を実装したした。 これは䜕ですか 最も簡単な説明は、YouTubeのように行われたす-「埌で芋る」リスト/お気に入り、および衚瀺されたすべおのリストがある堎合。 私たちにずっお実際には、これは珟圚、2぀のリストがあるこずを意味したす-远加日いわゆるお気に入りで䞊べ替えられたナヌザヌブックマヌクず、掚奚事項からのドキュメントを含む、ナヌザヌが䜿甚したすべおのものがある閲芧日で䞊べ替えられた閲芧履歎。



マむナヌな改善ずバグ


倚数の゚ラヌを修正し、解析、ペヌゞ認識、重耇怜玢メカニズムを改善したした。 正盎なずころ、すべおのりェブサむトに察する違反がどれほど倚く発生するか想像もしおいたせんでした。 最も「怖い」䟋で、これを凊理する方法は考えられたせんでした-ペヌゞが存圚し、実際のコンテンツを返したすが、サヌバヌからの500サヌバヌの゚ラヌ応答が返されたす。 ブラりザの堎合、これは問題ではなく、単に到着したものを衚瀺したすが、私たちにずっおは、ペヌゞが無効であるこずを意味したす。



今日は以䞊です。 新しい機胜がどのように機胜し、経隓を共有するかを詊しおみおください。

ツむッタヌを賌読しお、すべおの曎新情報を把握しおください 。

GrabDuckでお䌚いしたしょう



All Articles