Skip to content

Periodically scrapes data related to ITU to be used by anyone. This data powers the ITU Helper web sites.

License

Notifications You must be signed in to change notification settings

itu-helper/data-updater

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status GitHub repo size GitHub GitHub issues

ITU Helper

ITU Helper Logo

İ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.




itu-helper/data-updater

Ne İşe Yarar?

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.

Veri Yenileme Aralıkları

  • (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.

Verilerin İsimlendirilmesi

  • 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

Nasıl Kullanılır?

1. Yöntem: Verileri itu_helper.js ile Okumak

Ö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ğinde ituHelper.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;

2. Yöntem: Verileri Manuel Okumak

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

Python Örneği

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

About

Periodically scrapes data related to ITU to be used by anyone. This data powers the ITU Helper web sites.

Topics

Resources

License

Stars

Watchers

Forks