我試圖從現有的API檢索維基媒體的圖像,但似乎沒有什麼邏輯的工作,什麼不是。如何獲取有關維基媒體圖片的信息?
下面是我在做什麼/曾嘗試:
我得到的圖像的查詢,從這個網址。
http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura
這將返回的XML飼料,從中我得到的圖像名稱和網址:
<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代碼:
$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);
爲Jura.PNG
例如正確的對象傾倒,但由於其它URL不具備許可證的一部分,結果顯然是NULL
。但是,我認爲問題不在這裏,因爲在瀏覽器中手動輸入url也不會返回結果。
你能給我們一個*不*工作的例子嗎?他們不會在其中有空格或其他非URL友好的字符,是嗎?我想知道你是否忘記了你正在傳遞的文件名是urlencode ...另外,你用什麼語言來啓動對toolserver.org API的請求?你能告訴我們一些代碼嗎? –
我已將所要求的信息添加到問題中。正如你所看到的,'Jurassic.jpg'文件沒有任何花哨的字符(除了大寫字母,但似乎沒有任何區別),它仍然不起作用。 – Lg102
到目前爲止,看[來源](https://svn.toolserver.org/svnroot/magnus/commonsapi.php)似乎從'http://commons.wikimedia.org/w/api.php檢索?格式= PHP和行動=查詢+道具=的imageinfo&iilimit = 500&iiprop =時間戳|用戶|網址|大小| SHA1 |元和標題=圖片:汝拉。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知之甚少,不知道爲什麼。 –