2015-05-19 16 views
18

Google görünümlerini kullanabilmek için Flickr API mantığını taklit etmenin bir yolunu arıyorsunuz.Google görünümleri - bir bölge için fotoğraf ayrıntılarını alın

Flickr ben flickr.photos.search yöntemini çağırabilirsiniz ve böylece gibi belirli bir konum için tüm fotoğrafları almak:

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

yanıtı: Sonra

<?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".... 

ben flickr.photos.getInfo diyoruz Fotoğraf bilgisini almak için her fotoğraf kimliği için

Yanıt:

<?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> 

Ben boylamı ilgileniyorum, enlem, zaman alınan ve kullanıcı bilgi. Google places API'u inceledim ama bir yol bulamadım.

Güncelleme: açık konuşmak gerekirse, Google API üzerinde, place details isteği bulduk ama fotoğraflar konumunu veya kullanıcı veri içermiyor sonuç:

..."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 
     },... 

Herhangi bir tavsiye mutluluk duyacağız:

+0

API çağrıları biraz kıvrık. Lat/long ile bir istekte bulunursunuz. Aradığınızı ne kadar spesifik olduğuna bağlı olarak bir yer veya yer listesi alırsınız. Ardından, resimler için bir API çağrısı yaparsınız ve ardından her bir görsel URL için başka bir API çağrısı yaparsınız. –

+0

API anahtarı BC gerektirmeyen eski API'yi kullanıyorum, API anahtarları etki alanına özgüdür. Yeni API daha iyidir. Ama eğer soruları yanıtlıyorsanız,% 70 tamamdır, ancak bir cevabı kabul ettiğinizi fark ettiniz. Eğer bir uygulamaya bir cevap olarak hala açık iseniz veya şu andaki cevaptan hoşlanıyorsanız LMK. –

+0

Elbette! Başka bir yaklaşım almaktan memnun olacağım, teşekkürler! –

cevap

9

Sizin için iyi haberlerim ve kötü haberlerim var. İyi haber şu ki, kötü haber, çılgın bir miktar ihtarın olduğu ve her fotoğraf için istediğiniz bilgiyi alabileceğinizi garanti etmiyor.

Adım 1: yer API yer bilgisini talep ettiğinizde kullanıcı bilgileri

Fotoğraflarda dizisi alır. Her fotoğraf bir url, bir width, bir height ve bir html_attributions dizgisine sahiptir. Anlayışım doğruysa, dizinin sahibi fotoğrafın kendisini yüklediyse son dizenin boş kalacağı, ancak üçüncü taraf içeriğinin olması durumunda, kullanıcı ilişkilendirmesiyle sayfaya eklemeniz gereken bir bağlantı içerecektir. Sorunuzun Google HQ için ilk fotoğrafı kullanmak için bu bir Google Plus kullanıcı hesabı için bir bağlantı olacaktır (hepsi değilse de) vakaların büyük çoğunluğunda şu bilgileri

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

elde ettiğimiz biz userId'u ayıklayabilir. Bu durumda 107252953636064841537

Adım 2: Şimdi fotoğrafa

bulma, mantıklı bir sonraki adım Google+ API gitmek gibi görünüyor, ama yine de Google+ Fotoğraflar erişmek için bir yol dahil değil çıkıyor. Şaşırtıcı bir şekilde, ancak Picasa Web API'sı hala çalışıyor ve çalışıyor ve hala güncel verilere dönüyor gibi görünüyor. Bundan sonra, bu kullanıcı için tüm albümleri, yukarda bulduğumuz userId'u kullanarak aşağıdaki URL'yi kullanarak talep edebiliriz (Google, aynı kimlikleri kullandı, ya da yalnızca Google+ kullanıcı kimliklerini destekledi).

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

İçeride Her albüm beslemeyi alması gerekecek

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

