Skip to content

Instantly share code, notes, and snippets.

@jesseditson
Created February 22, 2019 00:42
Show Gist options
  • Save jesseditson/4563ce336684ed8303d259c925017af0 to your computer and use it in GitHub Desktop.
Save jesseditson/4563ce336684ed8303d259c925017af0 to your computer and use it in GitHub Desktop.
Noise Pop event to calendar invite
// https://mrcoles.com/bookmarklet/
var MS_IN_MINUTES = 60 * 1000;
var formatTime = function(date) {
return date.toISOString().replace(/-|:|\.\d+/g, "");
};
var calculateEndTime = function(event) {
return event.end
? formatTime(event.end)
: formatTime(
new Date(event.start.getTime() + event.duration * MS_IN_MINUTES)
);
};
const makeEvent = function(event) {
var startTime = formatTime(event.start);
var endTime = calculateEndTime(event);
var href = encodeURI(
[
"https://www.google.com/calendar/render",
"?action=TEMPLATE",
"&text=" + (event.title || ""),
"&dates=" + (startTime || ""),
"/" + (endTime || ""),
"&details=" + (event.description || ""),
"&location=" + (event.address || ""),
"&sprop=&sprop=name:",
].join("")
);
window.location = href;
};
let title = document.querySelectorAll(".ds-event-title-text")[0].innerText;
let time = document.querySelectorAll(".ds-event-time [data-datetime]")[0]
.dataset.datetime;
let venue = document.querySelectorAll(".ds-venue-name")[0].innerText;
let link = document.querySelectorAll(".ds-buy-tix")[0].href;
const event = {
// Event title
title,
// Event start date
start: new Date(time),
// Event duration (IN MINUTES)
duration: 180,
// Event Address
address: venue,
// Event Description
description: link,
};
makeEvent(event);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment