Wer seine Bilder bereits bei 500px veröffentlicht hat, will sie vielleicht auch als Gallerie auf der eigenen Seite veröffentlichen. Um das mit wenigen Zeilen zu realisieren gibt es ein praktisches Gem. Die Dokumentation ist leicht verständlich.
Hier ein einfaches Code Beispiel:
Controller:
def index
fpx = F00px::Client.new
fpx.xauth('XXXXX', 'YYYYYY')
fpx_data = JSON.parse(fpx.get("users").body)["user"]
fpx_id = fpx_data["id"]
fpx_pix = JSON.parse(fpx.user_photos(fpx_id, rpp: 100, only: "Black and White").body)
fpx_urls = fpx_pix["photos"].sort_by {|p| p["created_at"]}.reverse.collect {|p| [p["image_url"], p["name"]]}
@photographies = fpx_urls
end
View:
<% @photographies.each_slice(3) do |slice| -%>
<div class="row">
<% slice.each do |p| %>
<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"></h3>
<%= p[1] %>
</div>
<div class="panel-body text-center">
<img width=100% src=<%= p[0].gsub(/\d\.jpg/, "4.jpg") %>>
</div>
</div>
</div>
<% end %>
</div>
<% end %>
Im Vergleich zur Dokumentation sind nur zwei Änderungen notwendig. Zum einen wird aus einem noch nicht bekannten Grund zum Consumer Key und Secret auch noch "xauth" benötigt, zum Anderen werden über die API nur die URLS für kleine Bilder im Format 1:1 (Crop) übergeben. Das lässt sich durch den "gsub" Aufruf beheben. Ab der Grösse 4 haben die Bilder wieder das richtige Format. Im aktuellen Beispiel werden zusätzlich noch nur die Bilder aus der Kategorie "Schwarz Weiss" heraus gefiltert.
Wie das Ergebnis aussieht, ist hier zu sehen.