filecxx_activation_code

自用,用于拷贝指定时间的激活码到剪切板

// ==UserScript==
// @name         filecxx_activation_code
// @namespace    npm/vite-plugin-monkey
// @version      0.1.0
// @description  自用,用于拷贝指定时间的激活码到剪切板
// @icon         https://vitejs.dev/logo.svg
// @match        https://filecxx.com/en_US/activation_code.html
// @match        https://filecxx.com/zh_CN/activation_code.html
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.global.prod.js
// @grant        GM_addStyle
// @run-at       document-idle
// ==/UserScript==

(function (vue) {
  'use strict';

  const d=new Set;const importCSS = async e=>{d.has(e)||(d.add(e),(t=>{typeof GM_addStyle=="function"?GM_addStyle(t):document.head.appendChild(document.createElement("style")).append(t);})(e));};

  importCSS(" .container[data-v-1c5b843e]{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:20px;background:linear-gradient(135deg,#667eea,#764ba2)}.card[data-v-1c5b843e]{background:#fff;border-radius:16px;padding:32px;box-shadow:0 20px 60px #0000004d;max-width:600px;width:100%}h2[data-v-1c5b843e]{margin:0 0 24px;color:#333;text-align:center;font-size:24px}.copy-button[data-v-1c5b843e]{width:100%;padding:14px 24px;font-size:16px;font-weight:600;color:#fff;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #667eea66}.copy-button[data-v-1c5b843e]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea99}.copy-button[data-v-1c5b843e]:active:not(:disabled){transform:translateY(0)}.copy-button[data-v-1c5b843e]:disabled{opacity:.6;cursor:not-allowed}.message[data-v-1c5b843e]{margin-top:16px;padding:12px 16px;border-radius:8px;text-align:center;font-weight:500;background:#f0f9ff;color:#0369a1;border:1px solid #bae6fd}.result-section[data-v-1c5b843e]{margin-top:24px;padding-top:24px;border-top:2px solid #f1f5f9}.result-item[data-v-1c5b843e]{margin-bottom:16px;display:flex;flex-direction:column;gap:6px}.result-item[data-v-1c5b843e]:last-child{margin-bottom:0}.result-item label[data-v-1c5b843e]{font-weight:600;color:#64748b;font-size:14px;text-transform:uppercase;letter-spacing:.5px}.result-item span[data-v-1c5b843e]{color:#334155;font-size:16px}.activation-code[data-v-1c5b843e]{background:#f8fafc;border:2px solid #e2e8f0;border-radius:6px;padding:12px;font-family:Courier New,monospace;font-size:14px;word-break:break-all;color:#0f172a;display:block}@media (max-width: 640px){.card[data-v-1c5b843e]{padding:24px}h2[data-v-1c5b843e]{font-size:20px}} ");

  const styleCss = ":root{font-family:Inter,Avenir,Helvetica,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}";
  importCSS(styleCss);
  const _hoisted_1 = { class: "container" };
  const _hoisted_2 = { class: "card" };
  const _hoisted_3 = ["disabled"];
  const _hoisted_4 = {
    key: 0,
    class: "message"
  };
  const _hoisted_5 = {
    key: 1,
    class: "result-section"
  };
  const _hoisted_6 = { class: "result-item" };
  const _hoisted_7 = { class: "result-item" };
  const _hoisted_8 = { class: "result-item" };
  const _hoisted_9 = { class: "activation-code" };
  const _sfc_main = vue.defineComponent({
    __name: "App",
    setup(__props) {
      function getCurrentActivationCode() {
        const now = new Date();
        const codesElement = document.getElementById("codes");
        if (!codesElement) {
          return {
            code: "错误:找不到 ID 为 'codes' 的元素。",
            timeRange: null,
            currentTime: now.toLocaleString()
          };
        }
        const rawText = codesElement.textContent?.trim() || "";
        const codeBlocks = rawText.split(/\n{2,}/g).filter((block) => block.trim().length > 0);
        let activeCode = "未找到有效的激活码。当前时间不匹配任何时间段。";
        let matchedRange = null;
        for (const block of codeBlocks) {
          const lines = block.trim().split("\n");
          if (lines.length >= 2) {
            const timeRangeStr = lines[0].trim();
            const code = lines[1].trim();
            const times = timeRangeStr.split(" - ");
            if (times.length === 2) {
              const startTime = new Date(times[0]);
              const endTime = new Date(times[1]);
              if (now >= startTime && now < endTime) {
                activeCode = code;
                matchedRange = timeRangeStr;
                return {
                  code: activeCode,
                  timeRange: matchedRange,
                  currentTime: now.toLocaleString()
                };
              }
            }
          }
        }
        return {
          code: activeCode,
          timeRange: matchedRange,
          currentTime: now.toLocaleString()
        };
      }
      function copyToClipboard(textToCopy) {
        if (navigator.clipboard && window.isSecureContext) {
          navigator.clipboard.writeText(textToCopy).then(() => {
            console.log("成功复制到剪贴板:", textToCopy);
          }).catch((err) => {
            console.error("无法复制到剪贴板:", err);
          });
        } else {
          console.log("不安全的方法");
        }
      }
      const isLoading = vue.ref(false);
      const message = vue.ref("");
      const resultCode = vue.ref("");
      const resultTimeRange = vue.ref("");
      const resultCurrentTime = vue.ref("");
      const handleCopyCode = () => {
        isLoading.value = true;
        message.value = "";
        try {
          const result = getCurrentActivationCode();
          console.log("--- TS 查找结果 ---");
          console.log(`当前时间 (本地): ${result.currentTime}`);
          console.log(`匹配的时间段: ${result.timeRange || "N/A"}`);
          console.log(`${result.code}`);
          resultCode.value = result.code;
          resultTimeRange.value = result.timeRange || "无";
          resultCurrentTime.value = result.currentTime;
          copyToClipboard(result.code);
          if (result.timeRange) {
            message.value = "✅ 激活码已复制到剪贴板!";
          } else {
            message.value = "⚠️ 未找到有效激活码";
          }
        } catch (error) {
          console.error("执行失败:", error);
          message.value = "❌ 获取激活码失败:" + error.message;
        } finally {
          isLoading.value = false;
        }
      };
      return (_ctx, _cache) => {
        return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
          vue.createElementVNode("div", _hoisted_2, [
            _cache[3] || (_cache[3] = vue.createElementVNode("h2", null, "🔑 激活码获取工具", -1)),
            vue.createElementVNode("button", {
              onClick: handleCopyCode,
              disabled: isLoading.value,
              class: "copy-button"
            }, vue.toDisplayString(isLoading.value ? "处理中..." : "获取并复制激活码"), 9, _hoisted_3),
            message.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, vue.toDisplayString(message.value), 1)) : vue.createCommentVNode("", true),
            resultCode.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
              vue.createElementVNode("div", _hoisted_6, [
                _cache[0] || (_cache[0] = vue.createElementVNode("label", null, "当前时间:", -1)),
                vue.createElementVNode("span", null, vue.toDisplayString(resultCurrentTime.value), 1)
              ]),
              vue.createElementVNode("div", _hoisted_7, [
                _cache[1] || (_cache[1] = vue.createElementVNode("label", null, "匹配时间段:", -1)),
                vue.createElementVNode("span", null, vue.toDisplayString(resultTimeRange.value), 1)
              ]),
              vue.createElementVNode("div", _hoisted_8, [
                _cache[2] || (_cache[2] = vue.createElementVNode("label", null, "激活码:", -1)),
                vue.createElementVNode("code", _hoisted_9, vue.toDisplayString(resultCode.value), 1)
              ])
            ])) : vue.createCommentVNode("", true)
          ])
        ]);
      };
    }
  });
  const _export_sfc = (sfc, props) => {
    const target = sfc.__vccOpts || sfc;
    for (const [key, val] of props) {
      target[key] = val;
    }
    return target;
  };
  const App = _export_sfc(_sfc_main, [["__scopeId", "data-v-1c5b843e"]]);
  vue.createApp(App).mount(
    (() => {
      const app = document.createElement("div");
      document.body.append(app);
      return app;
    })()
  );

})(Vue);