牛客优聘替换999+投递数为真实的数字

捕获特定URL,用响应中的实际数据替换999+,并在带有延迟的Toast中显示工作信息

// ==UserScript==
// @name         Nowpick replace 999+ with actual data from the response
// @description  Capture a specific URL, replace 999+ with actual data from the response, and show job info in a toast with delay
// @name:zh-CN   牛客优聘替换999+投递数为真实的数字
// @description:zh-CN   捕获特定URL,用响应中的实际数据替换999+,并在带有延迟的Toast中显示工作信息
// @name:ar          Nowpick استبدال 999+ بالبيانات الفعلية من الاستجابة
// @description:ar    التقط عنوان URL معين، واستبدل 999+ بالبيانات الفعلية من الاستجابة، واعرض معلومات الوظيفة في نافذة منبثقة مع تأخير
// @name:bg          Nowpick замяна на 999+ с действителни данни от отговора
// @description:bg    Захваща определен URL адрес, заменя 999+ с действителните данни от отговора и показва информация за работата в известие със закъснение
// @name:cs          Nowpick nahradit 999+ skutečnými daty z odpovědi
// @description:cs    Zachytí specifickou URL adresu, nahradí 999+ skutečnými daty z odpovědi a zobrazí informace o práci v notifikaci se zpožděním
// @name:da          Nowpick erstatter 999+ med faktiske data fra svaret
// @description:da    Indfang en specifik URL, erstat 999+ med faktiske data fra svaret, og vis jobinfo i en toast med forsinkelse
// @name:de          Nowpick ersetzt 999+ durch tatsächliche Daten aus der Antwort
// @description:de    Erfasst eine bestimmte URL, ersetzt 999+ durch tatsächliche Daten aus der Antwort und zeigt Jobinformationen in einem Toast mit Verzögerung an
// @name:el          Nowpick αντικαθιστά το 999+ με πραγματικά δεδομένα από την απάντηση
// @description:el    Καταγράφει μια συγκεκριμένη διεύθυνση URL, αντικαθιστά το 999+ με πραγματικά δεδομένα από την απάντηση και εμφανίζει πληροφορίες εργασίας σε ένα αναδυόμενο μήνυμα με καθυστέρηση
// @name:eo          Nowpick anstataŭigas 999+ per faktaj datumoj el la respondo
// @description:eo    Kaptas specifan URL, anstataŭigas 999+ per faktaj datumoj el la respondo, kaj montras laborinformojn en ŝprucfenestro kun prokrasto
// @name:es          Nowpick reemplaza 999+ con datos reales de la respuesta
// @description:es    Captura una URL específica, reemplaza 999+ con datos reales de la respuesta y muestra información del trabajo en una notificación con demora
// @name:fi          Nowpick korvaa 999+ todellisilla tiedoilla vastauksesta
// @description:fi    Kaappaa tietyn URL-osoitteen, korvaa 999+ todellisilla tiedoilla vastauksesta ja näyttää työpaikkatietoja ilmoituksessa viiveellä
// @name:fr          Nowpick remplace 999+ par les données réelles de la réponse
// @description:fr    Capture une URL spécifique, remplace 999+ par les données réelles de la réponse et affiche les informations sur l'emploi dans une notification avec délai
// @name:fr-CA       Nowpick remplace 999+ par les données réelles de la réponse
// @description:fr-CA    Capture une URL spécifique, remplace 999+ par les données réelles de la réponse et affiche les informations sur l'emploi dans une notification avec délai
// @name:he          Nowpick מחליף 999+ בנתונים ממשיים מהתגובה
// @description:he    לוכד כתובת URL ספציפית, מחליף 999+ בנתונים ממשיים מהתגובה ומציג מידע על עבודה בהודעה קופצת עם עיכוב
// @name:hr          Nowpick zamijeni 999+ stvarnim podacima iz odgovora
// @description:hr    Hvata određeni URL, zamjenjuje 999+ stvarnim podacima iz odgovora i prikazuje informacije o poslu u obavijesti s odgodom
// @name:hu          Nowpick lecseréli a 999+-t a válaszból származó tényleges adatokra
// @description:hu    Elfog egy adott URL-t, lecseréli a 999+-t a válaszból származó tényleges adatokra, és késleltetve jeleníti meg a munkainformációkat egy értesítésben
// @name:id          Nowpick mengganti 999+ dengan data aktual dari respons
// @description:id    Menangkap URL tertentu, mengganti 999+ dengan data aktual dari respons, dan menampilkan info pekerjaan dalam toast dengan penundaan
// @name:it          Nowpick sostituisce 999+ con i dati effettivi dalla risposta
// @description:it    Cattura un URL specifico, sostituisce 999+ con i dati effettivi dalla risposta e mostra le informazioni sul lavoro in un toast con ritardo
// @name:ja          Nowpickは999+をレスポンスからの実際のデータに置き換えます
// @description:ja    特定のURLをキャプチャし、999+をレスポンスからの実際のデータに置き換え、遅延のあるトーストでジョブ情報を表示します
// @name:ka          Nowpick ანაცვლებს 999+-ს პასუხიდან მიღებული ფაქტობრივი მონაცემებით
// @description:ka    იჭერს კონკრეტულ URL-ს, ანაცვლებს 999+-ს პასუხიდან მიღებული ფაქტობრივი მონაცემებით და აჩვენებს სამუშაოს ინფორმაციას შეტყობინებაში დაგვიანებით
// @name:ko          Nowpick은 응답에서 실제 데이터로 999+를 대체합니다.
// @description:ko    특정 URL을 캡처하고 응답에서 실제 데이터로 999+를 대체하고 지연 시간이 있는 토스트에 작업 정보를 표시합니다.
// @name:nb          Nowpick erstatter 999+ med faktiske data fra responsen
// @description:nb    Fang en spesifikk URL, erstatt 999+ med faktiske data fra responsen og vis jobbinfo i en toast med forsinkelse
// @name:nl          Nowpick vervangt 999+ door actuele gegevens uit de reactie
// @description:nl    Legt een specifieke URL vast, vervangt 999+ door actuele gegevens uit de reactie en toont taakinformatie in een toast met vertraging
// @name:pl          Nowpick zastępuje 999+ rzeczywistymi danymi z odpowiedzi
// @description:pl    Przechwytuje określony adres URL, zastępuje 999+ rzeczywistymi danymi z odpowiedzi i wyświetla informacje o pracy w powiadomieniu z opóźnieniem
// @name:pt-BR       Nowpick substitui 999+ pelos dados reais da resposta
// @description:pt-BR    Captura um URL específico, substitui 999+ pelos dados reais da resposta e mostra informações de trabalho em um toast com atraso
// @name:ro          Nowpick înlocuiește 999+ cu datele reale din răspuns
// @description:ro    Capturează un URL specific, înlocuiește 999+ cu datele reale din răspuns și afișează informații despre job într-o notificare tip toast cu întârziere
// @name:ru          Nowpick заменяет 999+ на фактические данные из ответа
// @description:ru    Перехватывает определенный URL, заменяет 999+ на фактические данные из ответа и отображает информацию о вакансии во всплывающем уведомлении с задержкой
// @name:sk          Nowpick nahradí 999+ skutočnými údajmi z odpovede
// @description:sk    Zachytí špecifickú URL adresu, nahradí 999+ skutočnými údajmi z odpovede a zobrazí informácie o práci v notifikácii s oneskorením
// @name:sr          Nowpick замењује 999+ стварним подацима из одговора
// @description:sr    Захвата одређени URL, замењује 999+ стварним подацима из одговора и приказује информације о послу у искачућем прозору са закашњењем
// @name:sv          Nowpick ersätter 999+ med faktiska data från svaret
// @description:sv    Fånga en specifik URL, ersätt 999+ med faktiska data från svaret och visa jobbinfo i en toast med fördröjning
// @name:th          Nowpick แทนที่ 999+ ด้วยข้อมูลจริงจากการตอบกลับ
// @description:th    ดักจับ URL ที่ระบุ แทนที่ 999+ ด้วยข้อมูลจริงจากการตอบกลับ และแสดงข้อมูลงานในข้อความแจ้งเตือนพร้อมการหน่วงเวลา
// @name:tr          Nowpick, 999+'ı yanıttan gelen gerçek verilerle değiştirir
// @description:tr    Belirli bir URL'yi yakalayın, 999+'ı yanıttan gelen gerçek verilerle değiştirin ve iş bilgilerini gecikmeli bir bildirimde gösterin
// @name:ug          Nowpick جاۋابتىن كەلگەن ھەقىقىي سانلىق مەلۇماتلار بىلەن 999+ نى ئالماشتۇرىدۇ
// @description:ug    مەلۇم بىر URL نى تۇتۇۋېلىپ ، جاۋابتىن كەلگەن ھەقىقىي سانلىق مەلۇماتلار بىلەن 999+ نى ئالماشتۇرۇڭ ۋە خىزمەت ئۇچۇرلىرىنى كېچىكتۈرۈلگەن ئەسكەرتىشتە كۆرسىتىڭ
// @name:uk          Nowpick замінює 999+ фактичними даними з відповіді
// @description:uk    Захоплює певну URL-адресу, замінює 999+ фактичними даними з відповіді та відображає інформацію про роботу у спливаючому повідомленні із затримкою
// @name:vi          Nowpick thay thế 999+ bằng dữ liệu thực tế từ phản hồi
// @description:vi    Chụp một URL cụ thể, thay thế 999+ bằng dữ liệu thực tế từ phản hồi và hiển thị thông tin công việc trong thông báo toast có độ trễ
// @name:zh          Nowpick替换999+为响应中的实际数据
// @description:zh    捕获特定URL,用响应中的实际数据替换999+,并在带有延迟的Toast中显示工作信息
// @name:zh-HK       Nowpick取代999+為響應中的實際數據
// @description:zh-HK    捕獲特定URL,用響應中的實際數據替換999+,並在帶有延遲的Toast中顯示工作信息
// @name:zh-SG       Nowpick替换999+为响应中的实际数据
// @description:zh-SG    捕获特定URL,用响应中的实际数据替换999+,并在带有延迟的Toast中显示工作信息
// @name:zh-TW       Nowpick取代999+為響應中的實際數據
// @description:zh-TW    捕獲特定URL,用響應中的實際數據替換999+,並在帶有延遲的Toast中顯示工作信息
// @namespace    http://tampermonkey.net/
// @version      1.0.4.1
// @author       aspen138
// @match        *://nowpick.nowcoder.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @require      https://update.gf.qytechs.cn/scripts/462234/1322684/Message.js
// @license      MIT
// ==/UserScript==



