/** * ProjectLaogai * * Copyright 2018 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * */ package org.mosad.seil0.projectlaogai.hsoparser import org.jsoup.Jsoup class TimeTableParser { private val days = arrayOf("Monday", "Tuesday" ,"Wednesday", "Thursday", "Friday", "Saturday") private var courseTTLinkList = ArrayList() private var timeTableWeek = arrayOf>() init { // create the timetable array for (i in 0..5) { var timeTableDay = arrayOf() for (j in 0..5) { timeTableDay += Lesson("", "","","") } timeTableWeek += timeTableDay } } /** * 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): Array> { 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()) } return timeTableWeek } /** * parse all courses from the courses site at https://www.hs-offenburg.de/studium/vorlesungsplaene/ */ fun getCourseTTLinks(): ArrayList { 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())) } return courseTTLinkList } @Suppress("unused") 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..5) { 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() } }