AIDP筛选器

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

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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);
})();