2009-06-22 18 views
6

Estoy analizando las infoboxes de wikipedia y me di cuenta de que algunas infoboxes tienen campos de imágenes; estos campos contienen nombres de archivos de imágenes escondidos en wikipedia en alguna parte. Sin embargo, solo contienen el nombre del archivo como es opuesto al enlace real.¿Cómo obtengo un enlace a una imagen en la wikipedia desde el cuadro de información?

Revisé los enlaces de las imágenes en las cajas de información reales y los enlaces no parecen ser de una sola fuente, pero las fuentes varían. ¿Cómo puedo hipervínculo a una imagen en wikipedia teniendo en cuenta que solo tengo el nombre de la imagen de una entrada de infobox?

+1

¿alguna vez obtuvo la respuesta a esta pregunta? – rockit

Respuesta

1

¿Has probado http://en.wikipedia.org/wiki/File:filename.jpg? Incluso si los archivos están ubicados en Wikimedia Commons, la URL anterior aún debería funcionar.

Editar: ¿Estás tratando de activar la imagen? Si es así, Wikipedia prohíbe hotlinking. http://commons.wikimedia.org/wiki/Commons:Reusing_content_outside_Wikimedia#Hotlinking

+0

¡Whoa! No sabía que estaba prohibido enlazar a la wikipedia, gracias por informarme de eso. De hecho, me gustaría mostrar las fotos a las que se hace referencia en las infoboxes que he exportado. Me gustaría una forma de descargar estas imágenes de algún modo programaticamente. ¿Cómo podría obtenerlo de la wikipedia? – Ali

+0

Considere que tengo alrededor de unos miles de cuadros de información y cada cuadro de información hace referencia a una o tres imágenes. – Ali

+6

@Ali: la página ahora dice que se permite el enlace directo – Casebash

12

De acuerdo con What are the strangely named components in Wikipedia file paths, necesita ejecutar md5 para averiguar la URL. Ahora Wikipedia permite hotlinking, por lo que:

Si tiene codificación UTF-8 $name, que tiene que hacer lo siguiente:

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

Lo mismo se puede utilizar para las miniaturas.

+0

Gracias, esto funciona bien. He traducido tu respuesta a JS. –

+0

@Yuri Baburov http://upload.wikimedia.org/wikipedia/commons/ no se arregló alguna vez este enlace https://upload.wikimedia.org/wikipedia/es/7/75/Cruciblecover.jpg alguna idea de cómo obtener url dinámico? –

0

me di cuenta de que el prefijo URL debe ser:

http://upload.wikimedia.org/wikipedia/en/thumb/ 

Además, la carpeta debe contener el nombre repetido del archivo con un tamaño especificado como prefijo:

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; 
2

Aquí está una implementación de JavaScript de una respuesta PHP en funcionamiento (créditos a 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; 

Tenga en cuenta que debe incluye la función externa md5() (https://github.com/blueimp/JavaScript-MD5); no es nativo de JS.

0

Si le interesa vincular archivos solo en Wikimedia Commons, existe una manera más fácil: puede usar el FilePath special page. Por ejemplo, si quieres hotlink el archivo "Mosaic_of_the_Arctic.jpg", puede utilizar:

https://commons.wikimedia.org/wiki/Special:FilePath/Mosaic_of_the_Arctic.jpg 

Funciona con la etiqueta <img> también.

Cuestiones relacionadas