5

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

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

4

5 回答 5

12

根据什么是维基百科文件路径中的奇怪命名组件,您需要运行 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;

同样可以用于缩略图。

于 2010-12-21T11:44:55.490 回答
4

这是一个有效的 PHP 答案的 JavaScript 实现(感谢 Yuri Babrov):

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 原生的。

于 2015-10-26T11:53:07.007 回答
3

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

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

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

于 2017-05-21T17:09:33.447 回答
0

你试过http://en.wikipedia.org/wiki/File:filename.jpg吗?即使文件位于 Wikimedia Commons,上述 URL 仍然可以使用。

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

2019 年 1 月 10 日更新:现在允许热链接:

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

于 2009-06-22T14:12:35.867 回答
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;
于 2012-07-27T10:37:29.800 回答