Only When Sunday

🏖️ Closes specific websites tabs except Sunday and different ones on weekdays from 9:30 to 18:30

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Only When Sunday
// @namespace    https://github.com/mefengl
// @author       mefengl
// @version      0.3.7
// @description  🏖️ Closes specific websites tabs except Sunday and different ones on weekdays from 9:30 to 18:30
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==

(() => {
  'use strict';

  const specialDates = getSpecialDates();

  const websitesToClose = [
    'bilibili.com',
    'ddys.art',
    'discord.com',
    'outlook.live.com',
    'spotify.com',
    'sspai.com',
    'twitter.com',
    'weibo.com',
    'youtube.com',
    'zhihu.com',
    'telegram.org',
  ];

  const websitesToCloseDuringWork = [
    'greasyfork.org',
    'hellogithub.com',
  ];

  const currentDate = new Date().toISOString().slice(0, 10).replace(/-/g, '');
  const currentHour = new Date().getHours();
  const currentMinute = new Date().getMinutes();
  const currentDay = new Date().getDay();

  const isSunday = currentDay === 0;
  const isWorkingHours = (currentHour > 9 && currentHour < 18) || (currentHour === 9 && currentMinute >= 30) || (currentHour === 18 && currentMinute <= 30);
  const isWorkingDay = currentDay >= 1 && currentDay <= 5;
  const isWorkingDayNotWorkingHours = isWorkingDay && !isWorkingHours;

  if (isSunday) {
    // No restrictions on Sunday
    return;
  }

  if (isWorkingHours && (websitesToClose.some(website => window.location.href.includes(website)) || websitesToCloseDuringWork.some(website => window.location.href.includes(website)))) {
    window.close();
  }

  if (isWorkingDayNotWorkingHours && specialDates.some(date => currentDate >= date.start && currentDate <= date.end) && websitesToClose.some(website => window.location.href.includes(website))) {
    window.close();
  }
})();

function getSpecialDates() {
  const icsString = getIcsString();
  const eventBlocks = icsString.match(/BEGIN:VEVENT[\s\S]*?END:VEVENT/g);
  return eventBlocks.map(block => {
    const dtstart = block.match(/DTSTART:(\d{8})T\d{6}/)[1];
    const dtend = block.match(/DTEND:(\d{8})T\d{6}/)[1];
    return { start: dtstart, end: dtend };
  });
}

