Skip to content

Instantly share code, notes, and snippets.

@mickesv
Created February 22, 2022 13:17
Show Gist options
  • Save mickesv/49151c9f3d6ad7ff1bb522296f691db2 to your computer and use it in GitHub Desktop.
Save mickesv/49151c9f3d6ad7ff1bb522296f691db2 to your computer and use it in GitHub Desktop.
Open kursplan at BTH
(defun kursplan-get-latest-revision-number (course-code &optional lang)
"Get the latest revision of kursplan in language LANG (\"se\" or \"en\") for COURSE-CODE."
(let* ((lang (or lang "sv"))
(url (format "https://edu.bth.se/utbildning/utb_kursplaner.asp?sok=%s" course-code))
(pattern (format "kursplan\\?kurskod=%s&revision=\\([0-9]+\\)&lang=%s" course-code lang)))
(with-temp-buffer
(url-insert-file-contents url)
(goto-char (point-min))
(re-search-forward pattern nil t nil)
(match-string 1))))
(defun kursplan-fetch-and-open (course-code &optional revision lang)
"Get the latest kursplan for COURSE-CODE.
The optional REVISION is a specific revision.
The optional LANG specifies a different language. Typically this
is either \"en\" or \"se\", defaults to \"se\"."
(let* ((tmp-file-name (make-temp-file "kursplan-" nil ".pdf"))
(lang (or lang "sv"))
(revision (or revision (kursplan-get-latest-revision-number course-code lang) "1"))
(url (concat "https://edu.bth.se/utbildning/utb_kursplan.asp"
"?Kurskod=" course-code
"&RevisionsNr=" revision
"&lang=" lang
"&format=pdf")))
(with-temp-file tmp-file-name
(url-insert-file-contents url))
(find-file tmp-file-name)))
(defun kursplan-open (course-code &optional lang)
"Open latest kursplan for COURSE-CODE. Language LANG defaults to \"se\", can also be \"en\"."
(interactive (list
(read-string "Course code: ")
(read-string "Language: " nil nil '("se" "en"))))
(kursplan-fetch-and-open course-code nil lang))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment