Created
February 22, 2022 13:17
-
-
Save mickesv/49151c9f3d6ad7ff1bb522296f691db2 to your computer and use it in GitHub Desktop.
Open kursplan at BTH
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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