Bu repo sayesinde otomatik bir şekilde, önceden zamanlayarak ve HTTP request kullanarak İTÜ Kepler üzerinden ders seçebilirsiniz.
-
İlk olarak repo'yu bilgisayarınıza kurun. Aşağıdaki iki seçenekten istediğiniz ile indirebilirsiniz.
-
Bilgisayarınızda Git kurulu ise aşağıdaki kod'u kullanın.
git clone https://github.com/AtaTrkgl/itu-ders-secici.git
-
Manuel olarak indirmek için ise GitHub sayfasındaki yeşil "Code" Tuşuna basın ve açılan pencereden "Download ZIP" tuşuna basın. Ardından indirdiğiniz ZIP dosyasını sağ tıklayıp ayıklayın.
-
-
Kurulu değil ise Python kurun. (Detaylı bilgi). Kurulumda dikkat etmeniz gerekenler; ilk penceredeki Add Python to PATH kutucuğunu ve Optional Features bölümündeki pip kutucuğunu tiklemeniz gerekiyor.
-
Gerekli paketleri kurmak için aşağıdaki komutu çalıştırın.
pip install -r requirements.txt
-
Daha sonra yapmanız gereken, gerekli bilgileri programa girmek. Bunun için kurulum sihirbazını kullanmanız önerilir fakat isterseniz manuel olarak da girebilirsiniz.
⚠️ Program zamanlama için bilgisayarınızın lokal zamanını kullanmaktadır, eğer bilgisayarınız Türkiye saat diliminde değil ise, lokal zamanınıza göre ders seçimi saatini ve tarihini giriniz.💡 Kurulum sihirbazı, girilen CRN'lerin doğrulunu ITU Helper SDK ile kontrol etmektedir.
-
[ÖNERİLEN] Kurulum Sihirbazı ile Kurulum: Gerekli dosyaları oluşturmak için aşağıdaki kodu kullanarak kurulum sihirbazını çalıştırın, sürecin devamında ekrandaki adımları takip edin.
python src/setup.py
-
Manuel Kurulum: repo'nun içinde
dataadında bir klasör oluşturup içerisine gerekliconfig.jsonadında bir dosya oluşturun. ardından, dosyanın içerisine, aşağıdaki yazıyı yapıştırın ve boşlukları doldurun.config.json Şablonu
{ "account": { "username": "{İTÜ KULLANICI ADINIZ}", "password": "{İTÜ ŞİFRENİZ}" }, "time": { "year": {DERS SEÇİM ZAMANI - YIL}, "month": {DERS SEÇİM ZAMANI - AY}, "day": {DERS SEÇİM ZAMANI - GÜN}, "hour": {DERS SEÇİM ZAMANI - SAAT}, "minute": {DERS SEÇİM ZAMANI - DAKİKA} }, "courses": { "crn": [{ALINACAK CRN'ler, virgülle ayırılmış şekilde}], "scrn": [{BIRAKILACAK CRN'ler, virgülle ayırılmış şekilde}] } }Doldurulmuş config.json Örneği
İsmail Koyuncu (koyuncu@itu.edu.tr) için, 10 Şubat 2025, 14:00 tarihinde, 21340, 21311 ve 21332 CRN'li dersleri alıp, hiç bir dersi bırakmayacak
config.jsonörneği:{ "account": { "username": "koyuncu", "password": "cokGucluSifre123" }, "time": { "year": 2025, "month": 2, "day": 10, "hour": 14, "minute": 0 }, "courses": { "crn": [21340, 21311, 21332], "scrn": [] } }
Yukarıdaki yöntemlerden herhangi birini tamamladığınız takdirde, dosya yapınız aşağıdaki gibi görünmeli.
. ├── data │ └── config.json ├── src │ ├── run.py │ ... ├── README.md └── requirements.txt ... -
-
Programı başlatmak için aşağıdaki kodu çalıştırın.
python src/run.py
-
Program çalışmaya başladığında, ders seçimi sonlanınca bilgisayarın kapatılıp kapatılmayacağı sorulacak, [E] harfine basmanız durumunda bilgisayar otomatik olarak kapatılacaktır. (NOT: Sadece Windows cihazlarda çalışır.)
-
datadosyasına girilen input değerleri okunur. -
Belirtirlen ders seçim zamanına
5dakika kalana kadar beklenir. -
İTÜ OBS (Kepler) sitesi açılır ve
data/config.jsondosyasındaki bilgiler ile giriş yapılır. -
Ders seçim zamanına
45saniye kalana kadar beklenir. -
Ders seçim zamanına
30saniye kalana kadar, sitenin Network sekmesinden ders seçimi için kullanılan API Token durmadan alınır. -
Ders seçimine
30saniye kalması ile beraber, API Token okunması durdurulur ve ders seçimi beklenilir. -
Ders seçimi başlayana kadar,
0.1saniyede (src/run.pydosyasındakiDELAY_BETWEEN_TIME_CHECKSdeğişkeninin değeri belirler.) bir ders seçim vaktinin gelip gelmediği kontrol edilir.💡 Eğer program test modunda çalıştırılırsa, bu aşamada sadece girilen vaktin gelmesi beklenir.
-
Ders seçiminin başlandığı algılandıktan
10dakika (src/run.pydosyasındakiSPAM_DURdeğişkeninin değeri belirler.) sonraya kadar;3saniye (src/run.pydosyasındakiDELAY_BETWEEN_TRIESdeğişkeninin değeri belirler.) aralıklarla ders seçimi için HTTP request yollanır. Bu süreç, İTÜ OBS (Kepler) arayüzüne durmadan CRN'lerin -data/crn_list.txtdosyasındaki sırayla - girilip onaylanması ile aynı sonucu yaratır fakat websitesi çökmelerine daha dayanıklıdır. Bü süreçte bütün işlemlerin başarılı olması durumda program otomatik olaran sonlandırılacaktır. -
Süreç boyuncaki eylemler loglanır ve
logs/logs.txtdosyasına kaydedilir. -
Program sonlanır ve programın başında onay verildiyse bilgisayar kapatılır.
Bu programın en güzel tarafı, ders seçimi için İTÜ OBS (Kepler) arayüzü yerine HTTP request kullanmasıdır. Bu sayede, aktif bir ders seçim zamanı içinde değilken ve ders kayıt taslak da aktif değilken bile test edebilirsiniz.
Öncelikle test için, ders seçim zamanını daha yakın bir vakit olarak girin, şu andan yaklaşık 5-10 dakika ilerisi önerlir. Daha sonra, programı aşağıdaki komut ile çalıştırın
python src/run.py -testArdından sonuçları İTÜ OBS (Kepler) - Ders Kayıt İşlem Geçmişi sayfasından görebilirsiniz (Hata olarak aktif bir ders seçim zamanı içinde değilsiniz mesajını göreceksiniz).
Bu repo'ya katkıda bulunmak isterseniz aşağıdaki eklemeler ile başlayabilirsiniz 😊
- API Token alınmasını durdurup, HTTP request ile ders seçimine geçmek yerine; API Token alınmasını farklı bir thread üzerinde durmadan devam ettirerek başka bir thread üzerinden de HTTP request atarak hata ihtimali daha da indirilebilir.
-
Kurulum sırasındakidataklasörü ve içindeki dosyaların oluşturulması için daha kullanıcı dostu bir arayüz geliştirilebilir. -
Ders seçimi için yollanan HTTP request'leri, önceden belirlenmiş bir süre boyunca spam'lamak yerine, HTTP request'in return code'una bakarak devam edilebilir. Derslerin hepsi seçilince otomatik durup seçilememesi durumunda sadece seçilemeyen dersleri almaya çalışmaya devam edebilir. Bu sayede ayrıca yedek CRN sistemi eklenebilir ve seçilemeyen ders yerine yedek CRN alınabilir. -
Yatay geçiş yapanların İTÜ OBS (Kepler) giriş ekranında hangi bölümünü kullanacağını soran bir sayfa daha çıkıyor. Kod şu anda buna karşın hiç bir şey yapmıyor ve manuel olarak hızlıca seçilmediği sürece çalışmıyor. Bu ekranda otomatik olarak güncel bölümün seçilmesi eklenilebilir.