kimi对话目录

获取当前kimi页面的所有提问,以大纲显示,点击可跳转

// ==UserScript==
// @name         kimi对话目录
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  获取当前kimi页面的所有提问,以大纲显示,点击可跳转
// @author       wawayv
// @match        https://www.kimi.com/*
// @icon         none
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    // 全局变量,用于保存设置
    let settings = {
        displayCount: GM_getValue('displayCount', 50), // 默认值为 50
        displayType: GM_getValue('displayType', '前x个字符') // 默认值为 '前x个字符'
    };

    // 保存设置到 GM_setValue
    function saveSettings() {
        GM_setValue('displayCount', settings.displayCount);
        GM_setValue('displayType', settings.displayType);
    }





    // 创建一个按钮
    const button = document.createElement('button');
    button.textContent = 'outline';
    button.style.position = 'fixed';
    button.style.top = '10px';
    button.style.right = '10px';
    button.style.zIndex = '10000';
    button.style.padding = '10px';
    button.style.fontSize = '16px';
    button.style.background = '#4CAF50';
    button.style.color = 'white';
    button.style.border = 'none';
    button.style.cursor = 'pointer';

    // 创建一个容器来显示这些内容
    const container = document.createElement('div');
    container.style.position = 'fixed';
    container.style.top = '60px'; // 避免与按钮重叠
    container.style.right = '10px';
    container.style.width = '300px';
    container.style.height = 'auto';
    container.style.overflowY = 'auto';
    container.style.background = 'white';
    container.style.border = '1px solid #ccc';
    container.style.padding = '10px';
    container.style.zIndex = '10000';


    // 创建一个收起按钮
    const collapseButton = document.createElement('button');
    collapseButton.textContent = '收起';
    collapseButton.style.marginTop = '10px';
    collapseButton.style.padding = '10px';
    collapseButton.style.fontSize = '16px';
    collapseButton.style.background = '#f44336';
    collapseButton.style.color = 'white';
    collapseButton.style.border = 'none';
    collapseButton.style.cursor = 'pointer';

    // 定义查询和渲染的函数
    const queryAndRender = () => {
        const { displayCount, displayType } = settings; // 从全局变量中获取设置
        const x = displayCount;
        const position = displayType;

        // 获取所有 class="user-content" 的 div
        const userContentDivs = document.querySelectorAll('.user-content');
        console.log(`搜索到的元素数量: ${userContentDivs.length}`);

        // 清空之前的列表
        container.innerHTML = '';

        // 遍历并显示每个 div 的内容
        userContentDivs.forEach((div, index) => {
            let displayText;
            if (position === '前x个字符') {
                displayText = div.textContent.substring(0, x);
            } else {
                displayText = div.textContent.substring(div.textContent.length - x);
            }

            const link = document.createElement('a');
            link.href = '#';
            link.textContent = `内容 ${index + 1}: ${displayText}`;
            link.style.display = 'block';
            link.style.marginBottom = '10px';
            link.addEventListener('click', (e) => {
                e.preventDefault();
                div.scrollIntoView({ behavior: 'smooth' });
            });
            container.appendChild(link);
        });

                // 显示容器
        container.style.display = 'block';

        // 添加收起按钮
        container.appendChild(collapseButton);
    };

        // 定义收起内容的函数
    const collapseContent = () => {
        container.style.display = 'none';
    };

    // 为按钮添加点击事件
    button.addEventListener('click', queryAndRender);
    collapseButton.addEventListener('click', collapseContent);

    // 将按钮和容器添加到页面上
    document.body.appendChild(button);
    document.body.appendChild(container);
     // 添加菜单命令以设置显示字符数
    GM_registerMenuCommand('设置显示字符数', () => {
        const count = prompt('请输入显示字符数 (x):', settings.displayCount);
        if (count !== null && !isNaN(count)) {
            settings.displayCount = parseInt(count, 10);
            saveSettings();
        }
    });

    // 添加菜单命令以设置显示位置
    GM_registerMenuCommand('设置显示位置', () => {
        const type = prompt('请输入显示位置 (前x个字符/最后x个字符):', settings.displayType);
        if (type !== null && ['前x个字符', '最后x个字符'].includes(type)) {
            settings.displayType = type;
            saveSettings();
        }
    });
})();