Skip to main content

Unofficial API for YokAtlas

Project description

▪ YokAPI

  • YokAtlas için resmi olmayan API
  • Unoffical API for YokAtlas

Made with Python

Repo Size Profile Views GitHub license GitHub last commit PyPI Version

İletişim - Contact Me

🆕 Net Sihirbazı desteği eklendi! Bölüm bazlı tüm bölümlere son giren kişilerin netlerine ve obpsine ulaşın.

📦 Kurulum

pip install YokAPI

📄 Örnek Kullanımlar

from YokAPI import Lisans, Onlisans
import asyncio

async def main():
    # Bölüm arama ve ÖSYM program kodu bulma için aşağıdaki CSV bölümüne bakınız.
    async with Lisans(program_id=108210665, year=2024) as lisans:

        r = await lisans.kontenjan() # -> Kontenjan
        """ ---> Kontenjan(
                osym_kod=108210665,
                year=2024,
                kont_gte=85,
                genel_kont=85,
                yer_oran=100.0,
                kesn_kayt=88,
                kayt_yptrmyn=0,
                tubitak=None,
                engelli=None,
                okl_bir_kont=3,
                okl_bir_yer=3,
                t_kont=88,
                t_yer=88,
                ek_yer=0
            )
        """

        print(r.osym_kod) # -> 108210665
        print(r.year) # -> 2024
        print(r.genel_kont) # -> 85

        r_iller = await lisans.iller() # -> Iller
        """ ---> Iller(
                osym_kod=108210665,
                year=2024,
                sehirler=[Il(
                    isim="Toplam",
                    sayi=88,
                    oran=100.0
                ),
                Il(
                    isim="Samsun",
                    sayi=16,
                    orn=18.2
                ),
                ]
            )
        """
        print(r_iller.sehirler[1].isim) # -> Samsun
        print(r_iller.sehirler[1].sayi) # -> 16
        print(r_iller.sehirler[1].orn) # -> 18.2
        lise_dict = r_iller.model_dump()  # pydantic.BaseModel methods
        print(lise_dict) # -> {'osym_kod': 108210665, 'year': 2024, 'sehirler': [{'isim': 'Toplam', 'sayi': 88, 'orn': 100.0}, {'isim': 'Samsun', 'sayi': 16, 'orn': 18.2}, ...]

if __name__ == "__main__":
    asyncio.run(main())

With Olmadan Kullanım

from YokAPI import Lisans, Onlisans
import asyncio

async def main():
    # Bölüm arama ve ÖSYM program kodu bulma için aşağıdaki CSV bölümüne bakınız.

    lisans_1 = Lisans(program_id=108210665, year=2024)
    r = await lisans_1.kontenjan() # -> Kontenjan
    print(r.tubitak) # -> None # 0

    await lisans_1.close() # oluşan sessionu kendimiz kapatmalıyız. with bloğu kendi kapatır.


if __name__ == "__main__":
    asyncio.run(main())

Ayrı Session Kullanma

  • Program session parametresi vermezseniz kendi sessionunu oluşturur. Kendi sessionuzu vermek isterseniz aşağıdaki kodu inceleyin.
from YokAPI import Lisans, Onlisans
import asyncio
import aiohttp
# import certifi
# import ssl

async def main():
    # ssl_context = ssl.create_default_context(cafile=certifi.where())
    session_ = aiohttp.ClientSession(
        connector=aiohttp.TCPConnector(ssl=False),  # İsterseniz ssl_context kullanarak doğrulamayı açabilirsiniz.
        headers={
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
        }        
    )
    onlisans_1 = Onlisans(program_id=108250346, year=2024, session=session_)
    r = await onlisans_1.genel_blg() # -> GenelBilgilerOnlisans
    print(r.bos_kontenjan) # -> None # 0
    await session_.close()

if __name__ == "__main__":
    asyncio.run(main())

🔎 Bölüm OSYM Kodu CSV’si (data/universities_departments.csv)

YokAPI kullanıcılarının bölümlerin ÖSYM program kodunu (osym_kod / program_code) hızlıca bulup veri çekebilmesi için, ÖSYM’nin yayımladığı kaynaklardan derlenmiş toplu ve temizlenmiş bir CSV dosyası eklenmiştir: data/universities_departments.csv.

  • CSV sütunları:
    • program_code (ÖSYM kodu)
    • department_name (Bölüm adı)
    • university_name (Üniversite adı)
    • faculty_name (Fakülte adı)
    • is_undergraduate (Lisans=True, Önlisans=False)
    • years (ör. 2022,2023,2024)
    • tags (İngilizce, KKTC, vb.)
    • score_type (ör. SAY/SÖZ/EA/TYT)
    • scholarship_type (ör. Ücretsiz/Burslu/%50 İndirimli)

Kısa bir örnek satırlar:

program_code department_name university_name faculty_name is_undergraduate years tags score_type scholarship_type
103390230 Abaza Dili ve Edebiyatı DÜZCE ÜNİVERSİTESİ Fen-Edebiyat Fakültesi True 2024 SÖZ Ücretsiz
108690161 Acil Durum ve Afet Yönetimi PAMUKKALE ÜNİVERSİTESİ Serinhisar Meslek Yüksekokulu False 2022,2023,2024 TYT Ücretsiz

