shoorick: (Default)
[personal profile] shoorick
Panoramio предоставляет возможность отображать фотографии оттуда на своём сайте — можно получить список фотографий по указанным координатам в формате JSON. Как разбирать JSON — другой вопрос. Я попробовал яваскриптом — в общем-то, работает. Правда, я весь яваскрипт забыл, поэтому смог, подглядывая в справочник, лишь разобрать предварительно полученное. А как получить список яваскриптом — не знаю. Поэтому написал мелкий скриптик — два эха и один wget — который делает нужный список:
echo -n 'var list = eval(' > susu.js
wget http://www.panoramio.com/map/get_panoramas.php?order=popularity\&...\&size=square -O - >> susu.js
echo ');' >> susu.js
А уже из этого списка и получаю картинки:
<script language="javascript" src="susu.js"></script>
...
<script language="javascript">
    var count = 20;
    var from = Math.round((list.count-count-1)*Math.random());
    for ( var i = from; i < from + count; i++ ) {
        with ( list.photos[i] ) {
            document.write('<a href="'+photo_url+'" title="Photo by '
            +owner_name+'. '+photo_title
            +'"><img src="'+photo_file_url+'" alt="'+photo_title+'"></a>');
        }
    }
</script>
Список получать можно и по крону. Раз в неделю — вполне достаточно, нет смысла брать чаще. Только вот в списке почему-то оказываются лишние фотографии, немного выходящие за пределы указанного квадрата: например, вместе с университетским городком в список попадают и фотографии с середины улицы Энтузиастов.

Date: 2009-10-29 05:49 pm (UTC)
From: (Anonymous)
Например, через голый XMLHttpRequest


(
  var parse = function(x) {
    var o = eval(x);

    // process object o here
    // don't use 'with', it's slow and confusing :)

  };

  var req = new XMLHttpRequest();  
  req.open('GET', 'http://www.panoramio.com/map/get_panoramas.php?order=popularity', true);  
  req.onreadystatechange = function(e) {  
    if (req.readyState == 4) {  
      if(req.status == 200)  
        parse(req.responseText);  
      else  
        parse("{success: false}");  
    }  
  };  

  req.send(null);
)();



XMLHttpRequest можно обернуть в что-нибудь типа var request = function(config), где config - это объект со свойствами url, params, method, onSuccess, onFailure. и тогда вызов будет выглядеть:


request({
   url: 'http://site.com/path/'
  ,method: 'GET'
  ,params: {
     firstName: 'Vasya'
    ,lastName: 'Pupkin'
    ,age: 20
  }
  ,onSuccess: function(x) {
    alert('Success! I received ' + x);
  }
  ,onFailure: function(x) {
    alert('Failure! Error: ' + x);
  }
});

selfmade

О!

Date: 2009-10-29 06:02 pm (UTC)
From: [identity profile] shoorick.livejournal.com
Спасибо!

Date: 2009-10-30 04:40 am (UTC)
From: [identity profile] selfmade.livejournal.com
там вначале синтаксис съехал, вот как правильно объявлять и тут же вызывать анонимную функцию:
(function(){
  //
})();

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 24th, 2026 12:03 am
Powered by Dreamwidth Studios