ウィキペディアをサイトに接続します

現在、ほぼすべてのサイトに、Twitterサイトに移動したり、ページをブックマークしたりするためのボタンがあります。 しかし、何らかの理由で、素晴らしい人々や用語の名前の近くにウィキペディアのアイコンを見ることができる人はほとんどいません。



そのような機能をサイトにロードするのは不必要な人のように思えるかもしれませんが、それについてユーザーに尋ねる方がよいでしょう。 そのため、1つの新しいプロジェクトで、本の著者にウィキペディアへのリンクを提供することが提案されました。







アクティブなユーザーのみが「フィードバックを残す」ボタンをクリックして投票するとすれば、おそらく33票に10〜100を掛けることができます。



ウィキペディアAPIを扱ったので、ウィキペディアへのリンクの追加を可能な限り自動化するソリューションを提供したいと思います。





難しさ



有名人の名前または愛称である彼らを知っているので、これがまさに私たちが必要とする人であることを100%確信することは不可能です。 たとえば、WikipediaでIvanovのAlexander Ivanovへのリンクを提供する必要がある場合、同じデータを持っている人が数人いて、誰が私たちに合っているかを自動的に判断できません。 本や映画の名前と同じ状況。 たとえば、本に関する記事が必要ですが、ウィキペディアには映画に関する記事があります。 私の解決策は、Wikiを使用して検索クエリを実行し、より適切なものを選択することです。



API wiki



ウィキペディアには非常に強力なAPIがありますwww.mediawiki.org/wiki/API/en

すべてのパラメーターはここに記載されていますen.wikipedia.org/w/api.php(eng

必要な多くのパラメーターのうち



アクション -実行するアクション。 Action = opensearchの検索が必要です



検索 -私たちが探しているもの。 たとえば、「マスターとマルガリータ」

検索=%EC%E0%F1%F2%E5%F0%20%E8%20%EC%E0%F0%E3%E0%F0%E8%F2%E0



Prop-取得するページの特性。 ページに関する一般的な情報が必要です:タイトル、説明

小道具=情報



形式 -結果が返される形式。 検索にはxmlを使用します

format = xml



不適切 -どのような追加情報を受け取りたいか。 ウィキペディアのページへのリンクがまだ必要なので、

inprop = url



すべてのパラメーターを含む行全体は次のようになります

en.wikipedia.org/w/api.php?action=opensearch&search=%EC%E0%F1%F2%E5%F0%20%E8%20%EC%E0%F0%E3%E0%F0%E8%F2 %E0&prop = info&format = xml&inprop = url



ページデータを取得するphpの関数の例



<?

function get_wiki_url($title)

{

//

$fp = fsockopen( "ru.wikipedia.org" , 80, $errno, $errstr, 30);

if (!$fp) {

echo "$errstr ($errno)<br />\n" ;

} else {

$ out = "GET /w/api.php?action=opensearch&search=" .urlencode($title). "& prop=info&format=xml&inprop=url HTTP/1.1\r\n" ;

$ out .= "Host: ru.wikipedia.org\r\n" ;

// User-Agent.

$ out .= "User-Agent: MyCuteBot/0.1\r\n" ;

$ out .= "Connection: Close\r\n\r\n" ;

fwrite($fp, $ out );

$str = '' ;

// xml

while (!feof($fp)) {

$tmp_str = fgets($fp, 128);

if ($str != '' || substr($tmp_str,0,2)== '<?' )

$str .= $tmp_str;

}

fclose($fp);

//

$xml = simplexml_load_string($str);

return $xml->Section->Item;

}

}

$pages_data = get_wiki_url( " " );

?>




* This source code was highlighted with Source Code Highlighter .








完全なスクリプト



たぶん、すべての有名な名前や用語の横にウィキペディアへのリンクがあるときが来たのでしょうか?



All Articles