2011-09-17 12 views
12

Próbuję użyć Wikimedia API dla Gmin wiki na:Pobieranie licencji obrazu oraz informacje o autorze w świetlicy wiki

http://commons.wikimedia.org/w/api.php 

Wygląda na to, co wspólne API jest bardzo niedojrzały i udział w ich document that mentions the possibility aby odzyskać licencję a informacje o autorze są puste.

Czy mimo to mogę pobrać akapit zawierający informacje o licencjonowaniu za pomocą interfejsu API? (Na przykład akapit pod tytułem "Licencjonowanie" at this page). Oczywiście mogę pobrać całą stronę i spróbować ją przetworzyć, ale do czego służą API?

Odpowiedz

3

Możesz spróbować użyć Magnus Manske's Commons API tool na Wikimedia Toolserver. Nie jest to oficjalna usługa, a dokumentacja wydaje się dość rzadka (to znaczy prawie nieistniejąca), ale XML output wydaje się dość oczywiste.

Nie mogę znaleźć źródła skryptu Magnusa gdziekolwiek, ale zakładam, że wyodrębnia informacje o licencjach z pliku categories, do którego należy plik. Jeśli chcesz, możesz zrobić to sam: po prostu pobierz listę kategorii i, jeśli to konieczne, podejdź do drzewa kategorii, aż znajdziesz license category, którą rozpoznasz. Niestety część chodzenia po drzewie wymaga albo wielu żądań API, albo bazy danych kategorii kategorii (dostęp na żywo na serwerze narzędziowym lub zrekonstruowana kopia z wersji database dumps).

Tak, zdaję sobie sprawę, że ta odpowiedź może wydawać się niezadowalająca. Faktem jest, że scenariusz Magnusa wydaje się być najbliższą aktualnie istniejącą rzeczą do tego, czego oczekujesz, a nawet jest oznaczony jako eksperymentalny i niekompletny. Zasadniczo jest to problem czekający na kogoś, kto wdroży (lepsze) rozwiązanie.

+0

Wygląda na to, że narzędzie nie działa, czy ktoś może to potwierdzić? – user5950

+0

@ user5950: Tak, wydaje mi się, że nie działa. –

+0

Tak więc, jeśli ktoś dowie się o dobrej alternatywie, daj nam znać! – user5950

1

Użyłem Magnus' Commons API tool. Nie jest przeznaczony do umieszczenia w projekcie, ale jeśli kopiujesz źródło strony wiki, to wywołuje ją i buforuje lokalnie, a następnie przenosi logikę do klasy, dzięki czemu łatwiej ją wywołać. Here's the source for Magnus' version. Jeśli chcesz, aby stworzona przeze mnie klasa dała mi znać, a ja to wykopię.

-3

patrz strona: http://www.mediawiki.org/wiki/API:Meta

można użyć foreach obraz znacznik 'meta = siteinfo' i znacznikiem 'siprop = rightsinfo' (siprop jest prop z siteinfo) Następnie pojawi się rightsinfo z następujących obrazek.

W twoim przypadku Brada Pitta byłoby jak:

http://en.wikipedia.org/w/api.php?format=jsonfm&action=query&titles=File:Brad_Pitt_at_Incirlik2.jpg&prop=imageinfo&iiprop=url&meta=siteinfo&siprop=rightsinfo

+0

To nie jest poprawne. "siteinfo" podaje informacje o witrynie, a nie obraz. Na przykład, jeśli spojrzysz na stronę [File: Flag_of_the_United_Kingdom.svg] (http://en.wikipedia.org/wiki/File:Flag_of_the_United_Kingdom.svg), zobaczysz, że jest ona licencjonowana jako Domena Publiczna. Jednak użycie tego pliku w zapytaniu, które podasz, pokazuje, że strona (a nie obraz) jest licencjonowana jako Creative Commons. Nie daje informacji o obrazie. – ishmael

+0

OK, jestem w błędzie. – Bvbever

+0

Bvbever jest poprawny, to nie działa w przypadku obrazów. –

1

Od http://www.mediawiki.org/wiki/API_talk:Main_page#Image_license_information Czy istnieje sposób, aby uzyskać licencję obrazu za pośrednictwem interfejsu API? Według kategorii jest prawdopodobnie najłatwiejszy, zakładając, że strona kategoryzuje się według licencji. Jednak nie ma wbudowanego modułu dla informacji o licencji. Splarka 08:45, 22 stycznia 2010 (UTC)

Uważam jednak, że używanie kategorii nie zwraca niczego dla wielu obrazów, nawet jeśli mają one określoną licencję. Być może najlepszym sposobem jest przeanalizowanie renderowanego html strony obrazu.

13

Późne odpowiedź, ale można poprosić o dane "extmetadata" z następującym zapytaniem:

http://en.wikipedia.org/w/api.php?action=query&prop=imageinfo&iiprop=extmetadata&titles=File%3aBrad_Pitt_at_Incirlik2.jpg&format=json

zajrzeć pod imageinfo.extmetadata.UsageTerms, Artist, Credit, itp.

+2

To jest właściwa odpowiedź. Użyj formatu jsonfm dla łatwej weryfikacji: http://en.wikipedia.org/w/api.php?action=query&prop=imageinfo&iiprop=extmetadata&titles=File%3aBrad_Pitt_at_Incirlik2.jpg&format=jsonfm –