diff --git a/mesay.js b/mesay.js new file mode 100644 index 0000000..fa851a5 --- /dev/null +++ b/mesay.js @@ -0,0 +1,117 @@ +// ==UserScript== +// @name Me说 +// @namespace http://tampermonkey.net/ +// @version 1.5 +// @description Me说,小尾巴 +// @match https://linux.do/* +// @icon https://cdn.linux.do/uploads/default/original/3X/9/d/9dd49731091ce8656e94433a26a3ef36062b3994.png +// @grant none +// ==/UserScript== + +(function () { + 'use strict'; + + const emotionalState = [ + '容光焕发', '无精打采', '精神抖擞', + '奄奄一息', '气宇轩昂', '疲惫不堪', + '落落大方', '愁眉苦脸', '满面春风', + '心力交瘁', '风度翩翩', '萎靡不振', + '温文尔雅', '怏怏不乐', '精神焕发', + '人见人爱,花见花看,车见车爆胎', + ]; + + function randInt(start, end) { + return Math.floor(Math.random() * (end - start + 1)) + start; + }; + + function getEmotionalState() { + return emotionalState[randInt(0, emotionalState.length - 1)]; + } + + // 获取预加载数据 + function getPreloadedData() { + const preloadedDataElement = document.querySelector("#data-preloaded"); + if (!preloadedDataElement) { + throw new Error("Preloaded data element not found"); + } + const preloadedData = preloadedDataElement.getAttribute("data-preloaded"); + return JSON.parse(preloadedData); + }; + // 获取用户名 + function getUsername() { + const preloadedData = getPreloadedData(); + const preloadedCurrentUserData = JSON.parse(preloadedData.currentUser); + return preloadedCurrentUserData.username; + } + + // 获取话题所在分类 + function getCategoryNames() { + const categories = []; + + // 第一种方式 + const titleWrapper = document.getElementsByClassName('title-wrapper')[0]; + if (titleWrapper && titleWrapper.children[1]) { + for (let child of titleWrapper.children[1].children) { + if (child.children[0]) { + categories.push(child.children[0].innerText.trim()); + } + } + } + + // 第二种方式 + const topicCategory = document.getElementsByClassName('topic-category')[0]; + if (topicCategory) { + categories.push(...topicCategory.innerText.split('\n').map(cat => cat.trim())); + } + + return categories; + } + + function isSecretGarden() { + const categories = getCategoryNames(); + return categories.includes("秘密花园"); + } + + function handleClick(event) { + if (event.target && event.target.closest('button.create')) { + processTextarea(); + } + } + + function handleKeydown(event) { + if (event.ctrlKey && event.key === 'Enter') { + processTextarea(); + } + } + + function processTextarea() { + // 仅后花园的帖子使用 + if (!isSecretGarden()) { return; } + + let textarea = document.querySelector('#reply-control textarea'); + let text = textarea.value.trim(); + let signature = `${getUsername()}`; + if (text.length > 0 && !text.includes(signature)) { + textarea.value = `${text}\n\n --- \n\n