Случайные изображения Викимедиа Коммонс на веб-странице
Я хотел бы отображать случайные изображения Wikimedia Commons на веб-странице.
Примерно так: http://lkozma.net/blog/random-wiki-image-wallpaper/ кроме как на веб-странице.
Как бы вы поступили так?
Спасибо
2 ответа
Найти тебя
<!doctype html>
<style>
html {
background: no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
</style>
<body>
your stuff here
</body>
<script>
var image_width = 1024;
var interval = 5000;
/*
* puzzle together the long wikimedia API query URL
*/
var url = 'http://commons.wikimedia.org/w/api.php';
url += '?action=query&generator=random';
url += '&grnnamespace=6'; // only return images (6)
url += '&prop=imageinfo'
url += '&iiprop=url';
url += '&iiurlwidth=' + image_width;
url += '&format=json&callback=processWikimediaJson';
var image = document.createElement('img');
image.onload = function () {
document.body.parentNode.style.backgroundImage = 'url(' + image.src + ')';
};
/*
* JSONP callback that traverses the JSON and sticks it into the html background CSS
*/
function processWikimediaJson(json) {
var jpg = [];
for (var id in json.query.pages) {
jpg.push(json.query.pages[id].imageinfo[0].thumburl);
}
image.src = jpg.pop();
}
/*
* to circumvent crosssite scripting restrictions we need to insert a script tag
* that gets JSONP from wikimedia API. This JSONP is wrapped in a callback, which
* we defined above
*/
function getRandomImageJson() {
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
document.body.removeChild(script);
// loop
window.setTimeout(getRandomImageJson, interval);
}
// initial nudge to the loop
getRandomImageJson();
</script>
У меня такое ощущение, что это получит некоторые отрицательные голоса, но я все равно покажу psuedocode.
Настройка
Почистите Викисклад, чтобы получить кучу URL-адресов изображений. Поместите их в базу данных. Присвойте каждому URL последовательный идентификатор.
использование
Когда ваша веб-страница загружается, используйте серверный код, который выбирает один из этих URL случайным образом - случайный идентификатор от 1 до COUNT(*). Код также может проверить, существует ли этот URL в Wikimedia Commons. Если URL был удален (или изменен?), Создайте другой идентификатор и извлеките этот URL из базы данных. (Повторная проверка Wikimedia Commons каждую неделю или две должна поддерживать вашу таблицу URL достаточно актуальной.)