Как получить ссылку на изображение в Википедии из инфобокса?

StackOverflow https://stackoverflow.com/questions/1026337

Вопрос

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

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

Это было полезно?

Решение

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

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

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

  

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

Другие советы

Согласно компонентам с странным названием в путях к файлам в Википедии , вы нужно запустить md5, чтобы узнать URL. Теперь в Википедии разрешена горячая ссылка, поэтому:

Если у вас есть $ name в кодировке utf-8, вам нужно сделать следующее:

$filename = replace($name, ' ', '_');
$digest = md5($filename);
$folder = $digest[0] . '/' . $digest[0] . $digest[1] . '/' .  urlencode($filename);
$url = 'http://upload.wikimedia.org/wikipedia/commons/' . $folder;

То же самое можно использовать для миниатюр.

Вот реализация 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.

Я заметил, что префикс 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;
scroll top