aşağıdaki listesini almak için içeren, kullanıcının sahip her albüm için tek <entry> var href alanında URL'yi isteyerek fotoğrafları. Bu, her fotoğraf için aşağıdaki bilgileri içeren başka bir xml belgesi döndürür: <content> etiketinin src nitelik alt etki haricinde ilk API çağrısından url eşittir nasıl

<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="https://picasaweb.google.com/data/feed/api/user/107252953636064841537/albumid/6061059278861279377/photoid/6061059282579110242" /> 
    <link rel="alternate" type="text/html" href="https://picasaweb.google.com/107252953636064841537/September20201402#6061059282579110242" /> 
    <link rel="http://schemas.google.com/photos/2007#canonical" type="text/html" href="https://picasaweb.google.com/lh/photo/CpdWkfaimetJbSbFK2cojdMTjNZETYmyPJy0liipFm0" /> 
    <link rel="self" type="application/atom+xml" href="https://picasaweb.google.com/data/entry/api/user/107252953636064841537/albumid/6061059278861279377/photoid/6061059282579110242" /> 
    <link rel="http://schemas.google.com/photos/2007#report" type="text/html" href="https://picasaweb.google.com/lh/reportAbuse?uname=107252953636064841537&amp;aid=6061059278861279377&amp;iid=6061059282579110242" /> 
    <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> 

Not hangi yapmalısınız yoksay (yük dengeleme nedeniyle farklıdır). Ayrıca, fotoğrafla ilgili tüm bilgilerin xml belgesinde nasıl görüneceğini ve fotoğrafın kendisinden çıkarılmış olan tüm exif verilerini nasıl içerdiğini de not edin. Açıkçası tüm fotoğraflar GPS bilgisi içermiyor ve yukarıdakiler bunun bir örneğidir. Ancak bir fotoğraf GPS bilgisi içeriyorsa, bu belgeye exif verilerinde ve/veya <georss:where> etiketinde yer verilir. tüm kullanıcıların albümleri arasında döngü gerekir ve daha sonra Google Rehber API alınan birine benzer url ile bir fotoğrafı aramak olurdu kullanarak, istediğiniz bilgileri bulmak için

Sonuç

. En büyük ihtarlar, yalnızca Google + 'dan fotoğraflar için çalışacağı, çok fazla istek gerektirdiği ve bu noktada Picasa Web API'sinin bir noktada durdurulamayacağı yönündedir, ancak bu noktada işlevselliğinin en az bir kısmı Google Fotoğraflar API'sine yönlendirilmelidir (Google yeniden make Google Photos a standalone service numaralı telefona plan yapıyorsa da, bu durumda yalnızca yeniden adlandırılabilir). Her iki durumda da, tüm bunların Google Place API'sı için yapılmadığından dolayı şaşırdığımı düşündüğümden dolayı, bu anlamda sanırım şanslısınız.

+0

Çabanız için teşekkürler, hala bir adım eksik: Tüm fotoğrafları çek bölge. Nasıl yapılacağı hakkında bir fikrin var mı? –

+0

@ShlomiSchwartz Ah, peki, Picasa Web API'sı böyle bir işlev sağlamaz, bu nedenle iki seçeneğiniz olduğunu tahmin ediyorum: API aracılığıyla tüm Picasa Web Albümlerini tarayarak veya Google Rehber API'sı aracılığıyla yerleri sorgulayarak kendi endeksinizi oluşturun ve ardından İlişkili fotoğrafları açıklanan şekilde alma. İkinci durumda, nispeten basit bir 'nearbysearch' API çağrısı veya javascript API'sinde' PlaceSearchRequest 'bulunur. –

+0

Üzgünüz, ancak bu bilgi yanlış. Aslında fotoğraflara erişim verildi. API çağrıları biraz zor. 1. belirli bir yeri seçmek zorundasınız, daha sonra detaylandırma isteğini al, sonra her fotoğraf için api çağrısı. Ve bu bir Plunker oluşturmak için kullanıyorum güncel olmayan API ile. Yeni API çok daha iyi ancak Etki Alanı'na özgü bir anahtar gerektiriyor. –

İlgili konular