Greasy Fork is available in English.

原神内鬼吧, 显示发帖用户ID和关注

显示发帖用户ID,点击ID可查看关注贴吧等级

// ==UserScript==
// @name         原神内鬼吧, 显示发帖用户ID和关注
// @namespace    https://tieba.baidu.com/
// @description  显示发帖用户ID,点击ID可查看关注贴吧等级
// @author       你的名字
// @version      0.1.6
// @license      MIT
// @match        https://tieba.baidu.com/f?kw=*
// @grant        GM_xmlhttpRequest
// ==/UserScript==
(function () {
    'use strict';
    (()=>{"use strict";var e={448:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(630)),a=i(n(633)),o=i(n(429)),r=i(n(171));a.default.insertTieBaLevelCSS();const l=new s.default;setInterval((function(){r.default.removeAD(),l.addUserId($(".tb_icon_author"),"span.frs-author-name-wrap > a",o.default.getUserNameFromDataField,null)}),1e3)},314:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractContainer=void 0,t.AbstractContainer=class{getContainer(){return this.container}}},262:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});const i=n(314);class s extends i.AbstractContainer{constructor(e){super(),this.container=document.createElement("a"),this.initialize(),this.setTextContent(e)}initialize(){this.container=document.createElement("a"),this.container.href="#",this.container.target="_blank"}getHref(){return this.container.href}setHref(e){this.container.href=e}getTarget(){return this.container.target}setTarget(e){this.container.target=e}getTextContent(){return this.container.textContent}setTextContent(e){this.container.textContent=e}}t.default=s},5:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});const i=n(314);class s extends i.AbstractContainer{constructor(){super(),this.container=document.createElement("div"),this.initialize()}initialize(){this.container.style.height="1px",this.container.style.backgroundColor="#ccc",this.container.style.marginBottom="1px"}}t.default=s},777:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});const i=n(314);class s extends i.AbstractContainer{constructor(){super(),this.container=document.createElement("div"),this.initialize()}initialize(){this.container.id="loading82Tool"}}t.default=s},416:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(171)),a=n(314);class o extends a.AbstractContainer{constructor(e){super(),this.container=document.createElement("div"),this.initialize(),this.create(e)}initialize(){this.container.className="p_badge"}create(e){const t=Math.min(Math.floor(e.level/5)+1,4);let n="; background: red",i="#";s.default.BLACK_LIST.has(e.name)||(n="",i=encodeURIComponent(e.name)),this.container.innerHTML=`<a class="user_badge d_badge_bright d_badge_icon${t}" target="_blank" href="https://tieba.baidu.com/f?kw=${i}"><div class="d_badge_title" title="${e.name}" style="overflow: hidden; text-overflow: ellipsis ${n}">${e.name}</div><div class="d_badge_lv">${e.level}</div></a>`}}t.default=o},429:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(e,t){this.container=document.createElement("span"),this.container.className=n.className,this.container.textContent=`🆔${e}`,this.initializeSpanStyles(),$(this.container).on("click",(n=>{t(e,n)}))}initializeSpanStyles(){this.container.style.backgroundColor="#f0e9e9",this.container.style.borderRadius="5px",this.container.style.color="#4e4747",this.container.style.border="solid 1px",this.container.style.borderColor="#e6e6e6",this.container.style.fontWeight="bold",this.container.style.marginRight="8px",this.container.style.display="inline-block",this.container.style.letterSpacing="normal"}getElement(){return this.container}static getUserNameFromDataField(e,t){let i=$(e).find(t).attr("data-field");if(null==i)return"";i=i.replace(/'([^']*)'/g,'"$1"');const s=JSON.parse(i).un;return null==s||0==s.length?n.getUserNameFromTitle(e):s}static getUserNameFromTitle(e){const t=e.getAttribute("title");if(null==t)return"";const n=t.match(/主题作者: ([^\n]+)/);return n?n[1]:""}}n.className="UserIdSpan",t.default=n},710:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(790));t.default=class{constructor(e,t){const n=document.createElement("div");n.className="tag",n.textContent=e,n.style.position="relative",n.style.backgroundColor="red",n.style.color="white",n.style.padding="3px 10px",n.style.borderRadius="15px",n.style.fontSize="12px",n.style.display="inline-flex",n.style.alignItems="center",n.style.maxWidth="200px";const i=new s.default(n,t);n.appendChild(i.element),this._element=n}get element(){return this._element}}},623:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});const i=n(314);class s extends i.AbstractContainer{constructor(e){super(),this.container=document.createElement("div"),this.abortHandler=null,this.child=document.createElement("div"),this.child.textContent=e,this.initialize()}initialize(){this.initializeStyle(),this.initializeListener()}initializeStyle(){this.child.style.display="inline-block",this.child.style.padding="0px 10px",this.child.style.backgroundColor="#9b18b2",this.child.style.color="white",this.child.style.fontSize="14px",this.child.style.borderRadius="5px",this.child.style.textAlign="center",this.child.style.cursor="pointer",this.child.style.transition="background-color 0.3s ease",this.container.style.display="grid",this.container.style.padding="5px 10px",this.container.style.marginBottom="10px",this.container.style.borderRadius="5px",this.container.appendChild(this.child)}initializeListener(){[this.child,this.child].forEach((e=>{e.addEventListener("mouseover",(()=>{e.style.backgroundColor="#77048b"})),e.addEventListener("mouseout",(()=>{e.style.backgroundColor="#9b18b2"})),this.container.addEventListener("mousedown",(()=>{e.style.backgroundColor="#d106f8"})),this.container.addEventListener("mouseup",(()=>{e.style.backgroundColor="#9b18b2"}))}))}onClick(e,t){$(this.container).on("click",(n=>{var i;null===(i=this.abortHandler)||void 0===i||i.abort(),this.abortHandler=t.createNewChat(e,n)}))}abort(){var e;null===(e=this.abortHandler)||void 0===e||e.abort()}}t.default=s},790:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t){const n=document.createElement("span");n.className="closeButton",n.textContent="×",n.style.position="absolute",n.style.top="0",n.style.right="0",n.style.cursor="pointer",n.style.padding="0 5px",n.style.fontWeight="bold",n.addEventListener("click",(()=>t(e))),this._element=n}get element(){return this._element}}},428:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n){this._button=document.createElement("div"),this._button.textContent=n,Object.assign(this._button.style,((e,t)=>({display:"inline-block",padding:"2px 4px",backgroundColor:e,color:t,boxShadow:"0 4px 6px rgba(0, 0, 0, 0.1)",border:"none",borderRadius:"5px",cursor:"pointer",fontSize:"12px",userSelect:"none",textAlign:"center",lineHeight:"18px",width:"55px",margin:"5px"}))(e,t))}get button(){return this._button}}},898:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this._inputField=document.createElement("input"),this._inputField.placeholder="输入标签,用分号分隔",this._inputField.style.marginBottom="5px",this._inputField.style.padding="5px",this._inputField.style.width="calc(100% - 10px)",this._inputField.style.border="none",this._inputField.style.outline="none",this._inputField.style.fontSize="14px"}get inputField(){return this._inputField}}},560:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(416)),a=n(314);class o extends a.AbstractContainer{constructor(){super(),this.container=document.createElement("div"),this.initialize()}initialize(){this.container.style.display="grid",this.container.style.gridTemplateColumns="repeat(2, 1fr)",this.container.style.gap="10px",this.container.style.maxHeight="350px",this.container.style.overflowY="scroll",this.container.style.scrollbarWidth="none"}addTieBa(e){const t=new s.default(e);this.container.appendChild(t.container)}clear(){this.container.replaceChildren()}hide(){this.container.style.display="none"}show(){this.container.style.display="grid"}setEmpty(){this.container.innerHTML="<span>无查询结果</span>"}}t.default=o},846:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this._tagListContainer=document.createElement("div"),this._tagListContainer.style.display="flex",this._tagListContainer.style.flexWrap="wrap",this._tagListContainer.style.gap="10px",this._tagListContainer.style.padding="15px 10px",this._tagListContainer.style.borderRadius="10px",this._tagListContainer.style.backgroundColor="#f0f0f0",this._tagListContainer.style.marginBottom="10px",this._tagListContainer.style.maxWidth="100%",this._tagListContainer.style.maxHeight="100px",this._tagListContainer.style.boxSizing="border-box",this._tagListContainer.style.overflowY="scroll",this._tagListContainer.style.scrollbarWidth="none"}get tagListContainer(){return this._tagListContainer}}},290:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(688)),a=i(n(171)),o=i(n(623)),r=i(n(93)),l=i(n(633)),d=i(n(630)),c=i(n(789));class h{constructor(){this.curPage=1;const e=document.getElementById(h.containerId);null!=e&&e instanceof HTMLDivElement?(this.chatContainer=e,this.chatContainer.replaceChildren()):(l.default.insertChatCSS(),this.chatContainer=document.createElement("div"),this.chatContainer.id=h.containerId,document.body.appendChild(this.chatContainer)),this.curPage=1,this.header=document.createElement("div"),this.chatMessageDiv=document.createElement("div"),this.chatMessageDiv.id="chatMessagesContainer",this.loading=new r.default(this.chatMessageDiv),this.button=new o.default("下一页"),this.nextPageButton=this.button.child,this.footer=document.createElement("div"),this.initializeDialog()}initializeDialog(){this.header.className="chatHeader",this.footer.className="chatFooter",this.chatContainer.appendChild(this.header),this.chatContainer.appendChild(this.chatMessageDiv),this.chatContainer.appendChild(this.loading.container),this.chatContainer.appendChild(this.nextPageButton),this.chatContainer.appendChild(this.footer),$(document).on("click",(e=>{!$(e.target).closest(`#${h.containerId}`).length&&this.chatContainer.classList.contains("show")&&(this.button.abort(),setTimeout((()=>{this.chatContainer.classList.remove("show"),this.chatContainer.style.display="none"}),0))}))}showChatWindow(e){this.chatContainer.style.display="none",this.header.textContent="",this.chatMessageDiv.replaceChildren(),this.footer.replaceChildren();const t=a.default.setDivPositionByMouseClick(e,this.chatContainer);this.chatContainer.style.left=Math.max(10,t.left-10)+"px",this.chatContainer.style.top=Math.max(10,t.top-30)+"px",this.chatContainer.style.display="flex",this.loading.show(),setTimeout((()=>{this.chatContainer.className="show"}),0)}setUserName(e){this.header.textContent=`用户🆔${e}最近回帖记录`;const t=encodeURIComponent(e),n=document.createElement("a");n.href=`https://www.82cat.com/tieba/reply/${t}/1`,n.target="_blank",n.textContent=`在82Cat查看🆔${e}的回帖记录`,this.footer.appendChild(n)}createNewChat(e,t){return this.showChatWindow(t),this.setUserName(e),this.appendChat(e)}appendChat(e){this.curPage++;const t=this,n=this.curPage;return d.default.useBackendUrl?a.default.requestFromOuoTool(a.default.REPLY,e,n,(i=>t.onMessageResponse(e,n,i,t)),(()=>t.onTimeout(t)),(()=>t.onFailed(t))):a.default.requestFrom82Tool(a.default.REPLY,e,n,(i=>t.onMessageResponse(e,n,i,t)),(()=>t.onTimeout(t)),(()=>t.onFailed(t)))}addNoMessage(e,t){if(0==e.chatMessageDiv.childElementCount){const n=document.createElement("div");n.className="noMessages",n.textContent=t,e.chatMessageDiv.appendChild(n),e.nextPageButton.style.display="none"}}onMessageResponse(e,t,n,i){let a;a=d.default.useBackendUrl?c.default.getReplyMessage(n):s.default.getReplyMessage(n),0===a.length&&"none"!=i.nextPageButton.style.display?i.addNoMessage(i,"无聊天内容"):(i.nextPageButton.style.display="inline-block",$(i.nextPageButton).on("click",(()=>{i.loading.show(),i.appendChat(e)})),a.forEach(((e,t)=>{const n=i.createMessageBubble(e,!d.default.useBackendUrl);i.chatMessageDiv.appendChild(n)}))),i.loading.hide()}onTimeout(e){e.loading.hide(),e.addNoMessage(e,"请求超时")}onFailed(e){e.loading.hide(),e.addNoMessage(e,"请求失败")}createMessageBubble(e,t){const n=document.createElement("div");n.className="messageBubbleContainer";const i=this.createAvatar(e.avatar,t);n.appendChild(i);const s=this.createMessageContent(e,t);return n.appendChild(s),n.style.flexDirection=t?"row":"row-reverse",n}createAvatar(e,t){const n=document.createElement("div");return n.className="chatAvatar",n.title=e,n.textContent=e,t?n.style.marginRight="10px":n.style.marginLeft="10px",n}createMessageContent(e,t){const n=document.createElement("div");n.className="messageContent";const i=document.createElement("div");i.className="messageTitle",i.title=e.title,d.default.useBackendUrl?i.textContent="发帖":i.textContent="回复: "+e.title,i.style.textAlign=t?"left":"right",n.appendChild(i);const s=document.createElement("div");s.className="messageBody",s.textContent=e.content,t?s.classList.add("senderBubble"):s.classList.add("receiverBubble"),n.appendChild(s);const a=document.createElement("div");return a.className="timestamp",a.textContent=this.formatTimestamp(e.timestamp),a.style.textAlign="center",n.appendChild(a),n}formatTimestamp(e){const t=e.replace(/年/g,"-").replace(/月/g,"-").replace(/日/g," ").replace(/时/g,":").replace(/分/g,":").replace(/秒/g,""),n=new Date(t),i=n.getMonth()+1,s=n.getDate(),a=n.getHours(),o=n.getMinutes();return d.default.useBackendUrl?`${i}月${s}日`:`${i}月${s}日 ${a}:${o<10?"0"+o:o}`}}h.animationTime=150,h.containerId="chatContainer",t.default=h},93:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(777)),a=n(314);class o extends a.AbstractContainer{constructor(e){super(),this.container=document.createElement("div"),this.initialize(),this.animation=new s.default,this.visibility=e.style.visibility,this.display=e.style.display,this.parentContainer=e,this.copyParentStyle(e)}initialize(){this.container.id="loadingContainer"}copyParentStyle(e){this.container.style.all=e.style.all,this.container.appendChild(this.animation.container)}hide(){this.parentContainer.style.visibility=this.visibility,this.container.style.display="none"}show(){this.container.style.display=this.display,this.parentContainer.style.visibility="hidden"}}t.default=o},885:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(259)),a=i(n(710)),o=i(n(846)),r=i(n(898)),l=i(n(428));class d{constructor(){s.default.loadDataBase(s.default.localStorageId);const e=document.getElementById(d.containerId);null==e?(this.container=document.createElement("div"),this.container.id=d.containerId,this.container.replaceChildren()):this.container=e,this._username=null,this.tagListContainer=(new o.default).tagListContainer,this.inputField=(new r.default).inputField,this.addButton=new l.default("#4CAF50","#fff","添加").button,this.exportButton=new l.default("#2196F3","#fff","导出").button,this.importButton=new l.default("#18624d","#fff","导入").button,this.initialize()}initialize(){this.addButton.addEventListener("click",(()=>this.addTags())),this.importButton.addEventListener("click",(()=>s.default.importJson())),this.exportButton.addEventListener("click",(()=>s.default.exportJson())),this.container.appendChild(this.tagListContainer),this.container.appendChild(this.inputField),this.container.appendChild(this.addButton),this.container.appendChild(this.importButton),this.container.appendChild(this.exportButton),this.loadTags()}getElement(){return this.container}close(){this._username=null,this.tagListContainer.replaceChildren()}load(e){this._username=e,this.loadTags()}addTags(){const e=this.inputField.value.trim();if(!e)return;const t=e.split(/[;, ;]/).map((e=>e.trim())).filter((e=>e.length>0));this.addTagsToIndexedDB(t),t.forEach((e=>this.createTag(e))),this.inputField.value=""}addTagsToIndexedDB(e){this.getTagsFromIndexedDB((t=>{const n=Array.from(new Set([...t,...e]));if(null!=this._username&&this._username.length>0){console.log(`缓存标签, 用户名: ${this._username}, 已缓存标签: ${JSON.stringify(t)}, 新增标签: ${JSON.stringify(e)}`);const i=indexedDB.open(s.default.localStorageId),a=this._username;i.onsuccess=()=>{s.default.addOrUpdateUser(i.result,a,n)}}}))}getTagsFromIndexedDB(e){if(null==this._username||0==this._username.length)return;const t=indexedDB.open(s.default.localStorageId),n=this._username;t.onsuccess=()=>{const i=t.result;s.default.getUser(i,n,e)}}createTag(e){const t=this,n=new a.default(e,(e=>{var n;const i=null===(n=e.textContent)||void 0===n?void 0:n.trim().slice(0,-1);i&&t.removeTagFromIndexedDB(i),e.remove()}));this.tagListContainer.appendChild(n.element)}removeTagFromIndexedDB(e){this.getTagsFromIndexedDB((t=>{const n=t.filter((t=>t!==e));if(null!=this._username&&this._username.length>0){console.log(`清除缓存标签, 用户名: ${this._username}, 已缓存标签: ${JSON.stringify(t)}, 删除标签: ${e}`);const i=indexedDB.open(s.default.localStorageId),a=this._username;i.onsuccess=()=>{const e=i.result;n.length>0?s.default.addOrUpdateUser(e,a,n):s.default.deleteUser(e,a)}}}))}loadTags(){this.getTagsFromIndexedDB((e=>{e.forEach((e=>this.createTag(e)))}))}}d.containerId="tagManager",t.default=d},630:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(429)),a=i(n(885)),o=i(n(633)),r=i(n(171)),l=i(n(688)),d=i(n(262)),c=i(n(623)),h=i(n(560)),u=i(n(93)),p=i(n(5)),g=i(n(290)),m=i(n(789));class f{constructor(){this.abortHandler=null;const e=document.getElementById(f.containerId);null!=e&&e instanceof HTMLDivElement?(this.container=e,this.container.replaceChildren()):(o.default.insertLoadingCSS(),this.container=document.createElement("div"),this.container.id=f.containerId,document.body.appendChild(this.container)),this.replyUrl=new d.default("查询用户历史发言"),this.tagManager=new a.default,this.line=new p.default,this.historyButton=new c.default("以聊天形式查看回帖记录"),this.tieBaList=new h.default,this.loading=new u.default(this.tieBaList.container),this.chatWindow=new g.default,this.initializeStyles(),this.initializeDialog()}initializeStyles(){this.container.style.position="absolute",this.container.style.zIndex="9999",this.container.style.backgroundColor="#f8f4f4",this.container.style.border="1px solid #ccc",this.container.style.borderRadius="10px",this.container.style.padding="10px",this.container.style.boxShadow="0 4px 6px rgba(0, 0, 0, 0.1)",this.container.style.width="230px",this.container.style.display="none"}initializeDialog(){this.appendChildContainer(this.replyUrl),this.container.appendChild(document.createElement("br")),this.container.appendChild(this.tagManager.getElement()),this.appendChildContainer(this.line),this.appendChildContainer(this.historyButton),this.appendChildContainer(this.tieBaList),this.appendChildContainer(this.loading),$(document).on("click",(e=>{$(e.target).closest(`#${f.containerId}`).length||$(e.target).closest("span").length||(this.historyButton.abort(),this.tagManager.close(),this.container.style.display="none")}))}appendChildContainer(e){this.container.appendChild(e.getContainer())}showDialog(e){this.container.style.display="none",this.tieBaList.clear();const t=r.default.setDivPositionByMouseClick(e,this.container);this.container.style.left=t.left+"px",this.container.style.top=Math.max(10,t.top-300)+"px",this.container.style.display="block"}addUserId(e,t,n,i){e.each(((e,a)=>{if(0==$(a).find(`span.${s.default.className}`).length){const e=n(a,t),o=new s.default(e,((t,n)=>{var i;null===(i=this.abortHandler)||void 0===i||i.abort(),this.loading.show(),this.showDialog(n),this.tagManager.load(t),this.historyButton.onClick(t,this.chatWindow);const s=r.default.loadSubscribeFromSession(t),a=encodeURIComponent(t);if(this.setReplyHref(a),null!=s)this.addSubscribe(s);else{const n=this,i=1;f.useBackendUrl?this.abortHandler=r.default.requestFromOuoTool(r.default.FORUM,t,i,(t=>n.onSubscribeResponse(e,i,t,n)),(()=>n.onTimeout(n)),(()=>n.onFailed(n))):this.abortHandler=r.default.requestFrom82Tool(r.default.FORUM,t,i,(t=>n.onSubscribeResponse(e,i,t,n)),(()=>n.onTimeout(n)),(()=>n.onFailed(n)))}}));null!=i&&$(a).prepend(i()),$(a).prepend(o.getElement())}}))}setReplyHref(e){this.replyUrl.setHref(`https://www.82cat.com/tieba/reply/${e}/1`)}onSubscribeResponse(e,t,n,i){let s;s=f.useBackendUrl?m.default.getSubscribeTieBa(n):l.default.getSubscribeTieBa(n),s.length>0&&"none"!=i.container.style.display?(console.log("成功响应, 当前页面: ",t),r.default.saveNewSubscribeToSession(e,s)&&(i.addSubscribe(s),t+=1,i.abortHandler=r.default.requestFrom82Tool(r.default.FORUM,e,t,(n=>i.onSubscribeResponse(e,t,n,i)),(()=>i.onTimeout(i)),(()=>i.onFailed(i))))):(1==t&&i.addSubscribe(s),console.log("查询关注信息完毕"))}onTimeout(e){e.loading.hide(),e.tieBaList.container.innerHTML.length<=0&&(e.tieBaList.container.innerHTML="<span>连接超时</span>"),f.useBackendUrl=!0}onFailed(e){e.loading.hide(),e.tieBaList.container.innerHTML.length<=0&&(e.tieBaList.container.innerHTML="<span>连接失败</span>"),f.useBackendUrl=!0}addSubscribe(e){0==e.length?this.tieBaList.setEmpty():e.filter((e=>e.level>=4)).sort(((e,t)=>t.level-e.level)).forEach((e=>{this.tieBaList.addTieBa(e)})),this.loading.hide()}}f.useBackendUrl=!1,f.containerId="82ToolDialog",t.default=f},688:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(n(630));t.default=class{static getSubscribeTieBa(e){const t=$(e),n=[];return t.find("tr").each(((e,t)=>{const i=$(t).find("td");if(i.length>=3){const e=i.eq(0).text().trim(),t=i.eq(2).find(".badge").text().trim(),s=parseInt(t,10);isNaN(s)||n.push({name:e,level:s})}})),s.default.useBackendUrl=!1,n}static getReplyMessage(e){const t=$(e),n=[],i=/在([^:]+)吧回复:([^:]+):([^0-9]+)(\d{4}年\d{2}月\d{2}日 \d{2}时\d{2}分\d{2}秒)/;return t.find("ol.list-unstyled > li").each(((e,t)=>{const s=t.textContent;if(null!=s){const e=s.match(i);null!=e&&5==e.length&&n.push({avatar:e[1],title:e[2],content:e[3],timestamp:e[4]})}})),s.default.useBackendUrl=!1,n}}},633:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class n{static insertExternalCSS(e){e.forEach((e=>{const t=document.createElement("link");t.rel="stylesheet",t.href=e,document.head.appendChild(t)}))}static insertTieBaLevelCSS(){n.insertExternalCSS(i)}static insertLoadingCSS(){const e=document.createElement("style");e.innerHTML="\n  #loadingContainer {\n    position: relative;\n    height: 70px;\n    padding: 20px;\n  }\n\n  #loading82Tool {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    width: 50px;\n    height: 50px;\n    border: 5px solid #f3f3f3; /* 背景色 */\n    border-top: 5px solid #3498db; /* 转圈部分的颜色 */\n    border-radius: 50%;\n    animation: spin 2s linear infinite;\n  }\n\n  @keyframes spin {\n    0% { transform: translate(-50%, -50%) rotate(0deg); }\n    100% { transform: translate(-50%, -50%) rotate(360deg); }\n  }\n",document.head.appendChild(e)}static insertChatCSS(){const e=document.createElement("style");e.innerHTML="\n      #chatContainer {\n        z-index: 9999;\n        position: fixed;\n        bottom: 20px;\n        right: 20px;\n        width: 300px;\n        max-width: 100%; /* 确保最大宽度不会超出父容器 */\n        height: 500px;\n        overflow: scroll;\n        scrollbar-width: none;\n        border-radius: 10px;\n        box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);\n        background-color: #f1f1f1;\n        padding: 1px;\n        display: flex;\n        flex-direction: column;\n        gap: 5px;\n        position: absolute;\n        transform: scale(0); /* 初始为最小化状态 */\n        opacity: 0; /* 初始透明 */\n        transition: transform 0.5s ease, opacity 0.5s ease; /* 动画过渡 */\n      }\n      \n      /* 需要确保窗口弹出后的动画效果 */\n      #chatContainer.show {\n        transform: scale(1); /* 恢复为正常大小 */\n        opacity: 1; /* 显示 */\n      }\n      \n      /* 顶栏样式 */\n      .chatHeader {\n        background-color: #4CAF50;\n        color: white;\n        font-size: 18px;\n        font-weight: bold;\n        padding: 10px;\n        text-align: center;\n        border-radius: 10px 10px 0 0;\n      }\n      \n      /* 底栏样式 */\n      .chatFooter {\n        background-color: #4CAF50;\n        color: white;\n        font-size: 14px;\n        padding: 10px;\n        text-align: center;\n        border-radius: 0 0 10px 10px;\n        margin-top: auto; /* 保证底栏始终在最底部 */\n      }\n\n      .chatFooter a {\n        color: white;\n        text-decoration: none;\n        font-weight: bold;\n      }\n\n      .chatFooter a:hover {\n        text-decoration: underline;\n      }\n      \n      #chatMessagesContainer {\n        flex-grow: 1;\n        overflow-y: scroll; /* 允许聊天记录区域滚动 */\n        max-height: 100%; /* 设置最大高度,确保不会超出聊天窗口 */\n        padding-right: 10px; /* 给聊天气泡留点空间 */\n        scrollbar-width: none;\n      }\n\n      .messageBubbleContainer {\n        display: flex;\n        margin-bottom: 10px;\n        align-items: flex-start;\n        position: relative; /* 为三角形做定位 */\n        width: 100%; /* 确保容器宽度占满整个聊天窗口 */\n      }\n\n      .chatAvatar {\n        border-radius: 50%;\n        background-color: #4CAF50;\n        color: white;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        font-size: 14px; /* 字体大小调整为合适显示 4 个汉字 */\n        font-weight: bold;\n        text-align: center;\n        margin-right: 10px;\n        overflow: hidden;\n        text-overflow: ellipsis; /* 超过的文字会显示省略号 */\n        line-height: 20px; /* 设置合适的行高 */\n        height: 40px;\n        width: 40px;\n      }\n\n      .messageContent {\n        display: flex;\n        flex-direction: column;\n        position: relative;\n        flex-grow: 1;\n        max-width: 80%;\n      }\n\n      .messageTitle {\n        max-width: 80%;\n        font-size: 12px;\n        font-weight: bold;\n        margin-bottom: 5px;\n        color: #333;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n      }\n\n      .messageBody {\n        max-width: 80%;\n        padding: 10px;\n        margin-left: 10px;\n        border-radius: 15px;\n        font-size: 14px;\n        line-height: 1.5;\n        background-color: white;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); /* 阴影效果 */\n        position: relative;\n        word-wrap: break-word; /* 自动换行 */\n        overflow-wrap: break-word; /* 确保长单词也能换行 */\n      }\n      \n      /* 无聊天内容提示 */\n      .noMessages {\n        text-align: center;\n        font-size: 16px;\n        color: #888;\n        margin-top: 50px;\n      }\n\n      /* 发送者气泡 */\n      .senderBubble {\n        align-self: flex-start;\n        margin-left: 10px;\n        background-color: #0084ff;\n        color: white;\n      }\n\n      /* 接收者气泡 */\n      .receiverBubble {\n        align-self: flex-end;\n        margin-right: 10px;\n        background-color: #e5e5ea;\n        color: black;\n      }\n\n      /* 小三角指向发送者头像 */\n      .senderBubble::before {\n        content: '';\n        position: absolute;\n        top: 23%;\n        left: -8px; /* 三角指向气泡的左侧 */\n        width: 0;\n        height: 0;\n        border-left: 8px solid transparent;\n        border-right: 8px solid transparent;\n        border-top: 8px solid #0084ff; /* 发送者气泡的三角形 */\n        transform: translateY(-50%);\n      }\n\n      /* 小三角指向接收者头像 */\n      .receiverBubble::before {\n        content: '';\n        position: absolute;\n        top: 23%;\n        right: -8px; /* 三角指向气泡的右侧 */\n        width: 0;\n        height: 0;\n        border-left: 8px solid transparent;\n        border-right: 8px solid transparent;\n        border-top: 8px solid #e5e5ea; /* 与接收者气泡的背景颜色一致 */\n        transform: translateY(-50%);\n      }\n\n      .timestamp {\n        font-size: 10px;\n        color: #888;\n        margin-top: 5px;\n        text-align: center;\n      }\n\n      /* 发送者标题和时间戳左对齐 */\n      .senderBubble .messageTitle {\n        text-align: left;\n      }\n\n      /* 接收者标题和时间戳右对齐 */\n      .receiverBubble .messageTitle {\n        text-align: right;\n      }\n    ",document.head.appendChild(e)}}t.default=n;const i=["https://tb1.bdstatic.com/??/tb/_/my_current_forum_274c0a1.css,/tb/_/tb_spam_814ec43.css,/tb/_/my_tieba_4a1aa01.css,/tb/_/rich_ueditor_3283067.css,/tb/_/pic_act_poster_38b0720.css,/tb/_/follower_bc7c9ff.css,/tb/_/forum_title_a7a033e.css,/tb/_/novel_icons_8d150ae.css,/tb/_/save_face_fa1020d.css,/tb/_/pb_marry_ecbd581.css,/tb/_/fengchao_pb_feed_c7fdae2.css,/tb/_/promoter_master_house_9b0d01e.css,/tb/_/promoter_fans_supprise_bba005a.css,/tb/_/residual_87ce152.css,/tb/_/single_icons_3112de2.css,/tb/_/pb_author_d843ad0.css,/tb/_/novel_award_dialog_7b95981.css,/tb/_/novel_award_thread_d41d8cd.css,/tb/_/diamond_bind_mob_603bf34.css,/tb/_/grab_treasure_report_1152cd7.css,/tb/_/treasure_payment_dialog_de1650b.css,/tb/_/treasure_rule_dialog_021b23c.css,/tb/_/grab_treasure_ctrl_47136a4.css,/tb/_/pb_grab_treasure_2be04cb.css,/tb/_/scroll_panel_eb74727.css,/tb/_/promoter_post_opts_df5e95d.css,/tb/_/promoter_post_body_5da1d7c.css,/tb/_/post_tpoint_skin_dc0a7bb.css,/tb/_/idisk_3de9e3d.css,/tb/_/paypost_guide_2bcd461.css"]},259:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class n{static loadDataBase(e){const t=indexedDB.open(e);t.onupgradeneeded=e=>{if(null!=e.target){const e=t.result;e.objectStoreNames.contains("users")||e.createObjectStore("users",{keyPath:"name",autoIncrement:!1})}},t.onerror=()=>{null!=t.error&&console.error("Database error: "+t.error.message)}}static addOrUpdateUser(e,t,n){const i=e.transaction("users","readwrite").objectStore("users").put({name:t,tags:n});i.onsuccess=()=>{console.log("User added to the database")},i.onerror=()=>{null!=i.error&&console.error("Error adding user: "+i.error.message)}}static getUser(e,t,n){const i=e.transaction("users","readonly").objectStore("users").get(t);i.onsuccess=()=>{const e=i.result;if(e){console.log("User found:",e);const t=e.tags;n(t)}else n([]),console.log("User not found")},i.onerror=()=>{null!=i.error&&console.error("Error retrieving user: "+i.error.message)}}static deleteUser(e,t){const n=e.transaction("users","readwrite").objectStore("users").delete(t);n.onsuccess=()=>{console.log("User deleted successfully")},n.onerror=()=>{null!=n.error&&console.error("Error deleting user: "+n.error.message)}}static exportDataToJSON(e,t){return new Promise(((n,i)=>{const s=e.transaction(t,"readonly").objectStore(t).getAll();s.onsuccess=()=>{const e=s.result,t=JSON.stringify(e,null,2);e.length>0?n(t):alert("标签数据为空,不需要导出文件")},s.onerror=()=>{null!=s.error&&i("Error exporting data: "+s.error.message)}}))}static exportJson(){const e=indexedDB.open(n.localStorageId);e.onsuccess=()=>{const t=e.result;n.exportDataToJSON(t,"users").then((e=>{console.log("Exported JSON:",e);const t=new Blob([e],{type:"application/json"}),n=document.createElement("a");n.href=URL.createObjectURL(t),n.download="data.json",n.click()})).catch(console.error)}}static importJson(){alert("导入外部文件会覆盖当前标签内容, 点击确定继续导入");const e=`import_json_to_${n.localStorageId}`;let t=document.getElementById(e);null!=t&&t instanceof HTMLInputElement||(t=document.createElement("input")),t instanceof HTMLInputElement&&(t.type="file"),t.style.display="none",t.click(),t.addEventListener("change",(e=>{const t=e.target,i=t.files?t.files[0]:null;i&&n.readJsonFile(i)}))}static readJsonFile(e){const t=new FileReader;t.onload=()=>{const e=t.result;try{const t=JSON.parse(e),i=indexedDB.open(n.localStorageId);i.onsuccess=()=>{const e=i.result;t.forEach((t=>n.addOrUpdateUser(e,t.name,t.tags))),alert("导入成功, 将在下次点击用户ID时生效")}}catch(e){alert("Error parsing JSON file")}},t.onerror=()=>{alert("Error reading file")},t.readAsText(e)}}n.localStorageId="tagManagerZojdsa321e1w4q3456wq",t.default=n},789:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{static getSubscribeTieBa(e){const t=$(e),n=[],i=t.find("div.container > div > div > div.card").get(2);return $(i).find("div.card-body > li.col-center > span").each(((e,t)=>{var i,s,a;const o=$(t).find("a");if(o&&o.length>0){const e=null===(s=null===(i=o.get(0))||void 0===i?void 0:i.textContent)||void 0===s?void 0:s.trim();if(e){const i=/\d+(?=级[((])/,s=null===(a=t.textContent)||void 0===a?void 0:a.match(i);if(s&&s.length>0){const t=s[0],i=parseInt(t,10);isNaN(i)||n.push({name:e,level:i})}}}})),n}static getReplyMessage(e){const t=$(e),n=[],i=t.find("div.container > div > div > div.card"),s=i.get(i.length-3);return $(s).find("div.card-body > li.col-center").each(((e,t)=>{const i=$(t).find("span");if(i.length>=4){const e=i.get(1).textContent.trim(),t=$(i).find("a").get(0).textContent.trim(),s=i.get(2).textContent.trim();n.push({avatar:e,title:"",content:t,timestamp:s})}})),n}}},171:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class n{static removeAD(){$("[id^='mediago']").each(((e,t)=>{t.style.display="none"}))}static loadSubscribeFromSession(e){const t=sessionStorage.getItem(e);return null!=t?(console.log("从当前会话加载贴吧关注信息成功"),JSON.parse(t)):null}static saveNewSubscribeToSession(e,t){if(null!=t&&t.length>0){console.log("缓存贴吧关注信息到当前会话");const i=new Set(t.map((e=>JSON.stringify(e)))),s=n.loadSubscribeFromSession(e);if(null==s){const t=Array.from(i).map((e=>JSON.parse(e)));return sessionStorage.setItem(e,JSON.stringify(t)),!0}const a=new Set(s.map((e=>JSON.stringify(e)))),o=new Set([...a,...i]),r=Array.from(o).map((e=>JSON.parse(e)));return sessionStorage.setItem(e,JSON.stringify(r)),o.size>a.size}return!1}static setDivPositionByMouseClick(e,t){const n=window.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft,i=window.scrollY||document.documentElement.scrollTop||document.body.scrollTop,s=e.clientX+n,a=e.clientY+i,o=t.offsetWidth,r=t.offsetHeight,l=window.innerWidth+n,d=window.innerHeight+i;let c=s,h=a;return c+o>l&&(c=Math.max(10,l-o-10)),h+r>d&&(h=Math.max(10,d-r-10)),{left:c,top:h}}static requestFrom82Tool(e,t,i,s,a,o){const r=`https://www.82cat.com/tieba/${e}/${encodeURIComponent(t)}/${i}`;return n.requestData(r,s,a,o)}static requestFromOuoTool(e,t,i,s,a,o){const r=`http://ouotool.com/tb?un=${encodeURIComponent(t)}`;return n.requestData(r,s,a,o)}static requestData(e,t,n,i){return GM_xmlhttpRequest({method:"GET",url:`${e}`,timeout:5e3,onload:function(e){t(e.responseText)},onerror:e=>{n(),console.error("请求失败:",e)},ontimeout:()=>{i(),console.error("请求超时")}})}}n.BLACK_LIST=new Set(["异色格","鸣潮内鬼","鸣潮","新mihoyo","快乐雪花","二游笑话","有男偷玩"]),n.REPLY="reply",n.FORUM="forum",t.default=n}},t={};!function n(i){var s=t[i];if(void 0!==s)return s.exports;var a=t[i]={exports:{}};return e[i].call(a.exports,a,a.exports,n),a.exports}(448)})();
})();