{"id":19449723,"url":"https://github.com/metakgp/gyft","last_synced_at":"2025-04-05T06:09:53.740Z","repository":{"id":44591373,"uuid":"64972921","full_name":"metakgp/gyft","owner":"metakgp","description":"Get Your Freaking Timetable","archived":false,"fork":false,"pushed_at":"2025-03-11T19:51:47.000Z","size":815,"stargazers_count":57,"open_issues_count":5,"forks_count":63,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-29T05:11:14.045Z","etag":null,"topics":["erp","google-calendar","gyft","hacktoberfest","ics","timetable"],"latest_commit_sha":null,"homepage":"https://gyft.metakgp.org","language":"Python","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/metakgp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"publiccode":null,"codemeta":null}},"created_at":"2016-08-04T23:09:12.000Z","updated_at":"2025-03-11T19:51:51.000Z","dependencies_parsed_at":"2023-12-30T10:20:27.188Z","dependency_job_id":"93ee06a1-8a84-47ee-8b93-7d3a0c8ae933","html_url":"https://github.com/metakgp/gyft","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metakgp%2Fgyft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metakgp%2Fgyft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metakgp%2Fgyft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metakgp%2Fgyft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metakgp","download_url":"https://codeload.github.com/metakgp/gyft/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294541,"owners_count":20915340,"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":["erp","google-calendar","gyft","hacktoberfest","ics","timetable"],"created_at":"2024-11-10T16:33:32.968Z","updated_at":"2025-04-05T06:09:53.722Z","avatar_url":"https://github.com/metakgp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![Wiki][wiki-shield]][wiki-url]\n\n\u003c/div\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003c!-- \u003ca href=\"https://github.com/metakgp/gyft\"\u003e\n    \u003cimg width=\"140\" alt=\"image\" src=\"https://user-images.githubusercontent.com/86282911/206632284-cb260f57-c612-4ab5-b92b-2172c341ab23.png\"\u003e\n  \u003c/a\u003e --\u003e\n\n  \u003ch1 align=\"center\"\u003eGYFT\u003c/h1\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ci\u003eGet Your Freaking Timetable\u003c/i\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/metakgp/gyft/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/metakgp/gyft/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n\u003csummary\u003eTable of Contents\u003c/summary\u003e\n\n- [About The Project](#about-the-project)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n- [Usage](#usage)\n- [Development Notes](#development-notes)\n  - [Updates To Be Made Each Sem](#updates-to-be-made-each-sem)\n- [Contributing](#contributing)\n- [Maintainer(s)](#maintainers)\n\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\nGets your timetable from ERP and adds it to your Google Calendar or gives you an ICS file which you can add in any common calendar application.\n\n\u003e **Note** All updates to this repo should reflect, with appropriate refactorisation, in [gyft-serve](https://github.com/metakgp/gyft-serve/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nTo set up a local instance of the application, follow the steps below.\n\n### Prerequisites\n\nThe following prerequisites are required to be installed for the project to function properly:\n\n- Python 3\n- IIT-KGP Student [ERP](https://erp.iitkgp.ac.in) Account\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Installation\n\n_Now that the environment has been set up and configured to properly compile and run the project, the next step is to install and configure the project locally on your system._\n\n1. Clone the repository\n   ```sh\n   git clone --depth 1 https://github.com/metakgp/gyft\n   ```\n2. Change the current directory to the project directory\n   ```sh\n   cd gyft\n   ```\n3. Install the dependencies\n   ```sh\n   pip install -r requirements.txt\n   ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\n1. Run the script\n   ```sh\n   python3 gyft.py\n   ```\n2. Enter your roll number, password, security answer, and OTP (if required) when prompted\n3. Now you can choose between 2 options, which will be prompted to you:\n\n   - #### Add to Google Calendar:\n\n     - For this, you have to get your `credentials.json` and save it as `client_secret.json` to the current directory by following the Step 1 from [here](https://developers.google.com/google-apps/calendar/quickstart/python#step_1_turn_on_the_api_name)\n     - Also note that adding to Google Calendar requires an Internet connection\n\n   - #### Generate ICS file:\n     - This will generate an ICS file which you can import into any calendar application.\n     - For importing to Google Calendar, follow the instructions given [here](https://support.google.com/calendar/answer/37118?hl=en).\n\n\u003cbr /\u003e\n\n- Optional flags:\n  - To delete all the recurring events added by the CLI or GYFT Web Application (uses a property of recurrence to identify events to delete), you can run `gyft.py` with the `--del-events` flag:\n    ```sh\n    python3 gyft.py --del-events\n    ```\n  - To specify the output file (`.ics`) to which the ICS file will be written, use the `--output` flag.\n    ```sh\n    python3 gyft.py --output autumn_2023.ics\n    ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Development Notes\n\nThis project utilizes the [iitkgp-erp-login](https://github.com/proffapt/iitkgp-erp-login-pypi/) package to handle ERP login functionality.\n\n### Updates To Be Made Each Sem\n\nThe following procedure is to be followed each new semester by the maintainer for updating GYFT to work properly.\n\n- Download the academic calendar for the particular year.\n- New semester dates need to be updated in utils/dates.py\n- The format for the date-time is `(YYYY, MM, DD, HH, MM)`.\n- Raise a pull request once the dates are updated.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](https://github.com/metakgp/gyft/blob/master/CONTRIBUTING.md) guide to know more.\n\n## Maintainer(s)\n\n- [Ashwin Prasanth](https://github.com/ashwinpra)\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/metakgp/gyft.svg?style=for-the-badge\n[contributors-url]: https://github.com/metakgp/gyft/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/metakgp/gyft.svg?style=for-the-badge\n[forks-url]: https://github.com/metakgp/gyft/network/members\n[stars-shield]: https://img.shields.io/github/stars/metakgp/gyft.svg?style=for-the-badge\n[stars-url]: https://github.com/metakgp/gyft/stargazers\n[issues-shield]: https://img.shields.io/github/issues/metakgp/gyft.svg?style=for-the-badge\n[issues-url]: https://github.com/metakgp/gyft/issues\n[license-shield]: https://img.shields.io/github/license/metakgp/gyft.svg?style=for-the-badge\n[license-url]: https://github.com/metakgp/gyft/blob/master/LICENSE.txt\n[wiki-shield]: https://custom-icon-badges.demolab.com/badge/metakgp_wiki-grey?logo=metakgp_logo\u0026style=for-the-badge\n[wiki-url]: https://wiki.metakgp.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetakgp%2Fgyft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetakgp%2Fgyft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetakgp%2Fgyft/lists"}