{"id":27437430,"url":"https://github.com/deeeelin/nthu_select","last_synced_at":"2025-04-14T20:29:09.857Z","repository":{"id":159205254,"uuid":"600486652","full_name":"deeeelin/NTHU_SELECT","owner":"deeeelin","description":"NTHU_SELECT is a tool that help NTHU students to analyze courses information and choose the most appropriate course .By entering python commands ,we can filter/sort courses in different ways , avoid selecting courses by intuition !","archived":false,"fork":false,"pushed_at":"2023-06-27T07:41:30.000Z","size":39831,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-03-16T14:01:49.003Z","etag":null,"topics":["analyze","analyze-data","analyzer","analyzers","courses","education","nthu","optimizer","parse","parser","python3","school-management","selector","webpage"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deeeelin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-02-11T16:40:19.000Z","updated_at":"2024-03-16T10:42:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa0470de-ef81-4dac-8774-fa3210631d26","html_url":"https://github.com/deeeelin/NTHU_SELECT","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deeeelin%2FNTHU_SELECT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deeeelin%2FNTHU_SELECT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deeeelin%2FNTHU_SELECT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deeeelin%2FNTHU_SELECT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deeeelin","download_url":"https://codeload.github.com/deeeelin/NTHU_SELECT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248954875,"owners_count":21188876,"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","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":["analyze","analyze-data","analyzer","analyzers","courses","education","nthu","optimizer","parse","parser","python3","school-management","selector","webpage"],"created_at":"2025-04-14T20:29:08.917Z","updated_at":"2025-04-14T20:29:09.851Z","avatar_url":"https://github.com/deeeelin.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **NTHU_SELECT**\n\n## **Introduction** \n\nNTHU_SELECT is a tool that help NTHU students to analyze courses information and choose the most appropriate course .By entering python commands ,we can filter/sort courses in different ways , avoid selecting courses by intuition !\n\n## **Motivation**\n\nBeing a sophomore in NTHU , jumping through webpages for consideration of selecting courses makes me feel very unconfortable.And this is why I come up with the idea of designing my own tool of selecting courses.At first, I expect marking a period after finishing the sorting functions , but I found joy while the project goes further , so further updates could occur at every second if I have time ...  \n\n*Wish this tool helps you , ENJOY LEARNING !*\n\n\n***\n\n## **Requirements**\n\nBefore you begin, ensure you have met the following requirements:\n\n1. Having basic python understanding (For advanced usage)\n\n2. You have a machine that is able to execute python3 :\n\n     if not , then download from : https://www.python.org/downloads/\n\n3. You have read the instructions for using NTHU_SELECT\n\n4. The result html file has a little display defect on Safari browser ,for better experience please use Chrome !!\n\n***\n\n## **How to install NTHU_SELECT**\n\n### To install NTHU_SELECT follow these steps:\n\n\n1. Clone or download the zip file\n\n2. Install required python3 modules in requirements.txt using pip3 installer\n\n3. change directory to the installed folder and execute main.py:\n\n***\n\n## **How to use NTHU_SELECT**\n\n*In this section,we use the sample html in \"resources\" folder for example demonstration step by step*\n\n\n### Material gathering :\n\nLCES : \n\n1. Download a department's LCES (Latest course enrollment status) html webpage using chrome , and save as \"LCES\":\n\n![Image](./README_sources/LCES.png)\n\n2. Open the downloaded folder \"LCES_files\" and find the file named \"xp03_m.html\" , rename it : \n\n![Image](./README_sources/LCES_2.png)\n\n3. Put one or more LCES html (obtaiined on step 2) in a directory (like the sample directory \"LCES\" in \"resources\" folder )\n ,and enter the relative directory path to the program \n\n\nCASD: \n\n1. Go to CASD (Course average and Standard deviation webpage and just press \"submit\" :\n![Image](./README_sources/CASD_1.png)\n\n2. Same as LCES ,download the CASD html using chrome save as \"CASD\":\n![Image](./README_sources/CASD.png)\n\n3. Open the downloaded folder \"CASD_files\" and find the file named \"xp03_m.html\" , rename it: \n![Image](./README_sources/CASD_2.png)\n\n 4. Enter the relative path of CASD file to the program\n\nURL:\n\n1. Go to curriculum webpage :\n![Image](./README_sources/curriculum.png)\n2. Click any course's syllabus and copy/paste it's url to the program:\n![Image](./README_sources/url.png)\n\n**Sample terminal input by above instructions :**\n\n![Image](./README_sources/input.png)\n\n\n### Understanding course informations :\n\nThere are six information variable contained for each course :\n\n* `num`-\u003e course number \n\n* `name` -\u003e course name \n\n* `teacher` -\u003e course teacher\n\n* `time` -\u003e course time , in the form like  'R5R6' , 'T1T2T3' , etc.\n\n* `possibility` -\u003e possibility rate to enroll this course , ( 1 means 100% )\n\n* `gpa` -\u003e Average GPA of the course in past semester\n\n* `deviation` -\u003e GPA deviation of the course in past semester\n\n* `score`-\u003e average original score of the course in past semester\n\n* `score_deviation`-\u003e average deviation of original score of the course in past semester\n\nps. value '-1' means information not provided \n\n\n***\n\n\n### **Analyzing** :\n\n\n   After following the instructions above , there should be a file created under NTHU_SELECT's directory called \"result.html\", and information of courses are list on a default table called \"BASE\".(About the viewing of results , see  **View result** part below for more information. )\n\n![Image](./README_sources/reset.png)\n\n\n**BASIC FUNCTIONS:**\n\n* `list` : ```list \u003cconditional expressions in python\u003e``` -\u003e list out courses that fits the conditional expression on current table\n\nExample : \n``` \nlist gpa\u003e3\n```\nResult :\n\n![Image](./README_sources/list.png)\n\n* `filter` : ```filter \u003cconditional expressions in python\u003e``` -\u003e list out courses that fits the conditional expression by considering the courses on the table currently.\n\nExample : \n``` \nfilter 'M5M6' in time\n```\nResult :\n\n![Image](./README_sources/filter.png)\n\n* `sort` :\n\n   ``` sort a \u003csort key/sort function\u003e``` -\u003e sort the courses in the table with the given sort function , in ascending order\n\n   ``` sort d \u003csort key/sort function\u003e``` -\u003e sort the courses in the table with the given sort function , in descending order \n\nps. For the usage of sort function ,see 'MAKING YOUR OWN FUNCTIONS' part below \n\nExample:\n``` \nsort d gpa\n```\nResult :\n\n![Image](./README_sources/sort.png)\n\n* `remove` : ```remove \u003cindex1\u003e \u003cindex2\u003e ...``` -\u003e remove a course from table by index (indexes are shown in the leftmost column of the table)\n\nExample :\n``` \nremove 3\n```\nResult :\n\n![Image](./README_sources/remove.png)\n\n\n* `reset` : ```reset``` -\u003e reset the table (listing all courses)\n\nExample :\n``` \nreset\n```\nResult :\n\n![Image](./README_sources/reset.png)\n \n* `convert`:```convert``` -\u003e since there are classes provide original score informations , instead providing gpa informations ,so users can use this feature to \"roughly\" convert \"gpa to score\" or \"score to gpa\" , converted information will be marked red . Also, users can set their own customized converting function in \"settings\" section in extensions.py (see **MAKING YOUR OWN FUNCTIONS:** part below).\n\nExample:\n```\nconvert\n```\nResult:\n\n![Image](./README_sources/convert.png)\n\n* `exit` : ```exit``` -\u003e exit the program \n\n\n**MORE FUNCTIONS:**\n\n* `unshow` : ```unshow \u003cinfo1\u003e \u003cinfo2 ... ``` -\u003e let the table unshow these informations \n\nExample :\n``` \nunshow num deviation \n```\nResult :\n\n![Image](./README_sources/unshow.png)\n\n\n* `show` : ```show \u003cinfo1\u003e \u003cinfo2\u003e ... ``` -\u003e let the table include these informations \n\nExample :\n``` \nshow deviation num\n```\nResult :\n\n![Image](./README_sources/show.png)\n\n\n* `show_mode` : ```show_mode \u003chtml/text\u003e``` -\u003e let table result been shown in html format or text format\n\nExample :\n``` \nshow_mode text\n```\nResult :\n\n![Image](./README_sources/show_mode.png)\n\nExample : \n```\nshow_mode html\n```\nResult :\n\n![Image](./README_sources/html.png)\n\n* `renew_url` : ```renew_url \u003curl\u003e ``` -\u003e if link of the course doesn't leads to syllabus,sign in to curriculum again and get the new syllabus url\n\n\n**TABLE FUNCTIONS:**\n\n* `add_table` : ```add_table \u003cnew table name\u003e \u003cinherit table name (optional) \u003e ``` -\u003e create a new table and switch to it , the new table can be a copy of other table by adding the additional parameter \n\nExample :\n```\nadd_table table2\n```\n\nResult :\n```\ntable added  !\n```\n\n* `change` : ```change \u003ctable name\u003e``` -\u003e switch to other table \n\nExample : \n```\nchange BASE\n```\n\nResult :\n\n```\ntable changed !\n```\n\n* `delete_table` : ```delete_table \u003ctable name\u003e  ``` -\u003e delete table\n\nExample : \n```\ndelete_table table2\n```\n\nResult :\n\n```\ntable deleted !\n```\n\n**MAKING YOUR OWN FUNCTIONS:**\n \n* `function` : ```function \u003cfunction(parameter)\u003e``` -\u003e users can define their own python analyzing function in extensions.py for individual usage ,make sure:\n\n   * Briefly trace code of  objects.py to get more understanding of the program\n      \n   * The first parameter of every function needs to be \"self\" ,\n\n   * For sorting function : return values  ex. return gpa ,return \u003cnumeric variables\u003e ,etc.\n\n   * For list/filter function : return list of 'course' object (please see class 'course' in objects.py)\n      \n\n\nSample function in extensions.py : (given a string of available time , filter the possible courses that is able to attend in that time  )\n\n![Image](./README_sources/extension.png)\n\nExample application :\n\n``` \nfunction courses_in_available_time('R1R2R3R4T1T2T3T4')\n\n```\nResult :\n\n![Image](./README_sources/function.png)\n\n\n\n* `Converting functions`: \n\n    Since  gpa and score informations cannot be directly converted ,so users can set their own\nconverting functions in setting to convert these two datas in their own way.Please remember function \"SCORE_TO_GPA\" and \"GPA_TO_SCORE\"  can only be modified , but not removed !! \n\nDefault converting function in extensions.py : \n\n![Image](./README_sources/settings.png)\n\n***\n\n## **View result :**\n  \n   * If the show mode is html ,then there will be a file called \"result.html\" produced in the same directory of NTHU_SELECT , you can look up the result by using Chrome browser or VS code extensions (Safari browser may cause encoding errors).\n \n   * If the show mode is text,then there will be a file called  \"result.txt\" produced in the same directory of NTHU_SELECT \n\n***\n\n## **Very welcome to make contributes to NTHU_SELECT**\n\nTo contribute to this project:\n\n1. Fork this repository.\n2. Create branch\n3. Make changes and commit them\n4. Push to your github\n5. Create pull request.\n6. Send a message to me via email\n\n## **List of contributors**\n\n* [@deeeelin](https://github.com/deeeelin) \n\n## **Contact me**\n\nIf you want to contact me you can reach me at \u003cdereklin100503@gmail.com\u003e\n\n## **MIT License**\n\nThis project uses the following license: [MIT License](https://choosealicense.com/licenses/mit/#).\n\n***\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeeeelin%2Fnthu_select","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeeeelin%2Fnthu_select","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeeeelin%2Fnthu_select/lists"}