2011-09-09 9 views
0

기존 API를 사용하여 위키 미디어에서 이미지를 검색하려고하지만 작동하는 것과 작동하지 않는 것에 논리가없는 것으로 보입니다.위키 미디어 이미지에 대한 정보를 얻는 방법?

나는 이미지의 쿼리를 얻고,이 URL에서 :

여기에 내가 시도/한 뭘하는지입니다. 이것은 내가 이미지의 이름과 URL을 얻을 수있는 XML 피드, 반환

http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura 

: 링크와 같은 업 로더 및 라이센스 등의

<img name="Jura.PNG" url="http://upload.wikimedia.org/wikipedia/en/a/ad/Jura.PNG" descriptionurl="http://en.wikipedia.org/wiki/File:Jura.PNG"/> 

그런 정보를 얻기 위해는, 내가,이 도구를 사용하여 위키 백과 :

http://toolserver.org/~magnus/commonsapi.php 

매개 변수 ?image= 다음에 파일 이름이 필요합니다. xml 예제의 Jura.PNG은 정상적으로 작동합니다. 그러나 대부분의 다른 사람은 단지 <error>File does not exist</error>을 반환하려고합니다. 테스트 한 결과 파일 입니다. 왜 하나의 파일이 작동하는지, 다른 하나는 작동하지 않는지를 알 수 없습니다.

테스트의 경우 다른 하나는 Calumma_tarzan_01.jpg입니다.

누구든지 내가 뭘 잘못하고 있는지 알아?


하지 작업 예 :

Jurassic.jpg 
Juramento_de_la_Primera_Junta.jpg 
JuraDolois_logo.jpg 

사용 PHP 코드 : 올바른 개체를 덤프하는 Jura.PNG 예를 들어

$xml_link = "http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=".$search_term; 
$xml = simplexml_load_file($xml_link); 
$xml_link_data = "http://toolserver.org/~magnus/commonsapi.php?image=".$imgname; 
$xml_data = simplexml_load_file($xml_link_data); 
var_dump($xml_data->licenses->license); 

하지만 이후 다른 URL은 라이센스 부분을 가지고 있겠지 결과는 분명히 NULL입니다. 그러나 브라우저에서 URL을 수동으로 입력해도 결과가 반환되지 않으므로 문제는 여기에 없다고 생각합니다.

+0

* 작동하지 않는 예가 무엇입니까? 공백이나 다른 URL에 친숙하지 않은 문자가 포함되어 있지는 않습니까? 당신이 지나가고있는 파일 이름을 urlencode하는 것을 잊어 버리는 지 궁금합니다. 또한, toolserver.org API에 대한 요청을 해고하기 위해 어떤 언어를 사용하고 있습니까? 우리에게 약간의 코드를 보여줄 수 있습니까? –

+0

요청한 정보를 질문에 추가했습니다. 보시다시피,'Jurassic.jpg' 파일에는 멋진 문자가 없습니다 (대문자를 제외하고는 별 차이가없는 것 같습니다), 여전히 작동하지 않습니다. – Lg102

+0

지금까지 [출처] (https://svn.toolserver.org/svnroot/magnus/commonsapi.php)를 살펴보면'http://commons.wikimedia.org/w/api.php ? format = php & action = query & prop = imageinfo & iilimit = 500 & iiprop = timestamp | user | url | size | sha1 | metadata & titles = 이미지 : Jura.PNG'는 유효한 "imageinfo"를 반환하고, http://commons.wikimedia.org/w/api.php?format=php&action=query&prop=imageinfo&iilimit=500&iiprop=timestamp|user|url|size|sha1|metadata&titles= Image : Jurassic.jpg'은 아닙니다만, 이유를 알기 위해 Commons API에 대해 충분히 알지 못합니다. –

답변

1

Wikimedia Commons은 위키 백과에서 사용하는 무료 이미지 저장소입니다. 그것은 주로 Wikipedia의 전국적 돌연변이간에 이미지를 공유하는 데 사용됩니다.

영어 위키 백과의 많은 이미지는 fair use으로 사용됩니다. 그것들은 무료가 아니기 때문에 Commons에 둘 수 없습니다.

발견 한 도구는 Commons의 이미지 (이름에서 알 수 있듯이)에서만 작동하므로 영어 (또는 다른) 위키 백과에서 호스팅되는 이미지에는 사용할 수 없습니다.

+0

처음에는 생각했지만, XML 응답을 확인하면 모든 이미지가 위키 피 디아 자체가 아니라 upload.wikimedia.org 하위 도메인에있는 것을 볼 수 있습니다. – Lg102

+0

그건별로 말하지 않습니다. 여전히 동일한 서버이지만 다른 사이트입니다. 또한 XML은 Commons에있는 이미지가 아니라 Wikipedia에 직접있는 이미지 만 나열합니다. Wikipedia의 이미지는 http : // upload.wikimedia.org/wikipedia/ko /에 있으며, Commons의 이미지는 http : // upload.wikimedia.org/wikipedia/commons /에 있습니다. – svick

+0

* working *'Jura.PNG도'/ wikipedia/en /'위치에 있으므로, 이것이 정확하지 않다고 생각합니다. 아니면 여기서 당신의 요점을 놓치고 있습니까? – Lg102