インフォボックスからウィキペディアの画像へのリンクを取得するにはどうすればよいですか?
-
06-07-2019 - |
質問
ウィキペディアの情報ボックスを解析していますが、一部の情報ボックスには画像フィールドがあります。これらのフィールドには、ウィキペディアのどこかにある画像ファイルの名前が格納されています。ただし、実際のリンクではなく、ファイルの名前のみが含まれています。
実際のライブ情報ボックスの画像のリンクを確認しましたが、リンクは1つのソースからのものではないようですが、ソースは異なります。インフォボックスエントリの画像の名前しか持っていないことを考慮して、Wikipediaの画像にハイパーリンクするにはどうすればよいですか。
解決
http://en.wikipedia.org/wiki/File:filename.jpg
を試しましたか?ファイルがウィキメディアコモンズにある場合でも、上記のURLは引き続き機能します。
編集:画像をホットリンクしようとしていますか?その場合、ウィキペディアはホットリンクを禁止します。 http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking
2019年1月10日更新:ホットリンクは今許可:
ホットリンクまたはInstantCommons :でファイルを直接使用することができます MediaWiki wikiを設定して、別のWebサイト内のコモンズ InstantCommons、...
他のヒント
ウィキペディアのファイルパスにある奇妙な名前のコンポーネントによると、 md5を実行してURLを確認する必要があります。ウィキペディアでホットリンクが許可されるようになりました。
utf-8でエンコードされた $ name
を使用している場合、以下を実行する必要があります。
$filename = replace($name, ' ', '_');
$digest = md5($filename);
$folder = $digest[0] . '/' . $digest[0] . $digest[1] . '/' . urlencode($filename);
$url = 'http://upload.wikimedia.org/wikipedia/commons/' . $folder;
同じことがサムネイルにも使用できます。
これは、有効なPHPの回答のJavaScript実装です(Yuri Baburovの功績):
var name = "filename.jpg";
var filename = name.replace(/ /g, "_");
var digest = md5(filename);
var folder = digest[0] + '/' + digest[0] + digest[1] + '/' + encodeURIComponent(filename);
var url = 'http://upload.wikimedia.org/wikipedia/commons/' + folder;
外部 md5()
関数を含める必要があることに注意してください( https:// github.com/blueimp/JavaScript-MD5 ); JSにネイティブではありません。
Special:FilePathを使用して、Wikipediaのファイルをホットリンクする簡単な方法が追加されましたページ。したがって、英語版ウィキペディアでファイルExample.jpgをリンクする場合は、 https://en.wikipedia.org/wiki/Special:FilePath/Example.jpg
を使用できます。
類似のリンクは、他のウィキメディア財団サイト(例:ウィキメディアコモンズ)でも機能するはずです。
ホットリンクに関する詳細と推奨事項は、Wikimediaの Commons:Reusing_content_outside_Wikimedia にあります。 a>。
URLプレフィックスは次のようにする必要があることに気付きました:
http://upload.wikimedia.org/wikipedia/en/thumb/
さらに、フォルダーには、プレフィックスとして指定されたサイズのファイルの繰り返し名が含まれている必要があります。
http://upload.wikimedia.org/wikipedia/en/thumb/d/dd/Ruins-imperial-complex-milan-.jpg/220px-Ruins-imperial-complex-milan-.jpg
$filename = replace($name, ' ', '_');
$digest = md5($filename);
$urlencfile = urlencode($filename)
$imgwidth = 220
$folder = $digest[0] . '/' . $digest[0] . $digest[1] . '/' . $urlencfile . '/' . $imgwidth . 'px-' . $urlencfile;
$url = 'http://upload.wikimedia.org/wikipedia/en/thumb/' . $folder;