Подтвердить что ты не робот

Google views - информация о фотографиях для региона

Ищете способ имитировать логику API Flickr, чтобы использовать представления Google.

В Flickr я могу вызвать метод flickr.photos.search и получить все фотографии для определенного местоположения, например:

https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=cb33497ccae3482a7d5252f15b790fe3&woe_id=727232&format=rest&api_sig=bc7b1227243d969498f9d7643438f18f

Ответ:

<?xml version="1.0" encoding="utf-8" ?>
  <rsp stat="ok">
    <photos page="1" pages="7673" perpage="100" total="767266">
    <photo id="17856165012" owner="[email protected]" secret="6d2acf3b87" server="7690" farm="8" title="Amsterdam Canal" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="17830118816" owner="[email protected]" secret="ee8b55fc5e" server="7756" farm="8" title="IMG_2209" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="17668921970" owner="[email protected]" secret="bd0061e638" server="8825" farm="9" title="IMG_2210" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="17853550052" owner="[email protected]" secret="c834e9a7eb" server="7738" farm="8" title="IMG_2212" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="17856935911" owner="[email protected]" secret="39be86bb4b" server="7723" farm="8" title="IMG_2213" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="17233920844" owner="[email protected]" secret="8be2333be3" server="7658" farm="8" title="IMG_2214" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="17853542232" owner="[email protected]" secret="8f19ee65c2" server="7747" farm="8" title="IMG_2215" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="17856926911" owner="[email protected]" secret="bc0fb6dbc1" server="7667"....

Затем я вызываю flickr.photos.getInfo для каждого идентификатора фотографии, чтобы получить информацию о фотографии

Ответ:

<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
  <photo id="17853542232" secret="8f19ee65c2" server="7747" farm="8" dateuploaded="1432037570" isfavorite="0" license="0" safety_level="0" rotation="90" originalsecret="7848968317" originalformat="jpg" views="2" media="photo">
    <owner nsid="[email protected]" username="trashhunters" realname="Trash Hunters" location="" iconserver="7748" iconfarm="8" path_alias="trashhunters" />
    <title>IMG_2215</title>
    <description />
    <visibility ispublic="1" isfriend="0" isfamily="0" />
    <dates posted="1432037570" taken="2015-05-17 13:47:32" takengranularity="0" takenunknown="0" lastupdate="1432040217" />
    <editability cancomment="0" canaddmeta="0" />
    <publiceditability cancomment="1" canaddmeta="0" />
    <usage candownload="1" canblog="0" canprint="0" canshare="1" />
    <comments>0</comments>
    <notes />
    <people haspeople="0" />
    <tags>
      <tag id="131822341-17853542232-563433" author="[email protected]" authorname="trashhunters" raw="blikje" machine_tag="0">blikje</tag>
      <tag id="131822341-17853542232-81138" author="[email protected]" authorname="trashhunters" raw="fanta" machine_tag="0">fanta</tag>
    </tags>
    <location latitude="52.367408" longitude="4.862769" accuracy="16" context="0" place_id="xQ4tawtWUL1NrOY" woeid="727232">
      <locality place_id="xQ4tawtWUL1NrOY" woeid="727232">Amsterdam</locality>
      <county place_id="nmbnjNtQUL_iOTHdPg" woeid="12592040">Amsterdam</county>
      <region place_id="F86XYCBTUb6DPzhs" woeid="2346379">North Holland</region>
      <country place_id="Exbw8apTUb6236fOVA" woeid="23424909">Netherlands</country>
    </location>
    <geoperms ispublic="1" iscontact="0" isfriend="0" isfamily="0" />
    <urls>
      <url type="photopage">https://www.flickr.com/photos/trashhunters/17853542232/</url>
    </urls>
  </photo>
</rsp>

Меня интересуют долгота, широта, время и пользователь. Я просмотрел Google-сайт API, но не смог найти способ.

Update: просто для того, чтобы быть ясным, я нашел запрос указать детали в Google API, но результат фотографий не содержит данных местоположения или пользователя:

