I'm parsing wikipedia infoboxes and I noticed that some infoboxes have image fields - these fields hold names of image files stashed on wikipedia somewhere. However they just contain the name of the file as is as opposed to the actual link.
我正在解析*的信息框,我注意到一些信息框有图像字段 - 这些字段包含*藏在某处的图像文件的名称。但是它们只是包含文件的名称而不是实际的链接。
I checked the links of the images on real live infoboxes and the links do not seem to be from one source but the sources vary. How can I hyperlink to an image on wikipedia considering I only have the name of the image from an infobox entry.
我检查了真实的实时信息框中图像的链接,链接似乎不是来自一个来源,但来源各不相同。我怎么能超链接到*上的图像,因为我只有信息框条目中的图像名称。
5 个解决方案
#1
Have you tried http://en.wikipedia.org/wiki/File:filename.jpg
? Even if the files are located on Wikimedia Commons, the above URL should still work.
你试过http://en.wikipedia.org/wiki/File:filename.jpg吗?即使文件位于维基共享资源上,上述网址仍然可以使用。
Edit: Are you trying to hotlink the image? If so, Wikipedia prohibits hotlinking. http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking
编辑:您是否尝试热链接图像?如果是这样,*禁止热链接。 http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking
Update 10-Jan-2019: Hotlinking is now permitted:
更新于201年1月10日:现在允许热链接:
Hotlinking or InstantCommons: It is possible to use files directly on Commons within another website, by setting up a MediaWiki wiki with InstantCommons, ...
Hotlinking或InstantCommons:通过使用InstantCommons设置MediaWiki维基,可以在另一个网站的Commons上直接使用文件,......
#2
According to What are the strangely named components in Wikipedia file paths, you need to run md5 to find out url. Now wikipedia allows hotlinking, so:
根据*文件路径中奇怪命名的组件,您需要运行md5来查找URL。现在*允许热链接,所以:
If you have utf-8 encoded $name
, you need to do the following:
如果您有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;
The same can be used for thumbnails.
同样可以用于缩略图。
#3
Here is a JavaScript implementation of a working PHP answer (credits to Yuri Baburov):
这是一个有效的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;
Note that you must include external md5()
function (https://github.com/blueimp/JavaScript-MD5); it is not native to JS.
请注意,您必须包含外部md5()函数(https://github.com/blueimp/JavaScript-MD5);它不是JS的原生。
#4
There is now a simpler way to hotlink the files on Wikipedia using the Special:FilePath page. Hence, if you want to link the file Example.jpg on English Wikipedia, you can use https://en.wikipedia.org/wiki/Special:FilePath/Example.jpg
.
现在有一种更简单的方法可以使用Special:FilePath页面来链接*上的文件。因此,如果您想在英语*上链接文件Example.jpg,您可以使用https://en.wikipedia.org/wiki/Special:FilePath/Example.jpg。
Similar links should work for other Wikimedia Foundation sites (e. g. Wikimedia Commons).
类似的链接应该适用于其他维基媒体基金会网站(例如维基媒体共享)。
Details and recommendations regarding hotlinking can be found on Wikimedia's Commons:Reusing_content_outside_Wikimedia.
有关热链接的详细信息和建议可以在Wikimedia的Commons:Reusing_content_outside_Wikimedia上找到。
#5
I noticed that the URL prefix should be:
我注意到URL前缀应该是:
http://upload.wikimedia.org/wikipedia/en/thumb/
Moreover the folder must contain the repeated name of the file with a size specified as prefix:
此外,该文件夹必须包含文件的重复名称,其大小指定为前缀:
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;
#1
Have you tried http://en.wikipedia.org/wiki/File:filename.jpg
? Even if the files are located on Wikimedia Commons, the above URL should still work.
你试过http://en.wikipedia.org/wiki/File:filename.jpg吗?即使文件位于维基共享资源上,上述网址仍然可以使用。
Edit: Are you trying to hotlink the image? If so, Wikipedia prohibits hotlinking. http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking
编辑:您是否尝试热链接图像?如果是这样,*禁止热链接。 http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking
Update 10-Jan-2019: Hotlinking is now permitted:
更新于201年1月10日:现在允许热链接:
Hotlinking or InstantCommons: It is possible to use files directly on Commons within another website, by setting up a MediaWiki wiki with InstantCommons, ...
Hotlinking或InstantCommons:通过使用InstantCommons设置MediaWiki维基,可以在另一个网站的Commons上直接使用文件,......
#2
According to What are the strangely named components in Wikipedia file paths, you need to run md5 to find out url. Now wikipedia allows hotlinking, so:
根据*文件路径中奇怪命名的组件,您需要运行md5来查找URL。现在*允许热链接,所以:
If you have utf-8 encoded $name
, you need to do the following:
如果您有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;
The same can be used for thumbnails.
同样可以用于缩略图。
#3
Here is a JavaScript implementation of a working PHP answer (credits to Yuri Baburov):
这是一个有效的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;
Note that you must include external md5()
function (https://github.com/blueimp/JavaScript-MD5); it is not native to JS.
请注意,您必须包含外部md5()函数(https://github.com/blueimp/JavaScript-MD5);它不是JS的原生。
#4
There is now a simpler way to hotlink the files on Wikipedia using the Special:FilePath page. Hence, if you want to link the file Example.jpg on English Wikipedia, you can use https://en.wikipedia.org/wiki/Special:FilePath/Example.jpg
.
现在有一种更简单的方法可以使用Special:FilePath页面来链接*上的文件。因此,如果您想在英语*上链接文件Example.jpg,您可以使用https://en.wikipedia.org/wiki/Special:FilePath/Example.jpg。
Similar links should work for other Wikimedia Foundation sites (e. g. Wikimedia Commons).
类似的链接应该适用于其他维基媒体基金会网站(例如维基媒体共享)。
Details and recommendations regarding hotlinking can be found on Wikimedia's Commons:Reusing_content_outside_Wikimedia.
有关热链接的详细信息和建议可以在Wikimedia的Commons:Reusing_content_outside_Wikimedia上找到。
#5
I noticed that the URL prefix should be:
我注意到URL前缀应该是:
http://upload.wikimedia.org/wikipedia/en/thumb/
Moreover the folder must contain the repeated name of the file with a size specified as prefix:
此外,该文件夹必须包含文件的重复名称,其大小指定为前缀:
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;