Greasy Fork

Greasy Fork is available in English.

Bonnae News With Text

for Bonnae broadcast on douban.com

当前为 2018-04-19 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Bonnae News With Text
// @namespace    https://github.com/harryhare/Bonnae-News
// @version      0.5.1
// @description  for Bonnae broadcast on douban.com
// @author       harryhare
// @license      GPL 3.0
// @match        https://www.douban.com/**
// @include      https://www.douban.com/**
// @grant        GM_xmlhttpRequest
// @connect      upaste.me
// @connect      slexy.org
// @connect      paste2.org
// ==/UserScript==

/*
	http://upaste.me/xxxxx
	https://slexy.org/view/xxxxx
	https://paste2.org/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/';
const default_prefix='upaste.me';
const max_code_length=100;
var url_node=new Map();
var url_getContent=new Map();
url_getContent['upaste.me']=getContent1;
url_getContent['slexy.org']=getContent2;
url_getContent['paste2.org']=getContent3;

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 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]+)\//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;
    }
    var node=url_node[response.finalUrl];
    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[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() {
    'use strict';
    var targets=document.querySelectorAll('.new-status .status-item[data-uid="1540691"] .mod .bd .status-saying blockquote p');

	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*\(([a-z0-9]+.[a-z]+)\)/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){
            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.attachId=href;
            b.onclick=onClick;
            var text=document.createElement('blockquote');
            n0.appendChild(text);
            url_node[href]=text;
            text.id=href;
            GM_xmlhttpRequest({
                method: "GET",
                url: href,
                onload: attachContent,
            });
        }
	}
})();