/*
  * 以下内容来自 https://github.com/lanceliao/china-holiday-calender
*/
function getIcsString() {
  return `BEGIN:VCALENDAR
  PRODID:-//ShuYZ.com//China Public Holidays 2.0//CN
  VERSION:2.0
  CALSCALE:GREGORIAN
  METHOD:PUBLISH
  X-WR-CALNAME:ShuYZ中国节假日(补班)
  X-WR-TIMEZONE:Asia/Shanghai
  X-WR-CALDESC:2021~2023年中国节假日(补班) 更新时间2023-06-14 19:35:13
  BEGIN:VTIMEZONE
  TZID:Asia/Shanghai
  X-LIC-LOCATION:Asia/Shanghai
  BEGIN:STANDARD
  TZOFFSETFROM:+0800
  TZOFFSETTO:+0800
  TZNAME:CST
  DTSTART:19700101T000000
  END:STANDARD
  END:VTIMEZONE
  BEGIN:VEVENT
  DTSTART:20230128T090000
  DTEND:20230128T180000
  DTSTAMP:20230128T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:二、春节:1月21日至27日放假调休,共7天。1月28日(星期六)、1月29日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:春节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20230129T090000
  DTEND:20230129T180000
  DTSTAMP:20230129T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:二、春节:1月21日至27日放假调休,共7天。1月28日(星期六)、1月29日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:春节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20230423T090000
  DTEND:20230423T180000
  DTSTAMP:20230423T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:四、劳动节:4月29日至5月3日放假调休,共5天。4月23日(星期日)、5月6日(星期六)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:劳动节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20230506T090000
  DTEND:20230506T180000
  DTSTAMP:20230506T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:四、劳动节:4月29日至5月3日放假调休,共5天。4月23日(星期日)、5月6日(星期六)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:劳动节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20230625T090000
  DTEND:20230625T180000
  DTSTAMP:20230625T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:五、端午节:6月22日至24日放假调休,共3天。6月25日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:端午节 补班 第1天/共1天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20231007T090000
  DTEND:20231007T180000
  DTSTAMP:20231007T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:六、中秋节、国庆节:9月29日至10月6日放假调休,共8天。10月7日(星期六)、10月8日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:中秋节、国庆节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20231008T090000
  DTEND:20231008T180000
  DTSTAMP:20231008T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:六、中秋节、国庆节:9月29日至10月6日放假调休,共8天。10月7日(星期六)、10月8日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:中秋节、国庆节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20220129T090000
  DTEND:20220129T180000
  DTSTAMP:20220129T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:二、春节:1月31日至2月6日放假调休,共7天。1月29日(星期六)、1月30日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:春节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20220130T090000
  DTEND:20220130T180000
  DTSTAMP:20220130T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:二、春节:1月31日至2月6日放假调休,共7天。1月29日(星期六)、1月30日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:春节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20220402T090000
  DTEND:20220402T180000
  DTSTAMP:20220402T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:三、清明节:4月3日至5日放假调休,共3天。4月2日(星期六)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:清明节 补班 第1天/共1天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20220424T090000
  DTEND:20220424T180000
  DTSTAMP:20220424T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:四、劳动节:4月30日至5月4日放假调休,共5天。4月24日(星期日)、5月7日(星期六)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:劳动节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20220507T090000
  DTEND:20220507T180000
  DTSTAMP:20220507T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:四、劳动节:4月30日至5月4日放假调休,共5天。4月24日(星期日)、5月7日(星期六)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:劳动节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20221008T090000
  DTEND:20221008T180000
  DTSTAMP:20221008T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:七、国庆节:10月1日至7日放假调休,共7天。10月8日(星期六)、10月9日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:国庆节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20221009T090000
  DTEND:20221009T180000
  DTSTAMP:20221009T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:七、国庆节:10月1日至7日放假调休,共7天。10月8日(星期六)、10月9日(星期日)上班。\n\n放假通知: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:国庆节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20210207T090000
  DTEND:20210207T180000
  DTSTAMP:20210207T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:二、春节:2月11日至17日放假调休,共7天。2月7日(星期日)、2月20日(星期六)上班。\n\n放假通知: http://www.gov.cn/fuwu/2020-11/25/content_5564533.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:春节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20210220T090000
  DTEND:20210220T180000
  DTSTAMP:20210220T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:二、春节:2月11日至17日放假调休,共7天。2月7日(星期日)、2月20日(星期六)上班。\n\n放假通知: http://www.gov.cn/fuwu/2020-11/25/content_5564533.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:春节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20210425T090000
  DTEND:20210425T180000
  DTSTAMP:20210425T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:四、劳动节:5月1日至5日放假调休,共5天。4月25日(星期日)、5月8日(星期六)上班。\n\n放假通知: http://www.gov.cn/fuwu/2020-11/25/content_5564533.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:劳动节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20210508T090000
  DTEND:20210508T180000
  DTSTAMP:20210508T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:四、劳动节:5月1日至5日放假调休,共5天。4月25日(星期日)、5月8日(星期六)上班。\n\n放假通知: http://www.gov.cn/fuwu/2020-11/25/content_5564533.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:劳动节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20210918T090000
  DTEND:20210918T180000
  DTSTAMP:20210918T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:六、中秋节:9月19日至21日放假调休,共3天。9月18日(星期六)上班。\n\n放假通知: http://www.gov.cn/fuwu/2020-11/25/content_5564533.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:中秋节 补班 第1天/共1天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20210926T090000
  DTEND:20210926T180000
  DTSTAMP:20210926T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:七、国庆节:10月1日至7日放假调休,共7天。9月26日(星期日)、10月9日(星期六)上班。\n\n放假通知: http://www.gov.cn/fuwu/2020-11/25/content_5564533.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:国庆节 补班 第1天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  BEGIN:VEVENT
  DTSTART:20211009T090000
  DTEND:20211009T180000
  DTSTAMP:20211009T000000Z
  UID:[email protected]
  CREATED:20230614T193513Z
  DESCRIPTION:七、国庆节:10月1日至7日放假调休,共7天。9月26日(星期日)、10月9日(星期六)上班。\n\n放假通知: http://www.gov.cn/fuwu/2020-11/25/content_5564533.htm
  LAST-MODIFIED:20230614T193513Z
  SEQUENCE:0
  STATUS:TENTATIVE
  SUMMARY:国庆节 补班 第2天/共2天
  TRANSP:OPAQUE
  BEGIN:VALARM
  TRIGGER:-PT60M
  ACTION:DISPLAY
  END:VALARM
  END:VEVENT
  END:VCALENDAR`;
}