Giter VIP home page Giter VIP logo

magiccalendar's Introduction

MagicCalendar

AI-Powered Obsidian plugin that leverages natural language processing techniques to find calendar events in Markdown notes, seamlessly synchronizing them with a calendar of choice.
The plugin is still in beta and at the moment the supported calendars are:

  • Apple Calendar
  • Google Calendar

Functionalities

NLP calendar events recognition

Just write your events and seamlessly synchronize them with your calendar

It might happen that some patterns are incorrectly recognized as calendar events. Just ban them!

On the other hand, it could be possible that some patterns are not recognized. You can use your custom delimitators to define an event:

Inline event view

Embed your events in your notes with a simple syntax.
The Inline event view is two-way synchronized (at the moment supported only by Apple Calendar. Google Calendar push notification need an HTTPS server).

Getting started

Automatic installation

Browse the community plugins and look for "MagicCalendar".

Manual installation

  • Check the latest release
  • Download magic-calendar.zip
  • Unzip the file and move the magic-calendar folder into your Obsidian plugin folder
  • Enable the plugin from your Obsidian settings.

Log-in

To log-in just click on the calendar ribbon icon to select your calendar provider. Unfortunately, Apple doesn't provide an OAuth2 authentication and to interact with Apple Calendar you'll need to log-in into your iCloud account. Your credentials will be stored exclusively in your local device (encrypted).
Check the How it works section for more informations.

Google, on the other hand, supports OAuth2 authentication. At the moment, the application is being reviewed by Google Trust & Safety team, therefore a security page will be presented.

Enjoy

That's it. Just write an event and the plugin will try its best to identify it.
To embed your calendar in your notes just use the following syntax in a code block:
<magic> from:YYYY/MM/DD to:YYYY/MM/DD

How it works

NLP module

The plugin works on top of a NLP library (NLP wink).
First, 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.

iCloud module

The communication with iCloud wouldn't be possible without the help of iCloud.js. The library has been opportunely modified to support POST requests and bypass CORS policies.
Since 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).

What's new?

v.1.1.6

  • Major project refactor
  • Google Calendar integration
  • Inline event view features development

v.1.1.3

  • Inline event view beta
  • Bugfix: non-editable widget bug
  • NPL module improvements:
    1. Fine-tuning

v.1.1.2

  • Implement internal counter to keep track of the number of cumulative synchronizations
  • Community review adjustments

v.1.1.1

  • Bugfix: date parsing

v.1.1.0

  • No need for a CORS proxy anymore
  • NPL module improvements:
    1. Entity-related attributes identification
    2. Event purpose recognition
    3. Bugfix: entity overlap

magiccalendar's People

Contributors

vaccarini-lorenzo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

magiccalendar's Issues

Cannot add a calendar

Versions

Obsidian Version 1.4.14 (Installer 1.4.13)
OS 13.5.1 (22G90)
iCalSync V1.1.5

Steps To reproduce

  • Installed either from zip or from source
  • Enable plugin
  • Go to plugin settings
  • Attempt to add a calendar

Expected

  • On pressing the drop down indicator of the Calendars option a dialog would appear to add a calendar

Actual Behaviour

  • Pressing on the calendar button has no effect

Google - This app is blocked

Hi Lorenzo. i understand this is still beta, but i'm getting the 'This app is blocked' screen when trying to log in to Google. Backed out, then clicked to recognise the attemot in Google account's security section, but no change. In the settings for MagicCalendar are the Encryption and Encryption IV keys; an i supposed to do something with these? MagicCalandar does have "See, edit, share, and permanently delete all the calendars" privileges, but any attempt to log in in Obsidian just gives me the block screen.

No iCloud Calendar login

I copied and installed the plugin, per the instructions, and don't see a place to log into the iCloud account.
Here's a screenshot:
image

Full Calendar in sidebar made tiny

When I have iCalObsidianSync enabled, the Full Calendar in the sidebar shrinks to be tiny, like so:
image

When I deactivate this plugin the calendar in the sidebar fills the space.
Could it possibly be a CSS fix?

Bug: Cannot open the plugin

Uncaught (in promise) Error: ENOENT: no such file or directory, open 'C:\Users\Administrator\Desktop\1\.obsidian\plugins\magic-calendar\.base64Media.json'

Cannot open the plugin.

And could you add a command in the plugin, I don't like use it open the plugin on the side.

Agenda style display

i've had memory issues recently and am now using obsidian as my .... second brain, i guess ... so discovering this plugin is going to save me ... a lot of time and money. i can see it all in one place now without having to stop using apple calendar. so thank you.

my question: is there a way (or a plan to create a way) to format the note embed so that it's a list ... like an agenda style list ... or in blocks of several hours instead of hour by hour ... or maybe vertical instead of horizontal ...?

[Suggestion] keyword/key symbol for literal events

Hi! This project is really cool. I was wondering whether it was possible to implement a second mode of event input where, if you start a line with a specific character/keyword, it will use the whole line as the event title.
So currently, if you put in, say "❗Lecture Quiz 10 next tue", the event will just be "lecture quiz". My idea was that, say we set "&" as the key symbol, "❗Lecture Quiz 10 next tue" would still be "lecture quiz", but "&❗Lecture Quiz 10 next tue" would be "❗Lecture Quiz 10".
Looking forward to your reply.

Inline event view extremely long.

Discussed in #35

Originally posted by Dramion January 17, 2024
Is this a bug or how it is meant to be? I am zoomed out quite a bit and can only see up to 1100. Thanks for your time.

Screenshot 2024-01-17 at 11 25 15 PM

Logged in (iCloud) but no calendars

Hi,

I connected via iCloud and it says logged in but the calendars dropdown does nothing. Tried a few times. I also tried Google and that did give me a selection of calendars but I really want the two-way sync. The plugin looks really excellent - hoping I can get it working!

image

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.