// key: "getDeliverNum",
// value: function(t) {
//     if (1 === t.showStatus)
//         return "- -";
//     var e = t.inviteSuccessCnt + t.initiativeDeliverCnt;
//     return e > 999 ? "999+" : e
// }





(function () {
    'use strict';

    // Function to execute the main functionality
    async function executeMainFunctionality() {
        if (window.location.href === "https://nowpick.nowcoder.com/w/hrconsole/job-manage") {
            window.QMSG_GLOBALS = {
                DEFAULTS: {
                    showClose: true,
                    autoClose: false,
                    timeout: 3600 * 1000 // ms
                }
            };

            const name = "JobUpdater";

            function toast(s, error = false) {
                if (error) {
                    Qmsg.error(`[${name}] ${s}`);
                    console.error(`[${name}] ${s}`);
                } else {
                    Qmsg.success(`[${name}] ${s}`);
                    console.log(`[${name}] ${s}`);
                }
            }

            // Function to show a toast message
            function showToast(message) {
                toast(" " + message, false); // Display
            }

            // Function to escape special characters in CSS selectors
            function escapeCSSSelector(selector) {
                return selector.replace(/([!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~])/g, '\\$1');
            }

            // Function to replace the '999+' value with actual data
            async function replaceValues(jobName, unProcessCount) {
                const jobTitleElements = document.querySelectorAll('.job-title-name');
                const updateTasks = Array.from(jobTitleElements).map(async (el) => {
                    if (el.textContent.trim() === jobName) {
                        const jobInfoParent = el.closest('.job-info').parentElement.parentElement;
                        const unProcessElement = jobInfoParent.querySelector('.tw-font-semibold');
                        if (unProcessElement && unProcessElement.textContent.trim() === '999+') {
                            unProcessElement.textContent = unProcessCount;
                            showToast(`Updated job "${jobName}" with deliverNum: ${unProcessCount}`);
                        }
                    }
                });
                await Promise.all(updateTasks);
            }

            // Function to delay the update (parallelized for faster updates)
            async function delayUpdate(summaryDetailList) {
                await new Promise(resolve => setTimeout(resolve, 0.0001*1000)); // 1 second delay //why we need the delay here???

                const updateTasks = summaryDetailList.map(async (job) => {
                    const deliverNum = job.unProcessCount + job.successCount + job.failCount + job.unDetermined + job.writtenInterviewCount;
                    await replaceValues(job.jobName, deliverNum);
                });

                await Promise.all(updateTasks);
            }

            // Function to fetch data and initiate update (parallelized)
            async function fetchDataAndInitiateUpdate() {
                try {
                    const response = await fetch("https://nowpick.nowcoder.com/h/resume-deliver/summary");
                    if (response.ok) {
                        const jsonResponse = await response.json();
                        if (jsonResponse.data && jsonResponse.data.summaryDetailList) {
                            const summaryDetailList = jsonResponse.data.summaryDetailList;
                            await delayUpdate(summaryDetailList);
                        } else {
                            showToast("Unexpected response format");
                        }
                    } else {
                        showToast("Error: " + response.statusText);
                    }
                } catch (e) {
                    showToast("Request failed: " + e.message);
                }
            }

            // Execute only if we are on the specific URL
            await fetchDataAndInitiateUpdate();
        }
    }

    // Execute the main functionality on page load
    executeMainFunctionality();

    // Listen for hash change or pop state to detect URL changes
    window.addEventListener('hashchange', executeMainFunctionality);
    window.addEventListener('popstate', executeMainFunctionality);

    // Use a MutationObserver to detect URL changes if the page uses JavaScript-based navigation
    const observer = new MutationObserver(() => {
        executeMainFunctionality();
    });

    observer.observe(document, { childList: true, subtree: true });
})();


QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址