Unofficial API for YokAtlas
Project description
▪ YokAPI
- YokAtlas için resmi olmayan API
- Unoffical API for YokAtlas
İletişim - Contact Me
- Telegram:
izcipy - Mail:
ramazan.izcir@gmail.com
🆕 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
yearssütununu kontrol edip uygun yılı seçin. - Büyük boyutlu JSON’u repo’ya eklemedim; isterseniz
data/data_csv_to_json.pyile 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
- Modeller
pydantic.BaseModelsınıfındandır. BaseModel docs
🔹 Temel Bilgiler
cinsiyet()→Cinsiyetkontenjan()→Kontenjanogr_durum()→OgrenimDurumugenel_blg()→GenelBilgiler
📊 YKS Verileri
🏫 Lise Bilgileri
lise_alan()→LiseAlanliseler()→Liselerlise_grup_tip()→LiseTipokul_birinci()→OkulBirinciKontenjan
🎓 Üniversite Tercih Verileri
tercih_il()→TercihIltercih_fark()→TercihFarktercih_program()→TercihProgramtercih_uni()→TercihUnitercih_uni_tur()→TercihUniTurtercih_istatistik()→TercihIstatistikort_tercih()→OrtTercihtaban_puan()→TabanPuantercih_genel()→TercihGenel
🔄 Öğrenci Hareketleri
mezun_yil()→MezunYildegisim_ogr()→DegisimOgrencimezun_ogr()→MezunOgrencikayitli_ogr()→KayitliOgrenciyatay_gecis()→YatayGecis
🏛 Akademik Bilgiler
ogretim_uyesi()→OgretimUyesiyerlesme_kosul()→YerlesmeKosul
🌍 Coğrafi Bilgiler
cograf_bolg()→CografiBolgeleriller()→İller
📌 Önlisans Fonksiyonlar ve Modeller
- Modeller
pydantic.BaseModelsınıfındandır. BaseModel docs Lisanstan farklı Modeller:TercihFarkOnlisans,TabanPuanOnlisans,GenelBilgilerOnlisansÖnlisansta bulunmayan YKS verileri:yks_puan(),yks_sira()
🔹 Temel Bilgiler
cinsiyet()→Cinsiyetkontenjan()→Kontenjanogr_durum()→OgrenimDurumugenel_blg()→GenelBilgilerOnlisans
📊 YKS Verileri
🏫 Lise Bilgileri
lise_alan()→LiseAlanliseler()→Liselerlise_grup_tip()→LiseTipokul_birinci()→OkulBirinci
🎓 Üniversite Tercih Verileri
tercih_il()→TercihIltercih_fark()→TercihFarkOnlisanstercih_program()→TercihProgramtercih_uni()→TercihUnitercih_uni_tur()→TercihUniTurtercih_istatistik()→TercihIstatistikort_tercih()→OrtTercihtaban_puan()→TabanPuanOnlisanstercih_genel()→TercihGenel
🔄 Öğrenci Hareketleri
mezun_yil()→MezunYildegisim_ogr()→DegisimOgrencimezun_ogr()→MezunOgrencikayitli_ogr()→KayitliOgrenciyatay_gecis()→YatayGecis
🏛 Akademik Bilgiler
ogretim_uyesi()→OgretimUyesiyerlesme_kosul()→YerlesmeKosul
🌍 Coğrafi Bilgiler
cograf_bolg()→CografiBolgeleriller()→İller
📌 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_iddeğerleridata/bolumler_lisans.csvvedata/bolumler_onlisans.csvdosyalarından alınabilir.dersleralanı 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
548f3c5ad53ba043c5728066edd26b4222e03c2d05df4e073c3afdb48ee8412b
|
|
| MD5 |
8402ac8c3fd3d7e3b5b94b10ad819a42
|
|
| BLAKE2b-256 |
fa1d025afe3fb94e2dfe9a49bef031919ee2d4e4c9f5a6539da3a859d16aa17a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b62764b6d33d98d85179f3e637163b44f6c328265fdaecd9c50ca09a6b460b8f
|
|
| MD5 |
3d6678dd88947da8462667311add888b
|
|
| BLAKE2b-256 |
aed8237cbd718baa45d94460425a72afe64e78ae087d15969ce5a6756fcca2c1
|