// ==UserScript==
// @name Twitter時計
// @name:en Twitter Clock
// @namespace http://lit.link/toracatman
// @version 2025-02-22
// @description Twitterに 時計を 表示します。
// @description:en Display a Clock on Twitter.
// @author トラネコマン
// @match https://x.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license MIT
// ==/UserScript==
//言語,ja: 日本語,en: 英語
//Language, ja: Japanese, en: English
var language = "ja";
/*
曜日の 色
0: 白のみ
1: 日: ピンク,土: 青,他: 白
2: 日: ピンク,月: 紫,火: オレンジ,水: 灰色,木: 緑,金: 黄色,土: 青
Color of Day
0: Only White
1: Sunday: Pink, Saturday: Blue, Other: White
2: Sunday: Pink, Monday: Purple, Tuesday: Orange, Wednesday: Gray, Thursday: Green, Friday: Yellow, Saturday: Blue
*/
var day_color = 1;
//true: 12, false: 24
var ap = false;
(() => {
var mn = {
ja: ["雅月", "菲月", "瑪月", "艾月", "緬月", "淳月", "茱月", "奥月", "摂月", "憶月", "衲月", "迪月", "繧月"],
en: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "Irvember"]
};
var dn = {
ja: ["日", "月", "火", "水", "木", "金", "土"],
en: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
};
var format = {
ja: "YYYY年 MM DD日<br>WW曜日<br>hh:mm:ss AP",
en: "hh:mm:ss AP<br>WW<br>MM DD, YYYY",
};
var dc = ["249, 24, 128", "120, 86, 255", "255, 122, 0", "139, 152, 165", "0, 186, 124", "255, 212, 0", "29, 155, 240"];
var d;
var a;
var b;
var u = () => {
if (typeof a === "undefined") {
var t = document.querySelector('aside:has(a[href^="/i/connect_people"])');
if (t != null) {
t = t.parentNode.parentNode;
a = t.cloneNode(true);
a.querySelector("div").style.minHeight = "auto";
a.querySelector("aside").setAttribute("aria-label", "時計");
b = a.querySelector("aside div");
b.style.display = "block";
a.querySelector("ul").remove();
a.querySelector("a").remove();
}
}
if (typeof a !== "undefined") {
var t = document.querySelector('div[data-testid="sidebarColumn"] div:has(> nav)');
if (t != null) {
d = new Date();
var day = d.getDay();
var day_str = day_str = dn[language][day];
if ((day_color == 1 && (day == 0 || day == 6)) || day_color == 2) {
day_str = `<span style="color: rgb(${dc[day]});">${day_str}</span>`;
}
var str = format[language];
str = str.replace("YYYY", d.getFullYear());
str = str.replace("MM", mn[language][d.getMonth()]);
str = str.replace("DD", d.getDate());
str = str.replace("WW", day_str);
var h = d.getHours();
str = str.replace("hh", ap ? h % 12 : h);
str = str.replace("mm", d.getMinutes().toString().padStart(2, "0"));
str = str.replace("ss", d.getSeconds().toString().padStart(2, "0"));
str = str.replace("AP", ap ? (h < 12 ? "AM" : "PM") : "");
b.innerHTML = str.trim();
var p = t.parentNode.firstElementChild;
if (p.querySelector("form") != null) p = p.nextElementSibling.nextElementSibling;
p.before(a);
}
}
d = new Date();
setTimeout(u, 1000 - d.getMilliseconds());
}
d = new Date();
setTimeout(u, 1000 - d.getMilliseconds());
})();