【问题标题】:How do I get link to an image on wikipedia from the infobox?如何从信息框中获取指向维基百科图像的链接?
【发布时间】:2009-06-22 09:50:09
【问题描述】:

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

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

【问题讨论】:

    标签: php wikipedia imagesource wikimedia-commons


    【解决方案1】:

    根据What are the strangely named components in Wikipedia file paths,需要运行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;
    

    同样可以用于缩略图。

    【讨论】:

    【解决方案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 原生的。

    【讨论】:

      【解决方案3】:

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

      类似的链接应该适用于其他 Wikimedia Foundation 网站(例如 Wikimedia Commons)。

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

      【讨论】:

        【解决方案4】:

        你试过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 日更新: 盗链为 now permitted

        Hotlinking 或 InstantCommons:可以直接在 另一个网站中的共享资源,通过建立一个 MediaWiki wiki InstantCommons,...

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-02-02
            • 2016-02-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多