Greasy Fork

ニコ生の予定をGoogleカレンダーに追加するリンクを追加

ニコ生の予定をGoogleカレンダーに追加するリンクを追加する

// ==UserScript==
// @name         ニコ生の予定をGoogleカレンダーに追加するリンクを追加
// @namespace    http://deflis.net/
// @version      0.1
// @description  ニコ生の予定をGoogleカレンダーに追加するリンクを追加する
// @author       deflis
// @match        http://live.nicovideo.jp/gate/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    function zerofill(num){
        return ('0'+num).slice(-2);
    }
    function getTime(date){
        return date.getUTCFullYear() +
            zerofill(date.getUTCMonth()+1) +
            zerofill(date.getUTCDate()) +
            'T' +
            zerofill(date.getUTCHours()) +
            zerofill(date.getUTCMinutes()) +
            zerofill(date.getUTCSeconds()) +
            'Z';
    }

    const startDate = new Date(document.querySelector("div.kaijo meta").getAttribute("content"));
    const title = document.querySelector(".program-title").textContent;
    const endDate = new Date(startDate);
    endDate.setMinutes(endDate.getMinutes() + 3 + 30);

    const url = 'http://www.google.com/calendar/event?' +
          'action='   + 'TEMPLATE' +
          '&text='    + encodeURIComponent(title) +
          '&details=' + encodeURIComponent('ニコニコ生放送\n' + location.href) +
          '&location='+ encodeURIComponent(location.href) +
          '&dates='   + getTime(startDate) + '/' + getTime(endDate);

    const tr = document.createElement("tr");
    const td = document.createElement("td");
    const a = document.createElement("a");
    a.setAttribute("href", url);
    a.textContent = "Googleカレンダーに追加";
    td.appendChild(a);
    tr.appendChild(td);

    document.querySelector("#bn_gbox table").appendChild(tr);
    console.log(url);
})();