// ==UserScript== // @name boss外包公司提示 // @namespace https://github.com/bosens-China/boss-outsourcing-tips // @version 1.0.0 // @description boss招聘对外包公司显式提醒 // @author yliu // @match https://www.zhipin.com/job_detail/* // @match http://www.zhipin.com/job_detail/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function () { 'use strict'; var blacklist$1 = [ "\u535A\u6717\u8F6F\u4EF6", "\u4E2D\u8F6F\u56FD\u9645", "\u4E1C\u8F6F\u96C6\u56E2", "\u535A\u5F66\u79D1\u6280", "\u4E2D\u7535\u91D1\u4FE1", "\u6CD5\u672C\u4FE1\u606F", "\u6D59\u5927\u7F51\u65B0", "\u5965\u535A\u6770\u5929", "\u6D6A\u6F6E", "\u8F6F\u901A\u52A8\u529B", "\u798F\u745E\u535A\u5FB7", "\u4FE1\u5FC5\u4F18", "\u5927\u5C55\u79D1\u6280", "\u6052\u751F\u7535\u5B50", "\u65E5\u7535\u5353\u8D8A\u8F6F\u4EF6", "\u5927\u8FDE\u534E\u4FE1", "\u4E2D\u548C\u8F6F\u4EF6", "\u65B0\u81F4\u8F6F\u4EF6", "\u827E\u65AF\u514B\u96F7", "\u6D77\u9686\u8F6F\u4EF6", "\u5927\u5B87\u5B99\u4FE1\u606F", "\u665F\u5CF0\u8F6F\u4EF6", "\u5BCC\u58EB\u901A\u4FE1\u606F", "NTTDATA", "\u5B8F\u667A\u79D1\u6280", "\u795E\u5DDE\u6570\u7801\u901A\u7528\u8F6F\u4EF6", "\u51CC\u5FD7\u8F6F\u4EF6", "\u97F3\u6CF0\u601D", "\u5FAE\u521B\u8F6F\u4EF6", "\u5F00\u76EE\u4F70\u94A7\u6210", "\u6D69\u9CB8\u667A\u80FD", "\u8BDA\u8FC8\u79D1\u6280", "\u6DA6\u548C\u8F6F\u4EF6", "ST \u65B0\u6D77" ]; var KeyWords = [ "\u89E3\u51B3\u65B9\u6848", "\u6280\u672F\u670D\u52A1", "\u9A7B\u573A", "\u51FA\u5DEE", "\u73B0\u573A", "\u6D3E\u9063", "\u56FD\u5185\u9886\u5148", "\u670D\u52A1\u63D0\u4F9B\u5546", "\u6570\u5B57\u5316\u8F6C\u578B", "\u5B9A\u5236\u5316\u7CFB\u7EDF", "\u4E00\u7AD9\u5F0F\u670D\u52A1", "\u4E3A\u5BA2\u6237\u63D0\u4F9B", "\u4E00\u4F53\u5316", "\u664B\u5347\u9014\u5F84", "\u5DE5\u4F5C\u5730\u70B9", "\u5916\u6D3E" ]; var information_default = { blacklist: blacklist$1, KeyWords }; const keyWords = () => { const selectors = [ ".job-banner", ".job-detail-section", ".job-detail-company" ]; const content = selectors.reduce((text2, selector) => { var _a; const dom = document.body.querySelector(selector); return text2 + ((_a = dom == null ? void 0 : dom.textContent) != null ? _a : ""); }, ""); let text = "\u8BE5\u5C97\u4F4D\u63CF\u8FF0\u7B26\u5408\u5916\u5305\u5B9A\u4E49\uFF0C\u5177\u4F53\u5982\u4E0B\uFF1A\n"; const frequency = information_default.KeyWords.reduce((count, KeyWord) => { if (content.includes(KeyWord)) { text += `${count + 1}. ${KeyWord} `; return count + 1; } return count; }, 0); if (!frequency) { return true; } return { grade: frequency === 1 ? 0 : 1, text: text.trim() }; }; const blacklist = () => { var _a; const content = ((_a = document.body.querySelector(`a[ka="job-detail-company_custompage"]`)) == null ? void 0 : _a.textContent) || ""; let text = ""; const frequency = information_default.blacklist.some((KeyWord) => { if (content.includes(KeyWord)) { text = `\u516C\u53F8\u540D\u79F0\u4E3A\u5916\u5305\uFF1A${KeyWord}`; return true; } return false; }); if (!frequency) { return true; } return { grade: 1, text }; }; class Chain { constructor(fn) { this.fn = fn; } next() { const result2 = this.fn(); if (result2 && this.chain) { return this.chain.next.apply(this.chain); } return result2; } setNext(chain) { this.chain = chain; return chain; } } const chainKeyWords = new Chain(keyWords); const chainBlacklist = new Chain(blacklist); const result = chainBlacklist.setNext(chainKeyWords).next(); var n$1,l$1,u$1,s$1=[];function y$1(l,u,t){var i,o,r,f={};for(r in u)"key"==r?i=u[r]:"ref"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n$1.call(arguments,2):t),"function"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d$1(l,f,i,o,null)}function d$1(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u$1:r};return null==r&&null!=l$1.vnode&&l$1.vnode(f),f}function k$1(n){return n.children}n$1=s$1.slice,l$1={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l;}throw n}},u$1=0,"function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout; var _$1=0;function o$1(o,e,n,t,f,l){var s,u,a={};for(u in e)"ref"==u?s=e[u]:a[u]=e[u];var i={type:o,props:a,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--_$1,__source:f,__self:l};if("function"==typeof o&&(s=o.defaultProps))for(u in s)void 0===a[u]&&(a[u]=s[u]);return l$1.vnode&&l$1.vnode(i),i} var o=/[\s\n\\/='"\0<>]/,a=/^(xlink|xmlns|xml)([A-Z])/,n=/^accessK|^auto[A-Z]|^ch|^col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|readO|rowS|spellC|src[A-Z]|tabI|item[A-Z]/,i=/^ac|^ali|arabic|basel|cap|clipPath$|clipRule$|color|dominant|enable|fill|flood|font|glyph[^R]|horiz|image|letter|lighting|marker[^WUH]|overline|panose|pointe|paint|rendering|shape|stop|strikethrough|stroke|text[^L]|transform|underline|unicode|units|^v[^i]|^w|^xH/,l=/["&<]/;function s(e){if(0===e.length||!1===l.test(e))return e;for(var t=0,r=0,o="",a="";r");return z||("string"==typeof M?z=s(M):null!=M&&!1!==M&&!0!==M&&(z=C(M,l,"svg"===E||"foreignObject"!==E&&c,p,t))),f&&f(t),t.__=void 0,m&&m(t),!z&&S.has(E)?j+"/>":j+">"+z+""}var S=new Set(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),A=b; var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; const Notify = (props) => { const { grade } = props; const text = grade === 0 ? "\u26A0\uFE0F \u53EF\u80FD\u4E3A\u5916\u5305\u516C\u53F8" : "\u274C \u5916\u5305\u516C\u53F8"; return /* @__PURE__ */ o$1( "a", { class: "btn", style: { width: "auto", minWidth: "55px", color: grade === 0 ? "#faad14" : "#ff4d4f", padding: "0 12px", background: "transparent", borderColor: "transparent" }, children: text } ); }; const getHtml = (props) => { return A(/* @__PURE__ */ o$1(Notify, __spreadValues({}, props))); }; const addReminder = (text) => { const dom = document.body.querySelector(".job-detail"); if (!dom) { return; } const t = document.createElement("p"); t.innerHTML = text; t.style.cssText = `white-space: pre;`; dom.insertBefore(t, dom.firstChild); }; (() => { if (typeof result === "boolean") { return; } const html = getHtml(result); const dom = document.body.querySelector(".btn-container"); if (!dom) { return; } const div = document.createElement("div"); div.innerHTML = html; dom.appendChild(div.firstElementChild); addReminder(result.text); })(); })();