×
İçindekiler

Unsplash api ile koleksiyon çekme ve kullanma


Merhaba,

Bir önceki yazımızda Unsplash API’sini kullanarak fotoğraf galerisi oluşturmayı anlatmıştım. Bu yazımızda ise Unsplash API’sini kullanarak koleksiyon resimlerini çekmeyi ve kullanmayı anlatacağım.

Koleksiyon Resimlerini Çekme #

Koleksiyon resimlerini çekmek için Unsplash API’sinin /collections endpoint’ini kullanacağız. Bu endpoint’e client_id ve per_page parametrelerini göndererek koleksiyon resimlerini çekeceğiz. client_id parametresi Unsplash API anahtarımızı, per_page parametresi ise sayfa başına kaç resim çekmek istediğimizi belirtiyor.

// Belirtilen kimliğe sahip HTML elementini al
const unsplash_collections = document.getElementById("unsplash-collections");

// Element varsa devam et
if (unsplash_collections) {
  // Unsplash API anahtarını al
  const client_id = "f_ljObZDY9xozwVHZGfQfa9hkqYP9WyvbRkbK4Hap74";

  // Koleksiyon kimliğini al
  const collection_id = unsplash_collections.dataset.collectionId;

  // Her sayfada görüntülenecek fotoğraf sayısı
  const per_page = 30;

  // Sayfa numarası ve yükleme durumu değişkenleri
  let page = 1;
  let isLoading = false;

  // Daha fazla fotoğraf yükleme işlevi
  const loadMore = async () => {
    // Yükleme işlemi devam ediyorsa çık
    if (isLoading) return;
    isLoading = true;

    try {
      // Unsplash API'ye istek gönder ve veri al
      const response = await fetch(`https://api.unsplash.com/collections/${collection_id}/photos/?client_id=${client_id}&per_page=${per_page}&page=${page}`);
      const data = await response.json();

      // Gelen veri varsa işle
      if (data.length > 0) {
        // Her bir fotoğraf için HTML içeriği oluştur ve ekle
        data.forEach(({ urls }) => {
          unsplash_collections.insertAdjacentHTML('beforeend', generateHTML(urls));
        });
        page++;
      }
    } catch (error) {
      // Hata durumunda konsola yazdır
      console.error("Bir hata oluştu:", error);
    }

    // Yükleme işlemi tamamlandığında durumu güncelle
    isLoading = false;
  };

  // Fotoğraf HTML içeriğini oluşturma işlevi
  const generateHTML = (urls) => {
    return `<div class="masonry-item"> 
            <img src="${urls.thumb}" width="210" height="280" alt="image" />
        </div>`;
  };

  // Sayfa kaydırıldığında daha fazla fotoğraf yükleme
  window.addEventListener('scroll', () => {
    const { scrollTop, scrollHeight, clientHeight } = document.documentElement;
    if (scrollTop + clientHeight >= scrollHeight - 200) {
      loadMore();
    }
  });

  // İlk yükleme işlemini başlat
  loadMore();
}

Sayfada kullanmak için ise data-attr kullanacağız.

<div id="unsplash-collections" data-collection-id="123456"></div>

Örnek olarak görmek isterseniz buraya bakabilirsiniz.

Bu projede, Unsplash API’sini kullanarak koleksiyonu çekme sürecini anlatmaya çalıştım. Umarım yardımcı olmuştur.