Epic Games Haftalık Oyunları Gösteren API

Teralmason_tr

Hectopat
Katılım
12 Ağustos 2022
Mesajlar
91
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Unity'den bir uygulama geliştiriyorum, her hafta Epic Games'te verilen güncel ve sonraki haftanın oyunlarını listeliyor. Epic Games Launcher'i açmak başlı başına bir çile olduğu için bu tarz bir uygulamanın zamandan kurtaracağını düşünüyorum. Uygulama tamamlandı bitti fakat bir sorun var, oyun listelerini aldığım API oyunları doğu göstermiyor. Geçen hafta yaparken uygulamayı o haftanın oyunlarını (Beyond Blue ve HUMANKİND) doğru gösteriyordu fakat gelecek haftanın oyunlarını (F1 24 MANAGER ve APEX LEGENDS DLC) göstermiyordu farklı 2 oyun gösteriyordu. Şu an ise güncel oyunlar yerine gelecek haftanın oyunlarını, gelecek haftanın oyunları yerine ise bambaşka oyunlar gösteriyor. Çok uzattım farkındayım fakat önerebileceğiniz ücretsiz bir API servisi var mı bu oyunları aktif ve düzgün gösteren

Proje GitHub Sayfası: GitHub - Teralmason/EpicFreeRadar: Epic Games'in Haftalık Ücretsiz Dağıttığı Oyunları Gösteren Bir Uygulama
Kullandığım API: https://store-site-backend-static.ak.epicgames.com/freeGamesPromotions
Kullandığım Kod:
C#:
using UnityEngine;
using TMPro;  // TextMesh Pro namespace'ini ekliyoruz
using UnityEngine.Networking;
using System;
using System.Collections;

public class FreeGamesDisplay : MonoBehaviour
{
    public TMP_Text thisWeekGame1;  // Text yerine TMP_Text kullanıyoruz
    public TMP_Text thisWeekGame2;
    public TMP_Text nextWeekGame1;
    public TMP_Text nextWeekGame2;
    public TMP_Text timeLeftText;

    private string apiUrl = "https://store-site-backend-static.ak.epicgames.com/freeGamesPromotions";

    void Start()
    {
        // API'den veri almayı başlat
        StartCoroutine(GetFreeGamesData());
    }

    IEnumerator GetFreeGamesData()
    {
        UnityWebRequest www = UnityWebRequest.Get(apiUrl);
        yield return www.SendWebRequest();

        if (www.result == UnityWebRequest.Result.Success)
        {
            // Gelen JSON verisini işleyin
            GameData gameData = JsonUtility.FromJson<GameData>(www.downloadHandler.text);

            // Bu haftaki oyunları al
            if (gameData.data.Catalog.searchStore.elements.Length > 0)
            {
                thisWeekGame1.text = gameData.data.Catalog.searchStore.elements[0].title;
                DateTime endDate = DateTime.Parse(gameData.data.Catalog.searchStore.elements[0].endDate);
                timeLeftText.text = "Bitiş: " + GetRemainingTime(endDate);
            }
            else
            {
                thisWeekGame1.text = "Bu hafta bedava oyun yok.";
            }

            if (gameData.data.Catalog.searchStore.elements.Length > 1)
            {
                thisWeekGame2.text = gameData.data.Catalog.searchStore.elements[1].title;
            }
            else
            {
                thisWeekGame2.text = "";
            }

            // Gelecek haftaki oyunları al
            if (gameData.data.Catalog.searchStore.elements.Length > 2)
            {
                nextWeekGame1.text = gameData.data.Catalog.searchStore.elements[2].title;
            }
            else
            {
                nextWeekGame1.text = "";
            }

            if (gameData.data.Catalog.searchStore.elements.Length > 3)
            {
                nextWeekGame2.text = gameData.data.Catalog.searchStore.elements[3].title;
            }
            else
            {
                nextWeekGame2.text = "";
            }
        }
        else
        {
            Debug.LogError("API isteği başarısız: " + www.error);
        }
    }

    // Kalan süreyi hesaplayıp döndürme
    string GetRemainingTime(DateTime endDate)
    {
        TimeSpan remainingTime = endDate - DateTime.Now;

        if (remainingTime.TotalSeconds > 0)
        {
            return string.Format("{0} gün {1} saat {2} dakika {3} saniye",
                remainingTime.Days, remainingTime.Hours, remainingTime.Minutes, remainingTime.Seconds);
        }
        else
        {
            return "Süre doldu!";
        }
    }
}

// JSON Verisi için gerekli sınıflar
[System.Serializable]
public class GameData
{
    public Data data;
}

[System.Serializable]
public class Data
{
    public Catalog Catalog;
}

[System.Serializable]
public class Catalog
{
    public SearchStore searchStore;
}

[System.Serializable]
public class SearchStore
{
    public Game[] elements;
}

[System.Serializable]
public class Game
{
    public string title;
    public string endDate;
    public string url;
}
 
Belirli periyotlarla (saatlik, günlük) Web Scraping yaparan ve cacheleyen basit bir web API yazabilirsin. ChatGPT bile muhtemelen birkaç promt ile halleder. Bunu da free tier herhangi bi sunucuda hostlayabilirsin.
 

Technopat Haberler

Geri
Yukarı