AIDP筛选器

筛选指定的题目,如代码助手的代码翻译、代码debug,代码sft的python,sql等题目,其中如果是代码debug题目,则会在线执行【提示】里面的代码,用例成功则提示可做,反之自动押后。

// ==UserScript==
// @name         AIDP筛选器
// @namespace    https://aidp.bytedance.com/
// @version      0.0.7
// @author       哒哒伽
// @description  筛选指定的题目,如代码助手的代码翻译、代码debug,代码sft的python,sql等题目,其中如果是代码debug题目,则会在线执行【提示】里面的代码,用例成功则提示可做,反之自动押后。
// @match        *://*.bytedance.com/*
// @icon         https://lf-cdn-tos.bytescm.com/obj/static/toutiao/xigua-ai-data-platform/static/favicon.ico
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';
    const skip = () => {
        // 如果内容不是数组内的类型或者翻译的目标语言不是Python,则执行相应押后操作,点击押后按钮
        var skipButton = document.getElementsByClassName('arco-btn-secondary')[0];
        if (skipButton.innerText.trim() === "押后") {
            skipButton.click();
            const skip = document.getElementsByClassName("arco-btn-primary")[2];
            skip.click()
        }
    }

    // 定义初始值,用于保存提示里的代码
    var init_bug_value = null
    // 定义初始prompt值
    var init_prompt_value = null

    setInterval(() => {

        // 获取所有类名为'neeko-text'的元素
        var elements = document.getElementsByClassName('neeko-text');
        // console.log(elements);

        // 检查是否有足够的元素
        if (elements.length > 1) {
            // 获取第二个元素(代码助手项目),索引从0开始,所以第二个元素的索引是1
            var secondElement = elements[1];
            // console.log(secondElement);

            // 获取第7个元素(代码sft项目),索引从0开始,所以第7个元素的索引是6
            var sevenElement = elements[6];
            // console.log(sevenElement);

            // 进行你需要的操作,例如检查文本内容
            // console.log(document.getElementById("textarea_loxxojrz"));
            // 检查文本内容是否符合要求
            if (['代码翻译', '代码debug', '代码评审'].includes(secondElement.innerText.trim())) {
                // 如果是代码翻译
                if (secondElement.innerText.trim() === "代码翻译") {
                    let textareaValue = document.getElementsByTagName('textarea')[0].value.trim();
                    let condition = !textareaValue.includes("你的工作是将下面的代码翻译成python") && !textareaValue.includes("你的工作是将下面的Python的代码翻译成Javascript");
                    if (condition) {
                        // 押后
                        skip()
                    }
                } else if (secondElement.innerText.trim() === "代码debug") {
                    // 如果是代码debug
                    const bug_val = document.getElementsByTagName('textarea')[1]
                    // 提示里面的代码还未渲染出来
                    if (bug_val === undefined) {
                        return
                    }
                    // 判断页面是否更新(即押后或者提交)
                    if (init_bug_value === bug_val.value.trim()) {
                        return
                    }
                    // 不一致说明已经切换下一题,先赋值再请求
                    init_bug_value = bug_val.value.trim()
                    // 使用 fetch 发送请求
                    fetch('http://localhost:3000/test-python-code', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json'
                            // 添加其他需要的 headers
                        },
                        body: JSON.stringify({
                            code: init_bug_value
                        })
                    }).then(response => {
                        if (!response.ok) {
                            // 如果响应状态码不是2xx,抛出错误
                            throw new Error('Network response was not ok ' + response.statusText);
                        }
                        return response.json();
                    }).then(res => {
                        // 请求成功,处理响应数据
                        console.log(res);
                        if (res.code === 200) {
                            alert("当前题目可做^_^")
                        } else {
                            // 押后
                            skip()
                        }

                    }).catch(error => {
                        // 请求失败,处理错误
                        alert("接口请求失败-_-", error)
                    });
                }
            } else if (['sft-代码标注-python', 'sft-代码标注-sql'].includes(sevenElement.innerText.trim())) {
                if (document.getElementsByClassName("auto-hide-last-sibling-br")[1].innerText === init_prompt_value) {
                    return
                }
                init_prompt_value = document.getElementsByClassName("auto-hide-last-sibling-br")[1].innerText
                const code_type = sevenElement.innerText.trim().split("-")[2]
                alert("题目状态:可做" + "\n" + "题目类型:" + code_type)
            } else {
                // 押后
                skip()
            }
        }
    }, 3000);
})();