Notlar ve öneriler:

  • Şu an YÖK Atlas’ta mevcut yıllar: 2022, 2023, 2024. Bir bölüm bazı yıllarda bulunmayabilir; istek atmadan önce CSV’deki years sütununu kontrol edip uygun yılı seçin.
  • Büyük boyutlu JSON’u repo’ya eklemedim; isterseniz data/data_csv_to_json.py ile CSV’yi üniversiteye göre gruplanmış JSON’a dönüştürüp kullanabilirsiniz.
  • YokAPI scraper ile üretilmiş daha detaylı ve temizlenmiş bir veri seti için: https://github.com/izcir/turkish-university-admissions-dataset

Hızlı kullanım örnekleri

CSV’den osym_kod bulup YokAPI ile veri çekme (Lisans örneği):

import pandas as pd
from YokAPI import Lisans
import asyncio

async def run():
    df = pd.read_csv("data/universities_departments.csv")

    row = df[(df["university_name"] == "ONDOKUZ MAYIS ÜNİVERSİTESİ") &
             (df["department_name"] == "Bilgisayar Mühendisliği") &
             (df["is_undergraduate"] == True)].iloc[0]

    program_id = int(row["program_code"]) # 108210665
    years = str(row.get("years")).split(",") # -> ['2022', '2023', '2024']
    year = years[-1] # -> 2024    

    async with Lisans(program_id=program_id, year=year) as lisans:
        genel = await lisans.genel_blg()
        print(genel.toplam_kontenjan, genel.yer_012_son_sira)

asyncio.run(run())

Önlisans bölümleri için benzer şekilde is_undergraduate == False filtreleyip Onlisans sınıfını kullanın.


📌 Lisans Fonksiyonlar ve Modeller

🔹 Temel Bilgiler

📊 YKS Verileri

🏫 Lise Bilgileri

🎓 Üniversite Tercih Verileri

🔄 Öğrenci Hareketleri

🏛 Akademik Bilgiler

🌍 Coğrafi Bilgiler

📌 Önlisans Fonksiyonlar ve Modeller

🔹 Temel Bilgiler

📊 YKS Verileri

🏫 Lise Bilgileri

🎓 Üniversite Tercih Verileri

🔄 Öğrenci Hareketleri

🏛 Akademik Bilgiler

🌍 Coğrafi Bilgiler


📌 NetSihirbaziLisans ve NetSihirbaziOnlisans Kullanımı

Net Sihirbazı, belirli bir bölüm için tüm üniversitelerdeki yerleşen son kişinin net ortalamalarını getirir.

Örnek Kullanım

from YokAPI import NetSihirbaziLisans, NetSihirbaziOnlisans
import asyncio

async def main():
    # Lisans için (bolum_id: data/bolumler_lisans.csv dosyasından alınır)
    async with NetSihirbaziLisans(bolum_id=11685) as net_lisans:  # 11685 = Abaza Dili ve Edebiyatı
        data = await net_lisans.net_sihirbazi()
        print(data.model_dump())
    
    # Önlisans için (bolum_id: data/bolumler_onlisans.csv dosyasından alınır)
    async with NetSihirbaziOnlisans(bolum_id=32020) as net_onlisans:  # 32020 = Bilgisayar Programcılığı
        data = await net_onlisans.net_sihirbazi()
        print(data.model_dump())

asyncio.run(main())

Örnek Çıktı (Lisans - Abaza Dili ve Edebiyatı)

{
  "bolum_id": 11685,
  "bolumler": [
    {
      "osym_kod": 103390230,
      "year": 2025,
      "uni": "DÜZCE ÜNİVERSİTESİ (4 Yıllık)",
      "katsayi": 0.12,
      "obp": 308.126,
      "puan": 213.28355,
      "bolum_yerlesen": "21",
      "dersler": {
        "TYT Türkçe": 8.0,
        "TYT Sosyal": 7.0,
        "TYT Mat": -1.75,
        "TYT Fen": 2.0,
        "AYT TDE": 0.5,
        "AYT Tar1": 3.25,
        "AYT Coğ1": -0.5,
        "AYT Tar2": 2.25,
        "AYT Coğ2": 5.0,
        "AYT Fel": -0.25,
        "AYT Din": 0.75
      }
    },
    {
      "osym_kod": 103390231,
      "year": 2025,
      "uni": "DÜZCE ÜNİVERSİTESİ (İÖ) (4 Yıllık)",
      "katsayi": 0.12,
      "obp": 295.432,
      "puan": 198.54321,
      "bolum_yerlesen": "15",
      "dersler": {
        "TYT Türkçe": 6.5,
        "TYT Sosyal": 5.0,
        "TYT Mat": 1.25,
        "TYT Fen": 3.0,
        "AYT TDE": 1.0,
        "AYT Tar1": 2.5,
        "AYT Coğ1": 0.75,
        "AYT Tar2": 1.5,
        "AYT Coğ2": 3.25,
        "AYT Fel": 0.5,
        "AYT Din": 1.25
      }
    }
  ]
}

