import org.jsoup.Jsoup class TimeTableParser { val days = arrayOf("Monday", "Tuesday" ,"Wednesday", "Thursday", "Friday", "Saturday") var timeTableWeek = arrayOf>() var courseTTLinkList = ArrayList() /** * get the timetable from the given url * the timetable is organised per row not per column; * Mon 1, Tue 1, Wed 1, Thur 1, Fri 1, Sat 1, Mon 2 and so on */ fun getTimeTable(courseTTURL: String) { // TODO do we even need this? // create the timetable array // for (i in 0..5) { // var timeTableDay = arrayOf() // for (j in 0..6) { // timeTableDay += Lesson("", "","","") // } // timeTableWeek += timeTableDay // } val scheduleHTML = Jsoup.connect(courseTTURL).get() val week = scheduleHTML.select("h1.timetable-caption").text() println("$week successful!\n") scheduleHTML.select("table.timetable").select("td.lastcol").forEachIndexed { index, element -> timeTableWeek[index % 6][index / 6] = Lesson(element.select("div.lesson-subject").text(), element.select("div.lesson-teacher").text(), element.select("div.lesson-room").text(), element.select("div.lesson-remark").text()) } } /** * parse all courses from the courses site at https://www.hs-offenburg.de/studium/vorlesungsplaene/ */ fun getCourseTTLinks() { val courseHTML = Jsoup.connect("https://www.hs-offenburg.de/studium/vorlesungsplaene/").get() courseHTML.select("ul.index-group").select("li.Class").select("a[href]").forEachIndexed { _, element -> courseTTLinkList.add(CourseTTLink(element.attr("href"),element.text())) } } fun printTimeTableWeek (timeTableWeek: Array>) { for (j in 0..5) print(days[j].padEnd(25 ,' ') + " | ") println() for (j in 0..5) print("-".padEnd(26 + (j.toFloat().div(j).toInt()), '-') + "+") println() for (i in 0..6) { for (j in 0..5) print(timeTableWeek[j][i].lessonSubject.padEnd(25 ,' ').substring(0,25) + " | ") println() for (j in 0..5) print(timeTableWeek[j][i].lessonTeacher.padEnd(25 ,' ').substring(0,25) + " | ") println() for (j in 0..5) print(timeTableWeek[j][i].lessonRoom.padEnd(25 ,' ').substring(0,25) + " | ") println() for (j in 0..5) print("-".padEnd(26 + (j.toFloat().div(j).toInt()), '-') + "+") println() } println() } fun printTimeTableDay(timeTableDay: Array, day: Int) { println(days[day]) for (i in 0..6) { println("-".padEnd(22, '-')) println(timeTableDay[i].lessonSubject) println(timeTableDay[i].lessonTeacher) println(timeTableDay[i].lessonRoom) } println("-".padEnd(22, '-')) println() } }