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 aşağıdaki iki yöntemden istediğinizi kullanabilirsiniz.
-
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
-
repo'nun içinde
data
adında bir klasör oluşturup içerisine gerekli input dosyalarını oluşturmak olacak-
data/creds.txt
dosyasına, birinci satıra itü hesap adınızı (itu e-posta adresinizin @itu.edu.tr kısmından önceki yeri), ikinci satıra da hesap şifrenizi girin. Örneğin İsmail Koyuncu ([email protected]) iseniz:koyuncu cokGucluSifre123
-
data/crn_list.txt
dosyasına, her satırda farklı bir CRN olacak şekilde almak istediğinizi CRN'leri girin. Örnek:21340 21311 21332
-
data/time.txt
dosyasına ders seçiminizin ne zaman başlayacağını "YIL AY GÜN SAAT DAKİKA
" formatında, girin. Örneği 6 Şubat 2024 Saat:10:00 için:2024 02 06 10 00
[!TIP] Bu dosyayı boş bırakırsanız kod, çalıştırır çalıştırmaz ders seçmeyi deneyecek.
-
⚠️ Ders bırakmak istemiyorsanız, bu adımı atlayın. Ders bırakmak içindata/scrn_list.txt
dosyasına, her satırda farklı bir CRN olacak şekilde bırakmak istediğinizi CRN'leri girin. Örnek:10556 10557
-
Yukarıdaki adımlardan herhangi birini tamamladığınızda, dosya yapınız bu şekilde görünecek:
. ├── data │ ├── creds.txt │ ├── crn_list.txt │ └── time.txt ├── src │ ├── run.py │ ... ├── README.md └── requirements.txt ...
-
-
Programı başlatmak için aşağıdaki kodu çalıştırın, çalıştırmadan önce
data/time.txt
dosyasına girdiğinizi zamana 2 dakikadan fazla kaldığından emin olun. Aksi taktirde hata alacaksınız.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.)
data
dosyasına girilen input değerleri okunur.data/time.txt
dosyasında belirtirlen ders seçim zamanına2
dakika (Eğer kod yeterince önce çalıştırılmışsa5
dakika) kalana kadar beklenir.- İTÜ OBS (Kepler) sitesi açılır ve
data/creds.txt
dosyasındaki bilgiler ile giriş yapılır. - Ders seçim zamanına
45
saniye kalana kadar beklenir. - Ders seçim zamanına
30
saniye kalana kadar, sitenin Network sekmesinden ders seçimi için kullanılan API Token durmadan alınır. - Ders seçimine
30
saniye kalması ile beraber, API Token okunması durdurulur ve ders seçimi beklenikir. Ders seçiminin başlangıçından10
dakika (src/run.py
dosyasındakiSPAM_DUR
değişkeninin değeri belirler.) sonraya kadar;3
saniye (src/run.py
dosyasındakiDELAY_BETWEEN_TRIES
değ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.txt
dosyası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.txt
dosyası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.
data/time.txt
dosyasında girdiğiniz ders kayıt zamanını test etmek için yakın bir zamana çekerek test edebilirsiniz ve 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).
Burada tek dikkat etmeniz gereken şey, test için girdiğiniz zamanın şu andan 2 dakikadan ileride olması, aksi taktirda program akışının 1. kısmındaki " ders seçim zamanına 2 dakika kalana kadar beklenir." kısmı hataya neden olacaktır.
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ındaki
data
klasörü ve içindeki dosyaların oluşturulması için daha kullanıcı dostu bir arayüz geliştirilebilir. (setup.py
ile buna benzer bir şey eklendi fakat hala bir arayüz eklenilebilir.) - 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.