本WIKI由spt赛小息6于2020年05月27日担任站长并维护更新,编辑权限开放,如遇Chrome浏览器登陆后无法编辑点这里    BWIKI反馈留言板
目前WIKI是开放编辑权限,任何人都可以在遵守《BWIKI社区规则》和《赛尔号星球大战WIKI社区规则》的前提下进行内容制作,违规者将会被封禁。

全站通知:

Widget:TemplateToExcel

来自赛尔号星球大战WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

<textarea id="TTEpage" style="width:100%;height:300px"></textarea> <button id="TTEsubmit" style="padding:0.5em 1em">确认</button> <textarea id="TTEexcel" style="width:100%;height:300px" readonly></textarea> <script> TTEMeta={ "page":[], "state":"ready", "data":[], "table":[], } TTEFun={ "initialize":function(){ TTEMeta.wiki=mw.config.values.wgScriptPath document.getElementById("TTEpage").oninput=function(){ TTEMeta.page=this.value.split("\n") } document.getElementById("TTEsubmit").onclick=function(){ if(TTEMeta.state=="ready"){ TTEMeta.state=TTEMeta.page.length document.getElementById("TTEpage").readOnly=true TTEFun.sendPage() } } }, "sendPage":function(){ document.getElementById("TTEexcel").value="生成中…("+(TTEMeta.state-TTEMeta.page.length)+"/"+TTEMeta.state+")" let page=TTEMeta.page.shift() if(page){ let url="https://wiki.biligame.com"+TTEMeta.wiki+"/api.php?action=parse&format=json&prop=wikitext" url+="&page="+page getApi(url,function(json){ let wikitext=JSON.parse(json).parse.wikitext["*"] TTEMeta.data.push(wikitext) TTEFun.sendPage() }) } else{ TTEMeta.page=document.getElementById("TTEpage").value.split("\n") TTEMeta.table.push([]) let head=TTEMeta.data[0] TTEMeta.table[0].push(head.match(/\{\{(.*)\n/)[1]) let key=[...head.matchAll(/\|(.*)=/g)] key.forEach(function(e){TTEMeta.table[0].push(e[1])}) for(let i=0,ilen=TTEMeta.data.length;i<ilen;i++){ let row=[] row.push(TTEMeta.page[i]) let value=[...TTEMeta.data[i].matchAll(/\=(.*)/g)] value.forEach(function(e,i){row.push(e[1])}) TTEMeta.table.push(row) } let result="" for(let i=0,ilen=TTEMeta.table.length;i<ilen;i++){ for(let j=0,jlen=TTEMeta.table[i].length;j<jlen;j++){ result+=TTEMeta.table[i][j]+"\t" } result+="\n" } document.getElementById("TTEexcel").value=result document.getElementById("TTEexcel").readOnly=false } }, } function getApi(url,callback=false,callbackE=false){ let ajax=new XMLHttpRequest() if(!callback){ ajax.open("GET",url,false) ajax.send() let json=JSON.parse(ajax.responseText) return json } ajax.open("GET",url) ajax.send() ajax.onreadystatechange=function(){ if(ajax.readyState==4){ if(ajax.status==200){ callback(ajax.responseText) } else if(ajax.status==404&&callbackE){ callbackE(true) } } } } window.addEventListener("load",function(){ TTEFun.initialize() }) </script> <style> textarea[readonly] { color:lightgray; } </style>