..."photos" : [
         {
            "height" : 2322,
            "html_attributions" : [
               "\u003ca href=\"//lh5.googleusercontent.com/-QO7PKijayYw/AAAAAAAAAAI/AAAAAAAAAZc/fTtRm3YH3cA/s100-p-k/photo.jpg\"\u003eWilliam Stewart\u003c/a\u003e"
            ],
            "raw_reference" : {
               "fife_url" : "https://lh3.googleusercontent.com/-7mKc4261Edg/VB01Tfy2OWI/AAAAAAAADII/BHs-SIudu64/k/"
            },
            "width" : 4128
         },...

Любые советы будут оценены:)

4b9b3361

Ответ 1

У меня есть хорошие новости и плохие новости для вас. Хорошей новостью является то, что это возможно, плохая новость заключается в том, что существует сумасшедшее количество предостережений, и это не гарантирует, что вы сможете получить информацию, которую вы хотите для каждой фотографии.

Шаг 1: Информация пользователя

Когда вы запрашиваете информацию о месте из API места, вы получаете массив фотографий. На каждой фотографии есть строки url, width, a height и html_attributions. Если мое понимание верное, что последняя строка будет пустой, если владелец заведения загрузил фотографии самостоятельно, но в случае, если это сторонний контент, он будет содержать ссылку, которую вы должны включить на страницу с атрибуцией пользователя. Чтобы использовать первую фотографию для Google HQ из вашего вопроса, мы получаем следующую информацию.

{
  url: 'https://lh5.googleusercontent.com/-7mKc4261Edg/VB01Tfy2OWI/AAAAAAAADII/BHs-SIudu64/s0/20140109_152438.jpg',
  width: 2322,
  height: 4128,
  html_attributions: '<a href="#" onclick="location.href='https://plus.google.com/107252953636064841537'; return false;">William Stewart</a>'
}

В большинстве случаев (если не все) это будет ссылка на учетную запись пользователя Google Plus, из которой мы можем извлечь userId. В этом случае 107252953636064841537

Шаг 2: Поиск фотографии

Теперь логический следующий шаг, похоже, будет идти в Google+ API, но, оказывается, они до сих пор не включили способ доступа к Google+ Фото. Удивительно, но веб-API Picasa по-прежнему работает и, похоже, все еще возвращает обновленные данные. Итак, мы можем запросить все альбомы для этого пользователя с помощью следующего URL-адреса, используя найденный выше userId (Google любезно использовал те же идентификаторы или просто поддерживает идентификаторы пользователей Google+).

https://picasaweb.google.com/data/feed/api/user/107252953636064841537

В нем есть один <entry> для каждого альбома, который содержит пользователя

<feed>
   [...]
   <entry>
      [...]
      <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="#" onclick="location.href='https://picasaweb.google.com/data/feed/api/user/107252953636064841537/albumid/6061059278861279377'; return false;" />
      [...]
   </entry>
</feed>

Вам нужно будет запросить каждый канал альбома, чтобы получить список фотографий, запросив URL-адрес в поле href. Это вернет другой XML-документ, который содержит следующую информацию для каждой фотографии:

