您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
for Bonnae broadcast on douban.com
// ==UserScript== // @illustration Bonnae News With Text doesn't update for almost 1 year, now it doesn't working well // @developer sinf // @based Bonnae News With Text 0.7.0 // @changeContent change default_prefix from 'upaste.me' to 'slexy.org' // @name Bonnae News With Text ExtraVersion // @namespace https://github.com/harryhare/Bonnae-News // @version 1.0.0 // @description for Bonnae broadcast on douban.com // @author harryhare, sinf // @license GPL 3.0 // @icon https://raw.githubusercontent.com/harryhare/Bonnae-News/master/index.png // @match https://www.douban.com/** // @include https://www.douban.com/** // @match https://m.douban.com/** // @include https://m.douban.com/** // @grant GM_xmlhttpRequest // @connect upaste.me // @connect slexy.org // @connect paste2.org // @connect paste.ee // ==/UserScript== /* http://upaste.me/xxxxx https://slexy.org/view/xxxxx https://paste2.org/xxxxx https://paste.ee/p/xxxxx */ var url_prefix=new Map(); url_prefix['upaste.me']='http://upaste.me/'; url_prefix['slexy.org']='https://slexy.org/view/'; url_prefix['paste2.org']='https://paste2.org/'; url_prefix['paste.ee']='https://paste.ee/p/'; const default_prefix='slexy.org'; const max_code_length=100; var url_getContent=new Map(); url_getContent['upaste.me']=getContent1; url_getContent['slexy.org']=getContent2; url_getContent['paste2.org']=getContent3; url_getContent['paste.ee']=getContent4; var url_node=new Map(); var url_node_multi=new Map(); function getContent1(doc){ return doc.getElementsByTagName('textarea')[0].innerHTML; } function getContent2(doc){ return doc.getElementsByClassName('text')[0].innerHTML; } function getContent3(doc){ return doc.getElementsByClassName('highlight code')[0].innerHTML; } function getContent4(doc){ return doc.getElementsByClassName('editor')[0].innerHTML; } function getContent(response){ var parser=new window.DOMParser(); var x=response.response; var xmlDoc=parser.parseFromString(x,"text/html"); var url=response.finalUrl; var text=''; var reg=/https?:\/\/([a-zA-Z0-9]+\.[a-z]+)(\/p\/)?/g; var result=reg.exec(url); if(result && result.length>1 && result[1] && url_getContent[result[1]]){ return url_getContent[result[1]](xmlDoc); } return ""; } function attachContent(response){ if(response.status!=200){ return; } if(!url_node[response.finalUrl]){ return; } for(var i=0;i<url_node[response.finalUrl].length;i++){ var node=url_node[response.finalUrl][i] if(!node){ return; } var text=getContent(response); if(!text){ return; } node.innerHTML=text; node.style='height:52px; overflow: hidden;'; } } function onClick(e){ //console.log(e.target.attachId); var n3=url_node_multi[e.target.attachId]; if(e.target.innerHTML=='收起'){ e.target.innerHTML='展开'; n3.style='height:52px; overflow: hidden;'; }else{ e.target.innerHTML='收起'; n3.style=''; } e.stopPropagation(); } function get_targets(){ if (window.location.href.startsWith("https://www.douban.com")){ return get_targets_for_www(); } if (window.location.href.startsWith("https://m.douban.com")){ return get_targets_for_m(); } } function get_targets_for_www(){ return document.querySelectorAll('.new-status .status-item[data-uid="1540691"] .mod .bd .status-saying blockquote p'); } function get_targets_for_m(){ var targets=[]; var ss=document.querySelectorAll('ul.status-list li div.desc a[href="/people/1540691/"]'); for(let i=0;i<ss.length;i++){ var t=ss[i].parentElement.parentElement.querySelector("div.content div"); if (t!=null){ targets.push(t); } } return targets; } function attach_result(t,href){ if (window.location.href.startsWith("https://www.douban.com")){ return attach_result_for_www(t,href); } if (window.location.href.startsWith("https://m.douban.com")){ return attach_result_for_m(t,href); } } function attach_result_for_www(t,href){ t=t.parentElement; var n0=document.createElement('div'); var n1=document.createElement('blockquote'); var a=document.createElement('a'); var b=document.createElement('button'); t.parentElement.appendChild(n0); n0.appendChild(n1); n1.appendChild(a); n1.appendChild(b); a.textContent=href; a.setAttribute('href',href); b.innerHTML='展开'; b.onclick=onClick; var text=document.createElement('blockquote'); n0.appendChild(text); if(url_node[href]){ url_node[href].push(text); }else{ url_node[href]=[text]; } b.attachId=href+url_node[href].length; url_node_multi[b.attachId]=text; text.id=href; GM_xmlhttpRequest({ method: "GET", url: href, onload: attachContent, }); } function attach_result_for_m(t,href){ var n0=document.createElement('div'); var a=document.createElement('a'); var b=document.createElement('button'); n0.appendChild(a); n0.appendChild(b); a.textContent=href; a.setAttribute('href',href); b.innerHTML='展开'; b.onclick=onClick; var text=document.createElement('div'); n0.appendChild(text); if(url_node[href]){ url_node[href].push(text); }else{ url_node[href]=[text]; } b.attachId=href+url_node[href].length; url_node_multi[b.attachId]=text; text.id=href; GM_xmlhttpRequest({ method: "GET", url: href, onload: attachContent, }); t.parentElement.parentElement.parentElement.appendChild(n0); } function edit_page() { 'use strict'; var targets=get_targets(); for(let i=0;i<targets.length;i++){ var t=targets[i]; var content=t.textContent; if(content.length>max_code_length){ continue; } var reg=/([a-zA-Z0-9]{4,})\s*\(\s*([a-z0-9]+.[a-z]+)(\/[a-zA-Z0-9]+\/)?\s*\)/g; var reg2=/([a-zA-Z0-9]{10,})/g; var result=reg.exec(content); var href=''; var find=false; if(result && result.length>2 && result[2]){ href=url_prefix[result[2]]+result[1]; find=true; } if(!find){ result=reg2.exec(content); if(result && result.length>1){ href=url_prefix[default_prefix]+result[1]; find=true; } } if(find){ attach_result(t,href); } } } (function(){ if (window.location.href.startsWith("https://www.douban.com")){ edit_page(); } if (window.location.href.startsWith("https://m.douban.com")){ setTimeout(edit_page,2000); } })();