{"id":29858034,"url":"https://github.com/catmanjan/anutimetable","last_synced_at":"2025-07-30T01:22:07.392Z","repository":{"id":34546790,"uuid":"38491385","full_name":"catmanjan/anutimetable","owner":"catmanjan","description":"Intuitive timetable builder for the Australian National University.","archived":false,"fork":false,"pushed_at":"2022-12-08T07:44:11.000Z","size":17564,"stargazers_count":57,"open_issues_count":17,"forks_count":35,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-03-20T14:59:15.430Z","etag":null,"topics":["anu","scraper","timetable"],"latest_commit_sha":null,"homepage":"http://www.anutimetable.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catmanjan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-03T12:20:25.000Z","updated_at":"2024-03-20T14:59:15.430Z","dependencies_parsed_at":"2023-01-15T07:45:15.867Z","dependency_job_id":null,"html_url":"https://github.com/catmanjan/anutimetable","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/catmanjan/anutimetable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catmanjan%2Fanutimetable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catmanjan%2Fanutimetable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catmanjan%2Fanutimetable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catmanjan%2Fanutimetable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catmanjan","download_url":"https://codeload.github.com/catmanjan/anutimetable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catmanjan%2Fanutimetable/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267791287,"owners_count":24144920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anu","scraper","timetable"],"created_at":"2025-07-30T01:21:50.562Z","updated_at":"2025-07-30T01:22:07.378Z","avatar_url":"https://github.com/catmanjan.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# anutimetable\n\n* Timetable database last update: 2021-10-31\n\n## :warning: This project is no longer maintained. It has been replaced by [anucssa/anutimetable](https://github.com/anucssa/anutimetable), available at https://timetable.cssa.club/ :warning:\n\n## Modification Notes\n\nAny changes to [index.html](index.html), [js/timetable.js](js/timetable.js) and [anuscrape/scraper.py](anuscrape/scraper.py) should be synchronized with the template files in [semester_update](/semester_update) folder.\n\n## Updates\n\n### 2021-08-07\n\n* Add semester auto-detect thanks to [@Lutra-Fs](https://github.com/Lutra-Fs)\n\n### 2021-02-13\n\n* Added automatic weekly scrapes of the timetable thanks to [@BishopOfTurkey](https://github.com/BishopOfTurkey)!\n\n### 2018-07-20\n\n* Fixed iCal export thanks to [@Alwinius](https://github.com/Alwinius)\n\n### 2018-07-17\n\n* Updated semester 2 database thanks to [@calmelb](https://github.com/calmelb), [@caitelatte](https://github.com/caitelatte), and [@tetris12367](https://github.com/tetris12367)\n\n### 2018-06-18\n\n* This version now maintained by [@mdchia](https://github.com/mdchia/anutimetable)\n* Patched up for semester 2 by [@jackadamson](https://github.com/jackadamson)\n\n### 2018-03-11\n\n* Restored display of class locations\n* Added week switcher\n\n### 2018-03-09\n\n* Temporarily removed location of classes as requested by ANU\n\n### 2018-02-22\n\n* Fixed an issue where updating the revision num will cause a `Course.course` initialize error\n* Removed auto-selector residual code for now\n* Added Mocha test directory\n\n### 2018-02-15\n\n* Added option to take a .PNG screenshot of the timetable\n* Added hide button to activities (requested by email from a few people)\n\n### 2018-01-16\n\n* Finalised auto-scraper and added the following scripts under /anutimtable/anuscrape:\n  1. `commit.sh` - bash script that checks for new timetable data and updates the GitHub repo\n  2. `schedule_scraping.bak` - crontab configuration that sets scraping frequency\n  3. `update_date.py` - python program that updates version numbers if new data is found\n\n### 2018-01-12\n\n* Changed the regex used in the scrapers to work correctly with the 2018 timetable\n* Added a verify.py script that takes the timetable.json file and checks for conflicting course activities in terms of iid values\n\n### 2017-12-28\n\n* Changed scrapers to use the 2018 timetable website\n* Changed mode to _S1 courses only\n\n### 2017-02-20\n\n* Added offline support\n\n### 2017-02-14\n\n* Added `autofocus` property for the course input box\n\n### 2017-02-13\n\n* Fixed an issue with IE/Edge where `Array.prototype.indexOf` method does not exist\n\n### 2017-01-24\n\n* Fixed an issue with scraper generating wrong iid\n* Fixed an issue with some cell's color won't go away after deleting the course (`parent().get(0)` only returns one element, therefore need to loop over `parent()`)\n\n### 2017-01-22\n\n* Enhanced `choose` button to be displayed only when there's alternatives\n* Fixed some spelling errors\n\n### 2017-01-21\n\n* Added a PHP scraper (for non-ANU network use)\n* Fixed the background color issue (temporarily)\n\n### 2016-02-06\n\n* Fixed table displaying issue.\n\n### 2016-02-04\n\n* Added auto-selecting feature.\n  * No UI for now, use Magic.cast() in console to see effects.\n  * The result will be ordered by clashes in ascending order.\n\n### 2016-01-28\n\n* Temporarily fixed the problem with choosable compulsory courses.\n  * It will be deprecated soon.\n\n### 2016-01-18\n\n* Fixed the problem with confirm window popping out while clicking re-choose buttons.\n* Added border spacing.\n\n### 2016-01-16\n\n* Compressed JSON structure.\n  * `day` will now be index instead of string.\n  * Removed `name` because it's redundant.\n  * Added `id`.\n* Added tutorial re-choose feature (appeared as icons).\n* Added pinned classes icon effect.\n* Added confirm window when deleting courses.\n* Added `revisionNum`.\n  * If a new value is found, then clear tutorials.\n  * **This value is only changed when changing data structure!**\n* Added mouseover effects when you hover a choosable tutorial.\n  * The purpose of this is to ease the pain of finding same tutorials with different time.\n* Changed `delete` button next to course name to icons.\n* Changed the behaviour of tutorial displaying.\n  * It will now automatically add newly updated classes to the cookie/localStorage instead of ignoring its existence.\n  * After choosing a tutorial, the element will be deleted instead of set to hidden.\n  * The `choose` button will now longer appear if there's a chosen tutorial.\n  * Because of the order changing after re-choose tuts, lesson style will now determined by the existence of lesson-style-x, instead of hash.\n* Changed the way of deciding how different groups belong to one tutorial.\n  * The normal format of a class name is: `{COURSE_NAME}{GROUP_TYPE}{GROUP_NUMBER}/ {NUMBER}`, {NUMBER} will be used.\n* Changed the structure of Course.structure (`{ class: chosen tutorial id, ... }`).\n* Changed weekdays header to full.\n* Removed leading zeros in `item.info` and ending `/`s (because the official data sometimes mistakenly gives different numbers such as `01` and `1`).\n* Removed usage of `data-fgroup`, `data-id` will now be used.\n* Fixed a bug where when creating an empty timeslot, it will clone the lesson style class as well.\n\n### 2016-01-11\n\n* Style changes to save vertical real estate.\n* Made lesson style fit to whole block.\n* Fixed the issue where the color remains when a class is removed.\n* Removed animations.\n\n### 2016-01-06\n\n* Fixed an issue with colspan.\n* Cleared redundant code.\n\n### 2015-12-21\n\n* Fixed course deletion animation (slideDown() -\u003e slideUp()).\n* Fixed pressing enter will not add a course issue under some browsers (event.which is not supported).\n\n### 2015-12-19\n\n* Rewrote the code related to :30 courses support.\n  * Instead of remove unused cells, it will now just hide them, this makes searching much easier.\n  * It's now fully functional and the code is much cleaner than the previous version.\n  * **There should be no broken table if used proper, but if it occurs, please submit an issue with a screeshot and the course addition/deletion order.**\n* 'class' label is now treated as 'non-compulsory' category and is selectable between different ones.\n* Added one more color to make sure six courses all get a different widget color.\n* Replaced the text 'Updated for 2016.' with default timetable update time.\n* Changed the table to show borders since it's hard to see which timeslot section the class belongs to without them\n  * If we set the lesson block to inherit the cell height (cell height 1px and lesson block height 100%), it'll cause some issues when adding/deleting classes, even not, it shows too much space and looks weird).\n\n### 2015-12-15\n\n* Added maximum 6 courses adding limitation.\n  * Code is messy, will need to rewrite it someday.\n  * If the table displays in an abnormal way, submit an issue with a screeshot and the course addition/deletion order.\n* Added :30 courses supports.\n* Changed the structure for JSON (**Note that the old JSON will no longer work!**).\n  * Removed key 'hour', added key 'start', altered key from 'duration' to 'dur'.\n  * Combined all identical data classes.\n  * Size reduced by 50%.\n\n### 2015-12-09\n\n* Deprecated save \u0026 flush button, these operations will now be processed automatically. \u003cissue #26\u003e\n* Reconstructed functions \u0026 variables into OOP style.\n  * Not sure why 'this' keyword sometimes not working so using the direct name (e.g. Course.display()) instead for now.\n* Made the load JSON button only visible when the online source is not accessible. \u003cissue #27\u003e\n* Made the auto-complete more smarter. \u003cissue #29, #31\u003e\n  * It'll now order by matching relevance.\n  * The name will be more readable.\n  * Course addition will be now ignore everything after the dash, instead of underscore.\n* Changed the structure for JSON (**Note that the old JSON will no longer work!**).\n  * The structure will now be: [[fullName], [info], [location], [course]].\n  * Removed key 'fullName', added key 'nid', 'iid' and 'lid' in course object.\n  * This provides an index searching for fullName, location and info, which reduces the size of the data by about 50%.\n  * The structure will change again in the upcoming days to merge same classes together and suit :30 classes. The file size will be significantly reduced.\n\n### 2015-12-08\n\n* Added delete, clear, save and flush feature (use localStorage / cookie depends on the availability).\n* Fixed an issue with tutorial selection (explained in master upstream branch issue #22).\n* Fixed the issue with not being able to choose between one hour tutorials.\n* Fixed the issue with ics export will include all the tutorials regardless of choosing or not.\n* Categorized files into folders (js, css and data, all json files will be saved in data).\n* Added auto-complete feature.\n  * For matching, if the user is using his/her/theirs own data without fullName field, then it'll use name instead.\n* Added a spider written in jQuery.\n  * Usage: Go to the pre-course-selection page, execute the code in a console or inline javascript: link.\n  * Will retrieve validation data automatically, no need to input by yourself.\n  * Appends an extra field 'fullName' to the data, which denotes the human readable name of the course (for use of auto-complete).\n  * When executing, it'll display a mini progress box in the middle of the page.\n  * This will fix the issue #22 without using a new identifier.\n\n### 2015-12-06\n\n* The scraper is planned for deletion.\n* Instead, use the converter on the direct data source \u003chttp://udsttweb99.anu.edu.au/Timetable2015/Timetable.csv\u003e (hopefully this will be updated by ANU for 2016)\n\n### 2015-12-05\n\n* 2016 draft timetable available.\n* Added load json feature, supports local/offline (i.e. protocol file://, not local server) use.\n* Fixed the /timetable.json relative path issue (was directing to the root directory).\n* Changed the ics import button location and color.\n\n### Known issues\n\n* After deleting a course located at a index other than the last index, if the current index column is all empty, it won't delete this unused index column, which will cause a redundant gap column, but it'll be re-indexed after refreshing.\n* When there is only one class for a certain group left, the choose button shouldn't be visible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatmanjan%2Fanutimetable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatmanjan%2Fanutimetable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatmanjan%2Fanutimetable/lists"}