如何从信息框中获取维基百科上的图像链接?

时间:2009-06-22 09:50:10

标签: php wikipedia imagesource wikimedia-commons

我正在解析维基百科信息框,我注意到一些信息框有图像字段 - 这些字段包含维基百科藏匿在某处的图像文件的名称。但是它们只是包含文件的名称而不是实际的链接。

我检查了真实的实时信息框中图像的链接,链接似乎不是来自一个来源,但来源各不相同。我怎么能超链接到维基百科上的图像,因为我只有信息框条目中的图像名称。

5 个答案:

答案 0 :(得分:12)

根据What are the strangely named components in Wikipedia file paths,您需要运行md5才能找到网址。现在维基百科允许热链接,所以:

如果您使用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;

同样可以用于缩略图。

答案 1 :(得分:2)

这是一个有效的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的原生。

答案 2 :(得分:2)

现在有一种更简单的方法可以使用Special:FilePath页面对维基百科上的文件进行热链接。因此,如果要链接英语维基百科上的文件Example.jpg,可以使用https://en.wikipedia.org/wiki/Special:FilePath/Example.jpg

类似的链接应该适用于其他维基媒体基金会网站(例如维基媒体共享)。

有关热链接的详细信息和建议可以在Wikimedia的Commons:Reusing_content_outside_Wikimedia上找到。

答案 3 :(得分:0)

你试过http://en.wikipedia.org/wiki/File:filename.jpg吗?即使这些文件位于维基共享资源上,上述网址仍应有效。

编辑:您是否尝试将图片热链接?如果是这样,维基百科禁止热链接。 http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking

更新2010年1月10日:热链接为now permitted

  

Hotlinking或InstantCommons :可以直接使用文件   通过设置MediaWiki wiki,在另一个网站内的Commons   InstantCommons,......

答案 4 :(得分:0)

我注意到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;