<entry>
  <id>https://picasaweb.google.com/data/entry/api/user/107252953636064841537/albumid/6061059278861279377/photoid/6061059282579110242</id>
  <published>2014-09-20T08:05:33.000Z</published>
  <updated>2014-10-08T20:11:49.889Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/photos/2007#photo" />
  <title type="text">20140109_152438.jpg</title>
  <summary type="text" />
  <content type="image/jpeg" src="https://lh3.googleusercontent.com/-7mKc4261Edg/VB01Tfy2OWI/AAAAAAAADII/BHs-SIudu64/20140109_152438.jpg" />
  <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="#" onclick="location.href='https://picasaweb.google.com/data/feed/api/user/107252953636064841537/albumid/6061059278861279377/photoid/6061059282579110242'; return false;" />
  <link rel="alternate" type="text/html" href="#" onclick="location.href='https://picasaweb.google.com/107252953636064841537/September20201402#6061059282579110242'; return false;" />
  <link rel="http://schemas.google.com/photos/2007#canonical" type="text/html" href="#" onclick="location.href='https://picasaweb.google.com/lh/photo/CpdWkfaimetJbSbFK2cojdMTjNZETYmyPJy0liipFm0'; return false;" />
  <link rel="self" type="application/atom+xml" href="#" onclick="location.href='https://picasaweb.google.com/data/entry/api/user/107252953636064841537/albumid/6061059278861279377/photoid/6061059282579110242'; return false;" />
  <link rel="http://schemas.google.com/photos/2007#report" type="text/html" href="#" onclick="location.href='https://picasaweb.google.com/lh/reportAbuse?uname=107252953636064841537&amp;aid=6061059278861279377&amp;iid=6061059282579110242'; return false;" />
  <gphoto:id>6061059282579110242</gphoto:id>
  <gphoto:version>7</gphoto:version>
  <gphoto:position>2.0</gphoto:position>
  <gphoto:albumid>6061059278861279377</gphoto:albumid>
  <gphoto:access>public</gphoto:access>
  <gphoto:width>4128</gphoto:width>
  <gphoto:height>2322</gphoto:height>
  <gphoto:size>1756108</gphoto:size>
  <gphoto:client />
  <gphoto:checksum />
  <gphoto:timestamp>1389241477000</gphoto:timestamp>
  <gphoto:imageVersion>3202</gphoto:imageVersion>
  <gphoto:commentingEnabled>true</gphoto:commentingEnabled>
  <gphoto:commentCount>0</gphoto:commentCount>
  <gphoto:streamId>cs_01_3c7bd15d390e38745feedfd0c8ec076f</gphoto:streamId>
  <gphoto:license id="0" name="All Rights Reserved" url="">ALL_RIGHTS_RESERVED</gphoto:license>
  <gphoto:shapes faces="done" />
  <exif:tags>
     <exif:fstop>2.2</exif:fstop>
     <exif:make>SAMSUNG</exif:make>
     <exif:model>GT-I9505</exif:model>
     <exif:exposure>0.030303031</exif:exposure>
     <exif:flash>false</exif:flash>
     <exif:focallength>4.2</exif:focallength>
     <exif:iso>80</exif:iso>
     <exif:time>1389281077000</exif:time>
     <exif:imageUniqueID>721da79fdf344aa70000000000000000</exif:imageUniqueID>
  </exif:tags>
  <media:group>
     <media:content url="https://lh3.googleusercontent.com/-7mKc4261Edg/VB01Tfy2OWI/AAAAAAAADII/BHs-SIudu64/20140109_152438.jpg" height="288" width="512" type="image/jpeg" medium="image" />
     <media:credit>William Stewart</media:credit>
     <media:description type="plain" />
     <media:keywords />
     <media:thumbnail url="https://lh3.googleusercontent.com/-7mKc4261Edg/VB01Tfy2OWI/AAAAAAAADII/BHs-SIudu64/s72/20140109_152438.jpg" height="41" width="72" />
     <media:thumbnail url="https://lh3.googleusercontent.com/-7mKc4261Edg/VB01Tfy2OWI/AAAAAAAADII/BHs-SIudu64/s144/20140109_152438.jpg" height="81" width="144" />
     <media:thumbnail url="https://lh3.googleusercontent.com/-7mKc4261Edg/VB01Tfy2OWI/AAAAAAAADII/BHs-SIudu64/s288/20140109_152438.jpg" height="162" width="288" />
     <media:title type="plain">20140109_152438.jpg</media:title>
  </media:group>
</entry>

Обратите внимание, что атрибут src тега <content> равен url от первого вызова API, за исключением поддомена, который вы должны игнорировать (что отличается из-за балансировки нагрузки). Также обратите внимание, как вся доступная информация о фотографии отображается в документе xml и как она содержит все данные exif, которые были удалены из самой фотографии. Очевидно, что не все фотографии содержат информацию GPS, и приведенный выше пример. Если, однако, фотография содержит информацию GPS, она будет включена в этот документ либо в данные exif, либо в тег <georss:where>.

Заключение

Чтобы найти информацию, которую вы ищете, вам нужно будет пропустить все альбомы пользователей, а затем выполнить поиск фотографии с похожим url с тем, который вы получили от API Google Адресов. Самые большие предостережения в том, что он будет работать только для фотографий из Google+, что требует много запросов и что веб-интерфейс Picasa, вероятно, будет прекращен в какой-то момент, хотя в этот момент по крайней мере часть его функций будет перенесена в API Google+ Photos (хотя Google снова планирует сделать Google Фото автономной службой, поэтому в этом случае ее можно просто переименовать). В любом случае, все считают, что я удивлен, что это возможно вообще, поскольку API Google Place не создан для всего этого, поэтому в этом смысле вам повезло, я думаю.