HoloDex - Add to Google Calendar2

Adds a button to add upcoming hololive streams on Holodex to Google Calendar

// ==UserScript==
// @name         HoloDex - Add to Google Calendar2
// @namespace    http://tampermonkey.net/
// @version      1.00
// @description  Adds a button to add upcoming hololive streams on Holodex to Google Calendar
// @author       You
// @match        https://holodex.net/home
// @match        https://holodex.net/
// @icon         https://www.google.com/s2/favicons?domain=jetri.co
// @grant        none
// ==/UserScript==
function wait_for_bar(){

var vods = document.querySelectorAll("div.container.py-0.container--fluid:nth-last-child(1) > div.row > div")


var links = []
var defined = []
for (let word of vods) {

if (word.getElementsByClassName("text-upcoming")[0] !== undefined) {
var title = word.getElementsByClassName("video-card-title ")[0].innerHTML
var rawtime = word.getElementsByClassName("text-upcoming")[0].innerHTML
//console.log(title)
//console.log(rawtime)



var lasttime = rawtime.match(/\(([^)]+)\)/)[1]
var now = new Date()

function getNextDayOfWeek(date, dayOfWeek) {
    // Code to check that date and dayOfWeek are valid left as an exercise ;)
if (dayOfWeek == 'Sun') {
    var dayofWeek2 = '0'
}
if (dayOfWeek == 'Mon') {
    var dayofWeek2 = '1'
}
if (dayOfWeek == 'Tue') {
    var dayofWeek2 = '2'
}
if (dayOfWeek == 'Wed') {
    var dayofWeek2 = '3'
}
if (dayOfWeek == 'Thu') {
    var dayofWeek2 = '4'
}
if (dayOfWeek == 'Fri') {
    var dayofWeek2 = '5'
}
if (dayOfWeek == 'Sat') {
    var dayofWeek2 = '6'
}


    var resultDate = new Date(date.getTime());

    resultDate.setDate(date.getDate() + (7 + dayofWeek2 - date.getDay()) % 7);

    return resultDate;
}

if (rawtime.startsWith(" Starts") == true) {
    if (/^\d/.test(lasttime) == true) {
        var predate1 = new Date(now.toLocaleDateString() + " " +lasttime)
        var predate2 = new Date(now.toLocaleDateString() + " " +lasttime)
        predate2 = predate2.setHours(predate2.getHours() + 1)
        var date1 = predate1.toISOString()
        var date2 = new Date(predate2).toISOString()
    } else {

         var dayWeek = lasttime.replace(/ .*/,'')
         var predate2 = new Date(getNextDayOfWeek(now, dayWeek)  )
         var justtime = lasttime.substr(lasttime.indexOf(" ") + 1)
         var predate22 = new Date(predate2.toLocaleDateString() + " " +justtime)
         predate22 = new Date(predate22.setHours(predate22.getHours() + 1))
         var predate1 = new Date(getNextDayOfWeek(now, dayWeek))
         var predate11 = new Date(predate1.toLocaleDateString() + " " +justtime)
         var date1 = predate11.toISOString()
         var date2 = predate22.toISOString()
      }
} else {
    //console.log("Doesn't have \"Start\"")
    var noParen = rawtime.replace(/[()]/g, '')
    var predate1 = new Date(noParen)
    var predate2 = new Date(Date.parse(noParen) + 1000*60*60)
    var date1 = predate1.toISOString()
    var date2 = predate2.toISOString()


}

date1 = date1.replace(/:/g,'').replace(/-/g,'').replace(/\./g,'')
date2 = date2.replace(/:/g,'').replace(/-/g,'').replace(/\./g,'')
var url1 = "https://www.google.com/calendar/render?action=TEMPLATE&text="
var url2 = "&dates="
var space = "/"
title = encodeURIComponent(title)

var final = url1.concat(title,url2,date1,space,date2)
links.push(final)


defined.push(word)
}
}


for (var i = 0; i < defined.length; i++) {
if (defined[i].querySelectorAll("button").length == 2) {
defined[i].style.display = 'inline'
    this["marker"+i] = defined[i].appendChild(document.createElement("button"));
this["marker"+i].innerHTML = "Add to Calendar"
}
}

var createClickHandler = function(arg) {
  return function() { window.open(arg); };
}

for (var e = 0; e < defined.length; e++) {
this["marker"+e].onclick = createClickHandler(links[e])
}



}
var interval1 = setInterval(wait_for_bar, 1000)

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址