云图扩展工具
// ==UserScript== // @name 投后结案(定时生成报告) // @namespace http://tampermonkey.net/ // @version 0.1 // @description 云图扩展工具 // @author siji-Xian // @match *://yuntu.oceanengine.com/yuntu_ng/evaluation_brand/task_list?* // @icon https://lf3-static.bytednsdoc.com/obj/eden-cn/prhaeh7pxvhn/yuntu/yuntu-logo_default.svg // @grant none // @license MIT // @require https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js // @require https://greasyfork.org/scripts/404478-jsonexportexcel-min/code/JsonExportExcelmin.js?version=811266 // @require https://greasyfork.org/scripts/463728-lodash-js/code/lodashjs.js?version=1174104 // @require https://greasyfork.org/scripts/455576-qmsg/code/Qmsg.js?version=1122361 // ==/UserScript== (function () { "use strict"; var new_element = document.createElement('link'); new_element.setAttribute('rel', 'stylesheet'); new_element.setAttribute('href', 'https://qmsg.refrain.xyz/message.min.css'); document.body.appendChild(new_element); const button = document.createElement("div"); button.textContent = "生成报告"; Object.assign(button.style, { height: "34px", lineHeight: "var(--line-height, 34px)", alignItems: "center", color: "white", background: "linear-gradient(90deg, rgba(0, 239, 253), rgba(64, 166, 254))", borderRadius: "5px", marginLeft: "10px", fontSize: "13px", padding: "0 10px", cursor: "pointer", fontWeight: "500", }); button.addEventListener("click", urlClick); //监听按钮点击事件 const getRequestOptions = { method: 'GET', redirect: 'follow' }; //message.js let loadingMsg = null function appendDoc() { setTimeout(() => { var like_comment = document.querySelector('.index__btnWrapper--gvaIn'); if (like_comment) { like_comment.append(button); //把按钮加入到 x 的子节点中 return } appendDoc() }, 1000); } appendDoc() function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] == variable) { return pair[1]; } } return false; } //获取aadvid const aadvid = getQueryVariable("aadvid"); async function fetchFun(url, data, requestOptions = getRequestOptions()) { const params = new URLSearchParams(data).toString(); try { const response = await fetch(`${url}?${params}`, requestOptions); if (response.ok) { const result = await response.json(); return result; } else { throw new Error(`Fetch failed: ${response.status}`); } } catch (error) { loadingMsg.close(); Qmsg.error({ content: `网络请求错误: ${error.message}`, timeout: 5000 }); throw error; } } let myHeaders = new Headers(); myHeaders.append("authority", "yuntu.oceanengine.com"); myHeaders.append("accept", "application/json, text/plain, */*"); myHeaders.append("accept-language", "zh-CN,zh;q=0.9"); myHeaders.append("content-type", "application/json"); myHeaders.append("origin", "https://yuntu.oceanengine.com"); myHeaders.append("referer", "https://yuntu.oceanengine.com/yuntu_ng/evaluation_brand/task_create?task_id=677363&mode=2&aadvid=1672744301182989"); async function getList(){ let raw = JSON.stringify({ "main_brand_id": "1094484", "level_1_industry_id": 13, "offset": 0, "count": 10, "order_type": 1, "task_statuses": [ 2, 1 ] }); let data = { aadvid } const postRequestOptions = { method: "POST", headers: myHeaders, body: raw, redirect: "follow", }; let total = await fetchFun( "https://yuntu.oceanengine.com/measurement/api/eva/get_evaluation_task_list_v2", data, postRequestOptions ); return total } async function getNotList(){ let raw = JSON.stringify({ "main_brand_id": "1094484", "level_1_industry_id": 13, "offset": 0, "count": 10, "order_type": 1, "task_statuses": [ 0 ] }); let data = { aadvid } const postRequestOptions = { method: "POST", headers: myHeaders, body: raw, redirect: "follow", }; let total = await fetchFun( "https://yuntu.oceanengine.com/measurement/api/eva/get_evaluation_task_list_v2", data, postRequestOptions ); return total } async function createdTask(task_id){ let raw = JSON.stringify({ "main_brand_id": "1094484", "level_1_industry_id": 13, "user_id": "99406591190", "staff_id": "", "task_id": task_id }); let data = { aadvid } const postRequestOptions = { method: "POST", headers: myHeaders, body: raw, redirect: "follow", }; let total = await fetchFun( "https://yuntu.oceanengine.com/measurement/api/eva/start_calculate_evaluation_task", data, postRequestOptions ); return total } async function urlClick() { loadingMsg = Qmsg.loading("任务开启成功~"); let interval = setInterval(async () => { let notList = await getNotList() if (notList?.data?.task_list?.length > 1) { let res = await getList() if (res?.code===0 && res?.data?.task_list?.length<=5) { createdTask(notList?.data?.task_list[1]?.task_id) } }else{ clearInterval(interval) } }, 60000); } })();