Вот жеж зажало в попе..
Наметал то же самое на JS:
http://files.moka.co/getGooglePic.html
По стандарту ищет "blitz3d", но можно и что угодно:
http://files.moka.co/getGooglePic.html?forest
Да и
http://ajax.googleapis.com/ajax/services/search/images - deprecated, и нужно юзать новый поиск.
Юзается так:
loadImage('blitz3d', {
color: 'blue',
size: 'medium'
}, function(err, url) {
if (!err) {
// url - ссылка на файл
} else {
// err - объект с ошибкой
}
});
Код:
<body>
<img id='test' />
<div id='error'></div>
</body>
<script>
var colors = [ 'black', 'blue', 'brown', 'gray', 'green', 'orange', 'pink', 'purple', 'red', 'teal', 'white', 'yellow' ];
var callbacks = { };
var callbacksCounter = 0;
var query = 'blitz3d';
if (location.search && location.search.length > 0) {
query = location.search.substr(1);
}
loadImage(query, {
color: colors[Math.floor(Math.random() * colors.length)],
size: 'medium',
skip: Math.floor(Math.random() * 8)
}, function(err, url) {
if (!err) {
document.getElementById('test').src = url;
} else {
document.getElementById('error').innerHTML = JSON.stringify(err);
}
});
function loadImage(query, options, fn) {
if (fn) {
var callbackId = ++callbacksCounter;
callbacks[callbackId] = fn;
var url = 'http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' + query + '&rsz=1&callback=imageLoaded&context=' + callbackId;
if (options) {
if (options.color) url += '&imgcolor=' + options.color;
if (options.size) url += '&imgsz=' + options.size;
if (options.type) url += '&imgtype=' + options.type;
if (options.skip) url += '&start=' + options.skip;
}
var script = document.createElement('script');
script.onerror = function() {
delete callbacks[callbackId];
fn({ error: true, message: 'could make a jsonp request' });
}
script.src = url;
document.body.appendChild(script);
}
}
function imageLoaded(context, data, status, message) {
if (callbacks[context]) {
if (data && data.results && data.results.length == 1 && data.results[0].unescapedUrl) {
callbacks[context](null, data.results[0].unescapedUrl);
} else {
callbacks[context]({ error: true, code: status, message: message });
}
delete callbacks[context];
}
}
</script>