Skip to main content

A python wrapper for YOKATLAS API

Project description

YOKATLAS-py

YOKATLAS API için modern, tip güvenli Python kütüphanesi.

PyPI version Python 3.9+ License: MIT Downloads

English Version


İçindekiler


Kurulum

Gereksinimler: Python 3.9+

# pip ile
pip install yokatlas-py

# uv ile (önerilen)
uv add yokatlas-py

Hızlı Başlangıç

from yokatlas_py import search_lisans_programs, YOKATLASLisansAtlasi
import asyncio

# 1. Program arama (senkron)
results = search_lisans_programs({
    "uni_adi": "boğaziçi",       # Bulanık eşleştirme!
    "program_adi": "bilgisayar"
})
print(f"{len(results)} program bulundu")

# 2. Detaylı program verisi (asenkron)
async def detay_getir():
    atlas = YOKATLASLisansAtlasi({
        'program_id': '103910743',
        'year': 2024
    })
    return await atlas.fetch_all_details()

detaylar = asyncio.run(detay_getir())
print(detaylar['genel_bilgiler'])

Desteklenen Veriler

Desteklenen Yıllar

Program Türü Yıllar
Lisans 2021, 2022, 2023, 2024
Önlisans 2023, 2024

Lisans Veri Tipleri (12)

Anahtar Açıklama
genel_bilgiler Genel bilgi, kontenjan, puan bilgileri
cinsiyet_dagilimi Cinsiyet dağılımı
cografi_bolge_dagilimi Coğrafi bölge dağılımı
lise_grubu_dagilimi Lise grubu dağılımı
lise_bazinda_yerlesen Lise bazında yerleşen sayıları
tercih_istatistikleri Tercih istatistikleri
tercih_edilen_programlar Tercih edilen diğer programlar
tercih_edilen_universiteler Tercih edilen üniversiteler
tercih_edilen_program_turleri Tercih edilen program türleri
tercih_edilen_universite_turleri Tercih edilen üniversite türleri
taban_puan_basari_sirasi Taban puan ve başarı sırası istatistikleri
yerlesen_puan_bilgileri Yerleşenlerin puan bilgileri

Önlisans Veri Tipleri (10)

Lisans ile aynı, sadece yerlesen_basari_siralari ve yerlesen_puan_bilgileri lisansa özeldir.


Arama API

Akıllı Arama (Bulanık Eşleştirme)

from yokatlas_py import search_lisans_programs, search_onlisans_programs, search_programs

# Bulanık üniversite eşleştirme - hepsi "BOĞAZİÇİ ÜNİVERSİTESİ"ni bulur
search_lisans_programs({"uni_adi": "boğaziçi"})
search_lisans_programs({"uni_adi": "bogazici"})  # Türkçe karakter olmadan
search_lisans_programs({"uni_adi": "boun"})      # Kısaltma

# Desteklenen kısaltmalar:
# "odtü", "odtu", "metu" → ORTA DOĞU TEKNİK ÜNİVERSİTESİ
# "itü", "itu" → İSTANBUL TEKNİK ÜNİVERSİTESİ
# "hacettepe" → HACETTEPE ÜNİVERSİTESİ

# Kısmi program adı eşleştirme
results = search_lisans_programs({"program_adi": "bilgisayar"})
# Bulur: Bilgisayar Mühendisliği, Bilgisayar Bilimleri, vb.

# Hem lisans hem önlisans arama
tum_sonuclar = search_programs({"uni_adi": "anadolu"})
print(f"Lisans: {len(tum_sonuclar['lisans'])}")
print(f"Önlisans: {len(tum_sonuclar['onlisans'])}")

Geleneksel Arama

from yokatlas_py import YOKATLASLisansTercihSihirbazi, YOKATLASOnlisansTercihSihirbazi

# Lisans arama
lisans_arama = YOKATLASLisansTercihSihirbazi({
    'puan_turu': 'say',          # say, ea, söz, dil
    'sehir': 'ANKARA',
    'universite_turu': 'Devlet',
    'ust_bs': 50000,             # Maksimum başarı sırası
    'length': 10
})
sonuclar = lisans_arama.search()

# Önlisans arama
onlisans_arama = YOKATLASOnlisansTercihSihirbazi({
    'puan_turu': 'tyt',
    'sehir': 'İSTANBUL',
    'length': 10
})
sonuclar = onlisans_arama.search()

Atlas API

Tüm Program Detaylarını Getirme

import asyncio
from yokatlas_py import YOKATLASLisansAtlasi, YOKATLASOnlisansAtlasi

async def program_verisi_getir():
    # Lisans
    lisans = YOKATLASLisansAtlasi({
        'program_id': '103910743',
        'year': 2024
    })
    veri = await lisans.fetch_all_details()
    return veri

sonuc = asyncio.run(program_verisi_getir())

Örnek Çıktı

