# event-creator A Violentmonkey userscript: select any text on any webpage, and turn it into a downloadable `.ics` calendar event. Built for event listing sites (concert venues, theaters, local agendas) where the date, time, and location are just scattered in the page text — no need to type anything by hand. ## Install 1. Install [Violentmonkey](https://violentmonkey.github.io/) (Chrome, Firefox, Edge). 2. Install the script from the raw file: [event-creator.user.js](https://raw.githubusercontent.com/alexture/event-creator/main/event-creator.user.js) — Violentmonkey will prompt to install it. The script auto-updates itself from this repo (via `@updateURL`), so you don't need to reinstall it when it changes. ## Usage 1. Select text containing the event info (title, date, time, location…) anywhere on any page. 2. Click the "Créer événement" bubble that appears above your selection. 3. Check/fix the fields in the popup — title, date, time(s), recurrence, location, description. 4. Click "Télécharger .ics" to download the file, then open it to add it to your calendar app. ## What it parses - **Title**: first line of the selection that isn't a date/UI text ("Détails", "Réserver"…) - **Date & time(s)**: French natural language ("15 mars 2026", "samedi 20 juin", "20h30", "20h30 - 22h30"), via [chrono-node](https://github.com/wanasit/chrono) - **Multiple time ranges**: e.g. a listing with several showtimes — each becomes its own event in the `.ics` file - **Recurrence**: "tous les mardis", "chaque semaine", "jusqu'au 20 juin" → weekly/daily/monthly/yearly `RRULE`, with an end date - **Location**: a line with a venue keyword (salle, théâtre, cinéma, café…), a line starting with "à/au/chez", or a `Localisation` label followed by venue + address - **All-day events**: when no time is found - Everything is editable before download — the parsing is a best-effort starting point, not gospel ## Notes - Single self-contained file — chrono-node is bundled in directly (built with esbuild from the npm package), so there's no runtime dependency on an external CDN. - `@match *://*/*` — works on any site. ## License MIT — see [LICENSE](LICENSE).