Notlar

  • bolum_id değerleri data/bolumler_lisans.csv ve data/bolumler_onlisans.csv dosyalarından alınabilir.
  • dersler alanı dinamik olarak oluşturulur ve bölümün puan türüne göre farklı dersler içerebilir (SAY/SÖZ/EA/TYT).
  • Her üniversitedeki yerleşen son kişinin net ortalamaları döndürülür.

📌 Modeller

  • Bu bölümde, veri modelleri ve içerikleri açıklanmaktadır.

GenelBilgiler

Alan Tür Bilgi
osym_kod int ÖSYM program kodu
year int Yıl
bolum_ismi str Bölüm adı
program_kod int Program kodu
uni_tur str Üniversite türü
uni str Üniversite adı
fakulte str Fakülte adı
puan_tur str Puan türü
burs_tur str Burs durumu
genel_kontenjan int Genel kontenjan
ob_kontenjan int OBP kontenjanı
toplam_kontenjan int Toplam kontenjan
genel_yerlesen int Genel yerleşen
ob_yerlesen int OBP yerleşen
toplam_yerlesen int Toplam yerleşen
bos_kontenjan int Boş kontenjan
ilk_yer_oran float İlk yerleşme oranı
kayit_yaptirmayan int Kayıt yaptırmayan
ek_yerlesen int Ek yerleşen
yer_012_son_puan float 0.12 katsayı puanı
yer_018_son_puan float 0.18 katsayı puanı
yer_012_son_sira int 0.12 katsayı sıra
yer_018_son_sira int 0.18 katsayı sıra
tavan_puan float En yüksek puan
tavan_basari_sira int En iyi sıra
obp_kirilan int OBP kırılan
ort_obp float Ortalama OBP
ort_diploma float Ortalama diploma

GenelBilgilerOnlisans

Alan Tür Bilgi
osym_kod int ÖSYM program kodu
year int Yıl
bolum_ismi str Bölüm adı
program_kod int Program kodu
uni_tur str Üniversite türü
uni str Üniversite adı
fakulte str Fakülte adı
puan_tur str Puan türü
burs_tur str Burs durumu
genel_kontenjan int Genel kontenjan
ob_kontenjan int OBP kontenjanı
toplam_kontenjan int Toplam kontenjan
genel_yerlesen int Genel yerleşen
ob_yerlesen int OBP yerleşen
toplam_yerlesen int Toplam yerleşen
bos_kontenjan int Boş kontenjan
ilk_yer_oran float İlk yerleşme oranı
kayit_yaptirmayan int Kayıt yaptırmayan
ek_yerlesen int Ek yerleşen
yer_012_son_puan float 0.12 katsayı puanı
yer_018_son_puan float 0.18 katsayı puanı
yer_012_son_sira int 0.12 katsayı sıra
yer_018_son_sira int 0.18 katsayı sıra
tavan_2024_puan float En yüksek puan (2024)
tavan_2024_sira int En iyi sıra (2024)
ort_obp_2024 float Ortalama OBP (2024)
ort_dn_2024 float Ortalama diploma notu (2024)

Kontenjan

Alan Tür Bilgi
osym_kod int ÖSYM program kodu
year int Yıl
kont_gte int Kontenjan Genel, Tübitak, Engelli toplam
genel_kont int Genel kontenjan
yer_oran float Yerleşme oranı
kesn_kayt int Kesin kayıt yaptıran
kayt_yptrmyn int Kayıt yaptırmayan
tubitak int TÜBİTAK kontenjanı
engelli int Engelli kontenjanı
okl_bir_kont int Okul birincisi kontenjanı
okl_bir_yer int Okul birincisi yerleşen
t_kont int Toplam kontenjan
t_yer int Toplam yerleşen
ek_yer int Ek yerleşen

...existing code...

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

yokapi-1.1.7.tar.gz (30.0 kB view details)

Uploaded Source

Built Distribution

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

yokapi-1.1.7-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file yokapi-1.1.7.tar.gz.

File metadata

  • Download URL: yokapi-1.1.7.tar.gz
  • Upload date:
  • Size: 30.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for yokapi-1.1.7.tar.gz
Algorithm Hash digest
SHA256 548f3c5ad53ba043c5728066edd26b4222e03c2d05df4e073c3afdb48ee8412b
MD5 8402ac8c3fd3d7e3b5b94b10ad819a42
BLAKE2b-256 fa1d025afe3fb94e2dfe9a49bef031919ee2d4e4c9f5a6539da3a859d16aa17a

See more details on using hashes here.

File details

Details for the file yokapi-1.1.7-py3-none-any.whl.

File metadata

  • Download URL: yokapi-1.1.7-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for yokapi-1.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 b62764b6d33d98d85179f3e637163b44f6c328265fdaecd9c50ca09a6b460b8f
MD5 3d6678dd88947da8462667311add888b
BLAKE2b-256 aed8237cbd718baa45d94460425a72afe64e78ae087d15969ce5a6756fcca2c1

See more details on using hashes here.

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