İTÜ'lüler için İTÜ'lülerden
ITU Helper İstanbul Teknik Üniversitesi öğrencilerine yardım etmek amacıyla ön şart görselleştirme, ders planı oluşturma ve resmi İTÜ sitelerini birleştirme gibi hizmetler sağlayan bir açık kaynaklı websitesidir.
ITU Helper'a bu adresten ulaşabilirsiniz.
Github Actions kullanarak Veri Yenileme Aralıkları kısmında belirtilen aralıklarda, İTÜ'nün çeşitli sitelerinden ders planlarını ve programlarını okur ve itu-helper/data repo'suna commit'ler. Daha sonra, assets/js
dosyasında bulunan javascript scriptleri ile veya manuel olarak bu datalara erişilebilirsiniz.
- (00:04 - 02:49) 15dk da bir: Lesson'lar güncellenir.
- (02:55): Bina kodları ve program kodları güncellenir.
- (03:00): Course'lar ve Ders Planları güncellenir.
- (04:04 - 23:49) 15dk da bir: Lesson'lar güncellenir.
🛈 Lesson'ların daha sık güncellenmesinin nedeni kontenjan verilerinin güncel tutulmasının gerekmesidir. Course'ların ve Ders Planlarının güncellendiği sırada Lesson'ların güncellenememsi Github Actions'da kullandığımız Git Auto Commit'in repo'da değişiklik olması durumda commit atamamasındandır.
- Dersler
- MAT 281E → Course
- CRN: 22964, MAT 281E → Lesson
- Ders Planları
- Bilgisayar ve Bilişim Fakültesi → Faculty
- Yapay Zeka ve Veri Mühedisliği → Program
- 2021-2022 / Güz Dönemi Öncesi → Iteration
Öncelikle <body>
tag'inin alt kısmına şu satırları yazarak scriptleri importlamanız lazım.
<script src="https://cdn.jsdelivr.net/gh/itu-helper/data-updater@master/assets/js/lesson.js"></script>
<script src="https://cdn.jsdelivr.net/gh/itu-helper/data-updater@master/assets/js/course.js"></script>
<script src="https://cdn.jsdelivr.net/gh/itu-helper/data-updater@master/assets/js/course_group.js"></script>
<script src="https://cdn.jsdelivr.net/gh/itu-helper/data-updater@master/assets/js/itu_helper.js"></script>
Daha sonra verilere erişmek için bir ITUHelper
nesnesi oluşturmanız ve verileri okumanız lazım.
// Verileri tutacak nesneyi oluştur.
var ituHelper = new ITUHelper();
// Verileri oku.
ituHelper.fetchData();
⚠️ ituHelper
'dan verilere erişmeye ilk çalıştığınızda, verilere erişildiğindeituHelper.onFetchComplete
fonksiyonu çalışıtırılacak, bu fonksiyonun varsayılan değeri() => {}
şekildedir, sitenizde donma vs. gibi durumları önlemek için bu fonksiyonu kullanabilirsiniz.
Verileri okuduktan sonra aşağıdaki şekildeki gibi istediğiniz verilere erişebilirsiniz
// courses içinde bütün Course'ları barındıran bir
var courses = ituHelper.courses;
// semesters bir dictionary, ders planına erişmek istediğiniz dersi
// semesters["fakülte"]["program"]["iterasyon"] şekilde seçerek
// 8 elemanlı bir semester array'i alabilirsiniz. Semester array'inin
// her bir elemanı da bir Course arrayi.
var semesters = ituHelper.semesters;
Aşağıdaki linkerden verilere erişebilir ve bu verileri kendiniz işleyebilirsiniz.
lesson_rows.txt
: https://raw.githubusercontent.com/itu-helper/data/main/lesson_rows.txt
course_rows.txt
: https://raw.githubusercontent.com/itu-helper/data/main/course_rows.txt
course_plans.txt
: https://raw.githubusercontent.com/itu-helper/data/main/course_plans.txt
building_codes.txt
: https://raw.githubusercontent.com/itu-helper/data/main/building_codes.txt
programme_codes.txt
: https://raw.githubusercontent.com/itu-helper/data/main/programme_codes.txt
Aşağıdaki kodda requests modülüyle; CRN kullanarak, dersin bu sayfadaki verilerine sadece 6 satırla erişim gösterilmiştir.
from requests import get
URL = "https://raw.githubusercontent.com/itu-helper/data/main/lesson_rows.txt"
page = get(URL)
# page.text bize her satırı, table elementleri "|" ile, table rowları ise "\n" ile ayrılmış bir şekilde returnler.
lines = page.text.split("\n")
# Her satırı "|" ile ayırarak tablodaki elemanlara erişiyoruz ve CRN'yi dictionary'nin key'i olacak şekilde dictionary compherension yapıyoruz.
crn_to_lesson_line = {lesson.split("|")[0] : lesson for lesson in lines}
print(crn_to_lesson_line["21516"])
# OUTPUT
# 21516|BLG 102E||Ayşe Tosun, Ali Çakmak|EEBEEB|Salı Perşembe |0830/1129 1530/1729 |5102 6307 |110|85|BLG, BLGE, CEN