# sonuc['genel_bilgiler']
{
  "program_info": {
    "ÖSYM Program Kodu": "103910743",
    "Üniversite Türü": "Devlet",
    "Üniversite": "FIRAT ÜNİVERSİTESİ",
    "Fakülte / Yüksekokul": "Teknoloji Fakültesi",
    "Puan Türü": "SAY",
    "Burs Türü": "Ücretsiz"
  },
  "kontenjan_info": {
    "Genel Kontenjan": "53",
    "Toplam Yerleşen": "60",
    "Boş Kalan Kontenjan": "0",
    "İlk Yerleşme Oranı": "100"
  },
  "puan_info": {
    "0,12 Katsayı ile Yerleşen Son Kişinin Puanı": "329,82598",
    "0,12 Katsayı ile Yerleşen Son Kişinin Başarı Sırası": "218.206"
  }
}

Sadece Belirli Verileri Getirme

async def belirli_veri_getir():
    atlas = YOKATLASLisansAtlasi({
        'program_id': '103910743',
        'year': 2024,
        'keys': ['genel_bilgiler', 'cinsiyet_dagilimi']  # Sadece bunlar
    })
    return await atlas.fetch_all_details()

Hata Yönetimi

import asyncio
from yokatlas_py import YOKATLASLisansAtlasi

async def guvenli_getir():
    atlas = YOKATLASLisansAtlasi({
        'program_id': '999999999',  # Geçersiz ID
        'year': 2024
    })
    sonuc = await atlas.fetch_all_details()

    # Her veri tipi için hata kontrolü
    for anahtar, deger in sonuc.items():
        if isinstance(deger, dict) and 'error' in deger:
            print(f"❌ {anahtar}: {deger['error']}")
        else:
            print(f"✅ {anahtar}: OK")

asyncio.run(guvenli_getir())

Sık Karşılaşılan Hatalar

Hata Sebep Çözüm
HTTP 418 Hız sınırı Bekleyip tekrar deneyin
HTTP 404 Geçersiz program ID veya yıl program_id'yi doğrulayın
Required tables not found Bu program için veri yok Normal - bazı programlarda belirli veriler olmayabilir

Hız Sınırları

YOKATLAS API'nin hız sınırları vardır. Öneriler:

  • İstekler arası gecikme ekleyin: await asyncio.sleep(0.5)
  • Bağlantı havuzu kullanın (YOKATLASClient ile otomatik)
  • Sonuçları mümkünse önbelleğe alın
  • Aynı endpoint'e paralel isteklerden kaçının
import asyncio

async def birden_fazla_program_getir(program_idleri):
    sonuclar = {}
    for pid in program_idleri:
        atlas = YOKATLASLisansAtlasi({'program_id': pid, 'year': 2024})
        sonuclar[pid] = await atlas.fetch_all_details()
        await asyncio.sleep(0.5)  # Hız sınırı gecikmesi
    return sonuclar

Test

# Unit testleri çalıştır
uv run pytest tests/ -v

# Coverage ile çalıştır
uv run pytest tests/ --cov=yokatlas_py

# Gerçek API testi (internet gerektirir)
uv run python -c "
from yokatlas_py import search_lisans_programs
sonuclar = search_lisans_programs({'uni_adi': 'boğaziçi', 'length': 3})
print(f'{len(sonuclar)} program bulundu')
"

Katkıda Bulunma

Katkılarınızı bekliyoruz!

  1. Repository'yi fork edin
  2. Feature branch oluşturun: git checkout -b feature/harika-ozellik
  3. Değişikliklerinizi yapın
  4. Testleri çalıştırın: uv run pytest tests/
  5. Commit edin: git commit -m 'Harika özellik eklendi'
  6. Push edin: git push origin feature/harika-ozellik
  7. Pull Request açın

Lisans

MIT Lisansı - detaylar için LICENSE dosyasına bakın.


Bağlantılar

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yokatlas_py-0.5.4.tar.gz (58.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yokatlas_py-0.5.4-py3-none-any.whl (106.2 kB view details)

Uploaded Python 3

File details

Details for the file yokatlas_py-0.5.4.tar.gz.

File metadata

  • Download URL: yokatlas_py-0.5.4.tar.gz
  • Upload date:
  • Size: 58.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yokatlas_py-0.5.4.tar.gz
Algorithm Hash digest
SHA256 43577df04852c125fef14bd57e50f8a27cb27970d602d82b08d4dd91dcae43d0
MD5 f6cb39848b1b4f35f76042266fd09b8b
BLAKE2b-256 0a7427a1742f628a9dad69a05119468930d2fc4bd9e046b72a4c5862a1bd6554

See more details on using hashes here.

Provenance

The following attestation bundles were made for yokatlas_py-0.5.4.tar.gz:

Publisher: python-publish.yml on saidsurucu/yokatlas-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yokatlas_py-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: yokatlas_py-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 106.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yokatlas_py-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0699d4ae0f27ce48e8e887f6fcab779f80cd695a940b1d5f51a71a3a1a17f5dc
MD5 83f4869e7c2ab1f3ade54e1bf7493851
BLAKE2b-256 4497a8540d6b3bab9c6d46cd2d122b4e894c65bc3d56eca2dc5ba6640bbfa9c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for yokatlas_py-0.5.4-py3-none-any.whl:

Publisher: python-publish.yml on saidsurucu/yokatlas-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page