Как получить ссылку на изображение в Википедии из инфобокса? - PullRequest
5 голосов
/ 22 июня 2009

Я анализирую инфобоксы Википедии и заметил, что у некоторых инфобоксов есть поля изображения - эти поля содержат имена файлов изображений, спрятанных где-то в Википедии. Однако они просто содержат имя файла, а не фактическую ссылку.

Я проверил ссылки на изображения в реальных живых инфобоксах, и ссылки, похоже, не из одного источника, но источники различаются. Как я могу гиперссылку на изображение в Википедии, учитывая, что у меня есть только имя изображения из записи инфобокса.

Ответы [ 5 ]

12 голосов
/ 21 декабря 2010

Согласно Что за компоненты со странным названием в путях к файлам в Википедии , вам нужно запустить 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 голосов
/ 21 мая 2017

Теперь существует более простой способ горячей ссылки на файлы в Википедии с помощью страницы Special: FilePath . Следовательно, если вы хотите связать файл Example.jpg в английской Википедии, вы можете использовать https://en.wikipedia.org/wiki/Special:FilePath/Example.jpg.

Аналогичные ссылки должны работать для других сайтов Фонда Викимедиа (например, Wikimedia Commons).

Подробную информацию и рекомендации, касающиеся хотлинкинга, можно найти в Commons: Reusing_content_outside_Wikimedia .

.
2 голосов
/ 26 октября 2015

Вот реализация JavaScript рабочего ответа PHP (благодарность Юрию Бабурову):

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.

0 голосов
/ 27 июля 2012

Я заметил, что префикс 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;
0 голосов
/ 22 июня 2009

Вы пробовали http://en.wikipedia.org/wiki/File:filename.jpg? Даже если файлы находятся на сайте Wikimedia Commons, приведенный выше URL все равно должен работать.

Редактировать: Вы пытаетесь установить ссылку на изображение? Если это так, Википедия запрещает хотлинкинг. http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking

Обновление 10 января 2019 года: Горячая ссылка теперь разрешена :

Hotlinking или InstantCommons : можно использовать файлы непосредственно на Общим на другом сайте, создав вики-сайт MediaWiki с InstantCommons, ...

...