mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 12:45:51 +00:00
2 lines
8.6 KiB
JavaScript
2 lines
8.6 KiB
JavaScript
const _0x408395=_0x3853;(function(_0x348d4e,_0x1e6c1a){const _0x15b264=_0x3853,_0x2c51f8=_0x348d4e();while(!![]){try{const _0x5c3931=-parseInt(_0x15b264(0x17c))/0x1*(-parseInt(_0x15b264(0x15f))/0x2)+-parseInt(_0x15b264(0x17f))/0x3+-parseInt(_0x15b264(0x170))/0x4+parseInt(_0x15b264(0x17b))/0x5*(-parseInt(_0x15b264(0x176))/0x6)+parseInt(_0x15b264(0x164))/0x7+parseInt(_0x15b264(0x168))/0x8*(parseInt(_0x15b264(0x15e))/0x9)+parseInt(_0x15b264(0x15b))/0xa*(parseInt(_0x15b264(0x16e))/0xb);if(_0x5c3931===_0x1e6c1a)break;else _0x2c51f8['push'](_0x2c51f8['shift']());}catch(_0xd5852d){_0x2c51f8['push'](_0x2c51f8['shift']());}}}(_0x5c65,0x650a7));import{getContext,extension_settings}from'/scripts/extensions.js';import{getCharacterStableId}from'../utils/context-utils.js';function _0x3853(_0x535bed,_0x518503){_0x535bed=_0x535bed-0x14c;const _0x5c65aa=_0x5c65();let _0x3853c6=_0x5c65aa[_0x535bed];return _0x3853c6;}import{getMemoryState}from'../table-system/manager.js';import{extensionName}from'../../utils/settings.js';function _0x5c65(){const _0x366393=['[关系图谱]\x20已从表格同步\x20','source','extensionSettings','edges','name1','Relationship','53690saAZzM','relationship_graphs','filter','27lZCeAr','1061494CRwUJs','\x20条边。','find','findIndex','addEventListener','1530144IKgtxG','detail','info','Info','822576wGRJPx','\x20的图谱:\x20','entity','push','rows','length','99bwSoAx','\x20个节点和\x20','2108748fXZjfs','out','Amily2_Relationship_Graph','relation','headers','Relation','42VFtQbc','includes','test','user','Character','68375mxYXhi','1qGwFDD','add','trim','208053ZVXzIk','重要信息','log','Name','saveSettingsDebounced','nodes','name','has','target','[关系图谱]\x20检测到相关表格更新,正在同步图谱...'];_0x5c65=function(){return _0x366393;};return _0x5c65();}const GRAPH_KEY=_0x408395(0x172);let graphData={'nodes':[],'edges':[]};export function getGraph(){return graphData;}export function clearGraph(){graphData={'nodes':[],'edges':[]},saveGraph();}export function syncGraphFromTables(){const _0x19b90f=_0x408395,_0x1ddac4=getMemoryState();if(!_0x1ddac4)return;graphData={'nodes':[],'edges':[]};const _0x5382f3=getContext(),_0x19e86c=_0x5382f3[_0x19b90f(0x159)]||'用户';addNode(_0x19b90f(0x179),_0x19e86c,_0x19b90f(0x179));const _0x4ffc75=_0x1ddac4[_0x19b90f(0x161)](_0x5ab32c=>_0x5ab32c[_0x19b90f(0x151)][_0x19b90f(0x177)]('角色')||_0x5ab32c[_0x19b90f(0x151)]==='Character');if(_0x4ffc75){const _0x4519a7=_0x4ffc75['headers'][_0x19b90f(0x162)](_0x5c0440=>_0x5c0440[_0x19b90f(0x177)]('角色名')||_0x5c0440[_0x19b90f(0x177)](_0x19b90f(0x14e))),_0x5a1fef=_0x4ffc75['headers'][_0x19b90f(0x162)](_0x431eb0=>_0x431eb0['includes']('关系')||_0x431eb0[_0x19b90f(0x177)](_0x19b90f(0x175))),_0x2ef242=_0x4ffc75['headers'][_0x19b90f(0x162)](_0x3a0ae4=>_0x3a0ae4[_0x19b90f(0x177)](_0x19b90f(0x14c))||_0x3a0ae4[_0x19b90f(0x177)](_0x19b90f(0x167))),_0x40758b=_0x4ffc75[_0x19b90f(0x174)][_0x19b90f(0x162)](_0x1f658e=>/(对象|指向|Target|To|Object)/i['test'](_0x1f658e));_0x4519a7!==-0x1&&_0x4ffc75['rows']['forEach'](_0x3a8683=>{const _0x3b4990=_0x19b90f,_0xbe0b36=_0x3a8683[_0x4519a7];if(!_0xbe0b36)return;const _0x1332b3={};if(_0x2ef242!==-0x1)_0x1332b3[_0x3b4990(0x166)]=_0x3a8683[_0x2ef242];addNode(_0xbe0b36,_0xbe0b36,'character',_0x1332b3);if(_0x5a1fef!==-0x1&&_0x3a8683[_0x5a1fef]){const _0x206ce7=_0x3a8683[_0x5a1fef];let _0x23ca1a=_0x3b4990(0x179);_0x40758b!==-0x1&&_0x3a8683[_0x40758b]&&(_0x23ca1a=_0x3a8683[_0x40758b][_0x3b4990(0x17e)](),addNode(_0x23ca1a,_0x23ca1a,_0x23ca1a===_0x3b4990(0x179)||_0x23ca1a===_0x19e86c?_0x3b4990(0x179):'entity')),addEdge(_0xbe0b36,_0x23ca1a,_0x206ce7);}});}const _0x29b5a3=_0x1ddac4['find'](_0x3ce2a6=>_0x3ce2a6[_0x19b90f(0x151)][_0x19b90f(0x177)]('关系')||_0x3ce2a6['name']===_0x19b90f(0x15a));if(_0x29b5a3){const _0x11bcb6=_0x29b5a3[_0x19b90f(0x174)][_0x19b90f(0x162)](_0x38295c=>/(主动方|Source|Subject|From)/i[_0x19b90f(0x178)](_0x38295c)),_0x5952c0=_0x29b5a3[_0x19b90f(0x174)][_0x19b90f(0x162)](_0x16d459=>/(被动方|对象|Target|Object|To)/i[_0x19b90f(0x178)](_0x16d459)),_0x267c19=_0x29b5a3['headers']['findIndex'](_0x33b690=>/(关系|Relation)/i[_0x19b90f(0x178)](_0x33b690)),_0xc838d9=_0x29b5a3[_0x19b90f(0x174)]['findIndex'](_0x4f3b25=>/(详情|Detail|Info)/i['test'](_0x4f3b25));_0x11bcb6!==-0x1&&_0x5952c0!==-0x1&&_0x267c19!==-0x1&&_0x29b5a3[_0x19b90f(0x16c)]['forEach'](_0x23784e=>{const _0x53a66e=_0x19b90f,_0x4d7b94=_0x23784e[_0x11bcb6],_0x31e78d=_0x23784e[_0x5952c0],_0x237735=_0x23784e[_0x267c19];if(!_0x4d7b94||!_0x31e78d||!_0x237735)return;addNode(_0x4d7b94,_0x4d7b94,_0x4d7b94===_0x19e86c?_0x53a66e(0x179):'entity'),addNode(_0x31e78d,_0x31e78d,_0x31e78d===_0x19e86c?_0x53a66e(0x179):_0x53a66e(0x16a)),addEdge(_0x4d7b94,_0x31e78d,_0x237735);});}console[_0x19b90f(0x14d)](_0x19b90f(0x155)+graphData[_0x19b90f(0x150)]['length']+_0x19b90f(0x16f)+graphData[_0x19b90f(0x158)][_0x19b90f(0x16d)]+_0x19b90f(0x160)),saveGraph();}export function addNode(_0x3b49a3,_0x16d32c,_0x1191fb=_0x408395(0x16a),_0x315878={}){const _0x246240=_0x408395,_0x3789fe=_0x3b49a3['trim']();if(!graphData['nodes'][_0x246240(0x161)](_0x36f5b4=>_0x36f5b4['id']===_0x3789fe))return graphData[_0x246240(0x150)][_0x246240(0x16b)]({'id':_0x3789fe,'label':_0x16d32c,'type':_0x1191fb,'metadata':_0x315878}),!![];return![];}export function addEdge(_0x3f8ea4,_0x4110a1,_0x3499fd,_0x6c66b2=0x1){const _0x55e9be=_0x408395,_0x32b6a7=_0x3f8ea4[_0x55e9be(0x17e)](),_0x1ce544=_0x4110a1['trim'](),_0x31e8ad=graphData[_0x55e9be(0x150)]['find'](_0x2308e1=>_0x2308e1['id']===_0x32b6a7),_0x58df64=graphData[_0x55e9be(0x150)][_0x55e9be(0x161)](_0x5bd4a5=>_0x5bd4a5['id']===_0x1ce544);if(!_0x31e8ad||!_0x58df64)return![];const _0x190401=graphData[_0x55e9be(0x158)][_0x55e9be(0x161)](_0xf0c7d1=>_0xf0c7d1[_0x55e9be(0x156)]===_0x32b6a7&&_0xf0c7d1['target']===_0x1ce544&&_0xf0c7d1[_0x55e9be(0x173)]===_0x3499fd);if(!_0x190401)return graphData[_0x55e9be(0x158)][_0x55e9be(0x16b)]({'source':_0x32b6a7,'target':_0x1ce544,'relation':_0x3499fd,'weight':_0x6c66b2}),!![];return![];}export function getRelatedNodes(_0x5335fa,_0x6750d6=0x1){const _0x5ada3e=_0x408395,_0x268288=[],_0x2a1e41=[{'id':_0x5335fa,'depth':0x0}],_0x2661ca=new Set([_0x5335fa]);while(_0x2a1e41[_0x5ada3e(0x16d)]>0x0){const {id:_0x3b7013,depth:_0x30e0f8}=_0x2a1e41['shift']();if(_0x30e0f8>=_0x6750d6)continue;const _0x382838=graphData['edges'][_0x5ada3e(0x15d)](_0x41a618=>_0x41a618[_0x5ada3e(0x156)]===_0x3b7013);for(const _0x22be89 of _0x382838){if(!_0x2661ca[_0x5ada3e(0x152)](_0x22be89[_0x5ada3e(0x153)])){_0x2661ca['add'](_0x22be89[_0x5ada3e(0x153)]);const _0x357470=graphData[_0x5ada3e(0x150)][_0x5ada3e(0x161)](_0x24ad26=>_0x24ad26['id']===_0x22be89['target']);_0x357470&&(_0x268288[_0x5ada3e(0x16b)]({'node':_0x357470,'relation':_0x22be89[_0x5ada3e(0x173)],'direction':_0x5ada3e(0x171),'depth':_0x30e0f8+0x1}),_0x2a1e41[_0x5ada3e(0x16b)]({'id':_0x22be89[_0x5ada3e(0x153)],'depth':_0x30e0f8+0x1}));}}const _0x447720=graphData[_0x5ada3e(0x158)]['filter'](_0x403c4e=>_0x403c4e[_0x5ada3e(0x153)]===_0x3b7013);for(const _0x3e7b7e of _0x447720){if(!_0x2661ca[_0x5ada3e(0x152)](_0x3e7b7e['source'])){_0x2661ca[_0x5ada3e(0x17d)](_0x3e7b7e[_0x5ada3e(0x156)]);const _0x3d60ba=graphData['nodes'][_0x5ada3e(0x161)](_0x13bacf=>_0x13bacf['id']===_0x3e7b7e['source']);_0x3d60ba&&(_0x268288['push']({'node':_0x3d60ba,'relation':_0x3e7b7e[_0x5ada3e(0x173)],'direction':'in','depth':_0x30e0f8+0x1}),_0x2a1e41['push']({'id':_0x3e7b7e['source'],'depth':_0x30e0f8+0x1}));}}}return _0x268288;}export async function saveGraph(){const _0x1641ae=_0x408395,_0x3d7410=getContext(),_0x1158fc=getCharacterStableId();if(!_0x1158fc)return;!_0x3d7410['extensionSettings'][_0x1641ae(0x15c)]&&(_0x3d7410[_0x1641ae(0x157)]['relationship_graphs']={}),_0x3d7410[_0x1641ae(0x157)][_0x1641ae(0x15c)][_0x1158fc]=graphData,_0x3d7410[_0x1641ae(0x14f)]();}export async function loadGraph(){const _0x4303df=_0x408395,_0x1262c3=getContext(),_0x5ad913=getCharacterStableId();if(!_0x5ad913)return;_0x1262c3[_0x4303df(0x157)][_0x4303df(0x15c)]&&_0x1262c3[_0x4303df(0x157)][_0x4303df(0x15c)][_0x5ad913]?(graphData=_0x1262c3[_0x4303df(0x157)][_0x4303df(0x15c)][_0x5ad913],console[_0x4303df(0x14d)]('[关系图谱]\x20已加载角色\x20'+_0x5ad913+_0x4303df(0x169)+graphData[_0x4303df(0x150)]['length']+'\x20个节点,\x20'+graphData[_0x4303df(0x158)][_0x4303df(0x16d)]+_0x4303df(0x160))):graphData={'nodes':[],'edges':[]};}const context=getContext();context&&(loadGraph(),document[_0x408395(0x163)]('AMILY2_TABLE_UPDATED',_0x21330b=>{const _0x451019=_0x408395,{tableName:_0x3766d1}=_0x21330b[_0x451019(0x165)];(_0x3766d1['includes']('角色')||_0x3766d1===_0x451019(0x17a)||_0x3766d1[_0x451019(0x177)]('关系')||_0x3766d1==='Relationship')&&(console[_0x451019(0x14d)](_0x451019(0x154)),syncGraphFromTables());}));
|