{"id":15513295,"url":"https://github.com/Vaccarini-Lorenzo/MagicCalendar","last_synced_at":"2025-10-12T09:32:35.629Z","repository":{"id":185424013,"uuid":"672244077","full_name":"Vaccarini-Lorenzo/MagicCalendar","owner":"Vaccarini-Lorenzo","description":"An obsidian plugin that exploit a natural language processing engine to find potential events and sync them with iCalendar","archived":false,"fork":false,"pushed_at":"2023-11-18T17:02:38.000Z","size":46296,"stargazers_count":91,"open_issues_count":7,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-29T14:39:31.345Z","etag":null,"topics":["ical","icalendar","obsidian","obsidian-plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Vaccarini-Lorenzo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2023-07-29T12:09:23.000Z","updated_at":"2025-01-17T14:45:23.000Z","dependencies_parsed_at":"2023-11-15T12:31:28.157Z","dependency_job_id":"c7db27e4-451e-4f22-8ab4-5db5464465e7","html_url":"https://github.com/Vaccarini-Lorenzo/MagicCalendar","commit_stats":null,"previous_names":["vaccarini-lorenzo/icalobsidiansync","vaccarini-lorenzo/magiccalendar"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/Vaccarini-Lorenzo/MagicCalendar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaccarini-Lorenzo%2FMagicCalendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaccarini-Lorenzo%2FMagicCalendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaccarini-Lorenzo%2FMagicCalendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaccarini-Lorenzo%2FMagicCalendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vaccarini-Lorenzo","download_url":"https://codeload.github.com/Vaccarini-Lorenzo/MagicCalendar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaccarini-Lorenzo%2FMagicCalendar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010936,"owners_count":26084837,"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-10-12T02:00:06.719Z","response_time":53,"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":["ical","icalendar","obsidian","obsidian-plugin"],"created_at":"2024-10-02T09:54:12.428Z","updated_at":"2025-10-12T09:32:32.423Z","avatar_url":"https://github.com/Vaccarini-Lorenzo.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# MagicCalendar\nAI-Powered Obsidian plugin that leverages natural language processing techniques to find calendar events in Markdown notes, seamlessly synchronizing them with a calendar of choice. \u003cbr\u003e\nThe plugin is still in beta and at the moment the supported calendars are:\n- Apple Calendar\n- Google Calendar\n\n# Functionalities\n## NLP calendar events recognition\nJust write your events and seamlessly synchronize them with your calendar\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"650\" src=\"https://raw.githubusercontent.com/Vaccarini-Lorenzo/MagicCalendar/main/materials/MagicCalendarNLPDemo.gif\"\u003e\n\u003c/p\u003e\n\nIt might happen that some patterns are incorrectly recognized as calendar events. **Just ban them!**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"650\" src=\"https://raw.githubusercontent.com/Vaccarini-Lorenzo/MagicCalendar/main/materials/MagicCalendarNLPBanDemo.gif\"\u003e\n\u003c/p\u003e\n\nOn the other hand, it could be possible that some patterns are not recognized. You can use your custom delimitators to define an event:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"650\" src=\"https://raw.githubusercontent.com/Vaccarini-Lorenzo/MagicCalendar/main/materials/CustomEventDemo.gif\"\u003e\n\u003c/p\u003e\n\n## Inline event view\nEmbed your events in your notes with a simple syntax. \u003cbr\u003e\nThe Inline event view is two-way synchronized *(at the moment supported only by Apple Calendar. Google Calendar push notification need an HTTPS server)*.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"650\" src=\"https://raw.githubusercontent.com/Vaccarini-Lorenzo/MagicCalendar/main/materials/InlineEventViewDemo.gif\"\u003e\n\u003c/p\u003e\n\n# Getting started\n### Automatic installation\nBrowse the community plugins and look for \"MagicCalendar\".\n### Manual installation\n- Check the [latest release](https://github.com/Vaccarini-Lorenzo/MagicCalendar/releases/latest)\n- Download ```magic-calendar.zip```\n- Unzip the file and move the ```magic-calendar``` folder into your Obsidian plugin folder\n- Enable the plugin from your Obsidian settings.\n\n### Log-in\nTo log-in just click on the calendar ribbon icon to select your calendar provider.\nUnfortunately, Apple doesn't provide an OAuth2 authentication and to interact with Apple Calendar you'll need to log-in into your iCloud account.\nYour credentials will be stored \u003cins\u003eexclusively\u003c/ins\u003e in your local device (encrypted).\u003cbr\u003e Check the **How it works** section for more informations.\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"650\" src=\"https://raw.githubusercontent.com/Vaccarini-Lorenzo/MagicCalendar/main/materials/AppleLogin.gif\"\u003e\n\u003c/p\u003e\n\nGoogle, on the other hand, supports OAuth2 authentication.\nAt the moment, the application is being reviewed by Google Trust \u0026 Safety team, therefore a security page will be presented.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"650\" src=\"https://raw.githubusercontent.com/Vaccarini-Lorenzo/MagicCalendar/main/materials/GoogleLogin.gif\"\u003e\n\u003c/p\u003e\n\n### Enjoy\nThat's it. Just write an event and the plugin will try its best to identify it. \u003c/br\u003e\nTo embed your calendar in your notes just use the following syntax **in a code block**: \u003cbr\u003e\n```\u003cmagic\u003e from:YYYY/MM/DD to:YYYY/MM/DD```\n\n\n# How it works\n### NLP module\nThe plugin works on top of a **NLP** library [(NLP wink)](https://winkjs.org/wink-nlp/). \u003cbr\u003e\nFirst, the sentence is split into tokens, entities and Part-of-Speeches. Once the sentence has been broken down into understandable components, it's time to filter them following common patterns that include dates, times, durations, event-related nouns and purposes. In order to keep iCalSync lightweight, the number of patterns is not huge, nevertheless the recognition process scores high levels of precision.\n\n### iCloud module\nThe communication with iCloud wouldn't be possible without the help of [iCloud.js](https://github.com/foxt/icloud.js.git). The library has been opportunely modified to support POST requests and bypass CORS policies. \u003cbr\u003e\nSince Apple doesn't support OAuth, it's necessary to login with email and password. These inserted credentials are stored exclusively in your local device (AES encrypted) in order to avoid a manual login everytime a token refresh is needed. The encryption key is randomly generated when the plugin is installed. It can be manually changed in the settings section (not recommended).\n\n\n# What's new?\n### v.1.1.6\n- Major project refactor\n- Google Calendar integration\n- Inline event view features development \n### v.1.1.3\n- Inline event view beta\n- Bugfix: non-editable widget bug\n- NPL module improvements:\n\t1) Fine-tuning\n### v.1.1.2\n- Implement internal counter to keep track of the number of cumulative synchronizations\n- Community review adjustments\n### v.1.1.1\n- Bugfix: date parsing\n### v.1.1.0\n- No need for a CORS proxy anymore\n- NPL module improvements:\n\t1) Entity-related attributes identification\n\t2) Event purpose recognition\n\t3) Bugfix: entity overlap\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FVaccarini-Lorenzo%2FMagicCalendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FVaccarini-Lorenzo%2FMagicCalendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FVaccarini-Lorenzo%2FMagicCalendar/lists"}