您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
百度贴吧图片引用 作者:铅笔、修正:huhu
// ==UserScript== // @name Baidu Tieba Quote and Post // @version 2.2.2.0 // @icon http://imgsrc.baidu.com/forum/pic/item/911e12087bf40ad13d03ebde552c11dfa8ecce89.jpeg // @description 百度贴吧图片引用 作者:铅笔、修正:huhu // @include http://tieba.baidu.com/p/* // @include http://tieba.baidu.com.cn/p/* // @include http://tieba.baidu.cn/p/* // @include http://tieba.baidu.com/f* // @include http://tieba.baidu.com.cn/f* // @include http://tieba.baidu.cn/f*/f?* // @copyright 5B4B // @namespace 5B4B // ==/UserScript== function init() { ////// //// 设置 // var font_family = '"微软雅黑"', font_size = '14px', line_height = '16px', font = font_size + ' ' + font_family, colour='';//自定义颜色,默认随机 ////// //// 产生引用内容 // function addQuote(textarea, content, pid) { var canvas = $('<canvas>').attr({ width: 0, height: 0 }).get(0); var ctx, style = [ 'font-family:' + font_family, 'font-weight:normal', 'font-style:normal', 'font-size:' + font_size, 'line-height:' + line_height ].join(';'), metrix = measureText(content, style, 540); content=metrix.content; canvas.width = metrix.width + 10; canvas.height = metrix.height + 10; ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = 1.0; ctx.setFillColor('transparent'); ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = 'black'; ctx.font = font; ctx.textAlign = 'left'; ctx.textBaseline = 'top'; content.trim().split(/[\n\r]/).forEach(function(str, i) { ctx.fillText(str, 5, 5 + 14 * i + 2 * i); }); ctx.lineWidth=3; ctx.strokeStyle = colour||('#'+(Math.random()*0xffffff<<0).toString(16)); ctx.strokeRect(0, 0, canvas.width, canvas.height); var savedURL = LetItGo.get('BTQP-PID-' + pid); if (savedURL) { addQuotePic(savedURL); } else { uploadPic({ pid: pid, blob: dataURLtoBlob(canvas.toDataURL()) }, addQuotePic); } } function addQuotePic(url, pid) { LetItGo.set('BTQP-PID-' + pid, url); $(textarea).find('.BDE_Image[pic_type="9"]:first') .attr('src', url).attr('pic_type', 1).attr('onload', 'EditorUI.resizeImage(this, 560)'); //.removeAttr('pic_type'); textarea.focus(); var html = textarea.innerHTML; document.execCommand('selectAll', false, null); document.execCommand('insertHTML', false, html); } function uploadPic(data, callback) { var blob = data.blob, pid = data.pid; var xhr = new XMLHttpRequest(), size = blob.size; xhr.open('GET', 'http://tieba.baidu.com/dc/common/imgtbs?t=' + new Date().getTime(), true); xhr.onload = function() { var res = JSON.parse(this.responseText); if (res.no !== 0) { failedCallback(); } var tbs = res.data.tbs, formData = new FormData(); xhr.abort(); xhr.open('POST', 'http://upload.tieba.baidu.com/upload/pic?is_wm=1&tbs=' + tbs, true); xhr.withCredentials = true; xhr.onload = function() { var res = JSON.parse(this.responseText); if (res.error_code !== 0) { alert('上传图片失败!'); return; } var pic_url = 'http://imgsrc.baidu.com/forum/pic/item/' + res.info.pic_id_encode + '.jpg'; callback(pic_url, pid); }; formData.append('fid', PageData.forum.id); formData.append('Filename', 'blob.png'); formData.append('file', blob); xhr.send(formData); }; xhr.onerror = function() { alert('上传准备失败!'); }; xhr.send(); } function dataURLtoBlob(dataURL) { var data = atob(dataURL.split(",")[1]), arrayBuffer = new ArrayBuffer(data.length), byteArray = new Uint8Array(arrayBuffer); for (var i = 0, l = data.length; i < l; ++i) { byteArray[i] = data.charCodeAt(i) } return new window.Blob([byteArray], { type: 'image/png' }); } function measureText(content, style, width) { var res = '', text = content, maxwidth = 0; var canvas = $('<canvas>').attr({ width: width, height: 100 }).get(0), ctx; ctx = canvas.getContext('2d'); ctx.font = font; for (var i = 0, l = text.length, line = '', tl, th, thx = 0; i < l; ++i) { tl = line + text[i]; th = thx + ctx.measureText(tl).width; if (th <= width) { thx = th; res += tl } else { thx = ctx.measureText(text[i]).width; res += '\n' + text[i]; line = ''; } if (maxwidth < thx) maxwidth = thx;//console.log(maxwidth,res); } var body = window.document.body, dummy = $('<div>').html(res.replace(/[\n\r]/g, '<br/>')).attr('style', style).get(0), result = {}; dummy.style.zIndex = '-1'; dummy.style.display = 'block'; dummy.style.width = '-webkit-fit-content'; dummy.style.whiteSpace = 'pre'; body.appendChild(dummy); result.width = maxwidth; //dummy.offsetWidth; result.height = dummy.offsetHeight; result.content = res; dummy.remove(); return result; } ////// //// 引用按钮 // function addBtnsEvents() { //$('.l_post').on('mouseover.btqp', '.j_lzl_wrapper', function(e) { $('.p_postlist').delegate('.l_post','mouseover.btqp', '.j_lzl_wrapper', function(e) { var $self = $(e.currentTarget || this); if ($self.find('.btqp_btn_a').length <= 0) { var $partOne = $self.find('.p_tail'); $partOne.append($('<li><span><a class="btqp_btn_a" btqp_n="false">简引</a> <a class="btqp_btn_a">引用</a></span></li>').find('a').css({ cursor: 'pointer' }).on('click.btqp', btnEventA).end()); } if ($self.find('.btqp_btn_b').length <= 0) { var $partTwo = $self.find('.lzl_s_r'); $partTwo.before($('<span><a class="btqp_btn_b" btqp_n="false">简引</a> | <a class="btqp_btn_b">引用</a> | </span>').find('a').css({ color: '#666', cursor: 'pointer' }).on('click.btqp', btnEventB).end()); } }); } function btnEventA(e) { e.stopPropagation(); e.preventDefault(); var $self = $(e.currentTarget || this), $post = $self.closest('.l_post'), toQuote = !$self.attr('btqp_n'), content = $post.find('.d_post_content').html(), info = JSON.parse($post.attr('data-field')), pid = info.content.id, floor = info.content.post_no, user = info.author.user_name, toAuthor = (PageData.thread.author === user), toSelf = (PageData.user.name === user), atUser = ((toAuthor || toSelf) ? '@\u202D' : '@') + user + ' '; modify(floor, atUser, content, pid, toQuote); return false; } function btnEventB(e) { e.stopPropagation(); e.preventDefault(); var $self = $(e.currentTarget || this), content = $self.closest('.lzl_content_reply').prevAll('.lzl_content_main').html(), infoA = $.json.decode($self.closest('.l_post').attr('data-field')), infoB = $.json.decode($self.closest('.lzl_single_post').attr('data-field')), toQuote = !$self.attr('btqp_n'), floor = infoA.content.post_no, pid = infoB.spid, userB = infoB.user_name, toAuthor = (PageData.thread.author === userB), toSelf = (PageData.user.name === userB), atUser = ((toAuthor || toSelf) ? '@\u202D' : '@') + userB + ' '; console.log($self.closest('.l_post').attr('data-field')); modify(floor, atUser, content, pid, toQuote); return false; } function modify(floor, atUser, content, pid, toQuote) { $textarea = $('#tb_rich_poster_container').find('#ueditor_replace'); textarea = $textarea.get(-1); var html = textarea.innerHTML, quote = ''; var reg = new RegExp('^回\\d+楼.+?\\u202D{2}.*?\\u202D{2}|^回\\d+楼(?: | )@\u202D?.+?(?: | )', 'i'); textarea.scrollIntoViewIfNeeded(); textarea.focus(); content = content.replace(/^回(?:<a[^>]+>)?\d+楼(?:<\/a>)?.+?<br>/g, '').replace(/<br.*?>/gi, '').replace(/<img.*?>/gi, '[图片]').replace(/<embed.*?>/gi, '[影音]').replace(/<div class="video_src_wrapper.*?<\/a><\/span><\/div>/gi, '[视频]').replace(/<div class="voice_player.*?<\/div>/gi, '[语音]').replace(/\u202D{2}.*?\u202D{2}/, '').replace(/\u202D/g, '').replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/ /g, ' '); content = flat(content); if (content.length > 250) { content = content.substr(0, 250) + '\n...[省略N字]'; } //content = setWidth(content, 520); if (toQuote) { quote = '<br>\u202D\u202D<img pic_type="9" class="BDE_Image" src="http://imgsrc.baidu.com/forum/pic/item/32645c086e061d958b03f63f7af40ad163d9cad2.png">\u202D\u202D'; } if (html.replace(/<br>| | |\s/g, '') !== '') { if (reg.test(html)) { html = html.replace(reg, '回' + floor + '楼 ' + atUser + quote); } else { html = '回' + floor + '楼 ' + atUser + quote + '<br><br>' + html; } } else { html = '回' + floor + '楼 ' + atUser + quote + '<br><br> '; } document.execCommand('selectAll', false, null); document.execCommand('insertHTML', false, html); if (toQuote) { addQuote(textarea, content, pid); } } function flat(content) { content = content.replace(/<.+?>(.*?)<\/.+?>/gi, '$1'); if (/<.+?>.*?<\/.+?>/.test(content)) { return flat(content); } return content.trim(); } function byteLength(c) { return /[\x00-\xFF]/.test(c) ? 0.5 : 1; } ////// //// 初始化 // var LetItGo = { set: function(key, val) { sessionStorage.setItem(key, JSON.stringify(val)); }, get: function(key, def) { return JSON.parse(sessionStorage.getItem(key)) || def; } }; var $textarea, textarea; $(function() { //$textarea = $('#editor').find('.tb-editor-editarea'); //textarea = $textarea.get(-1); addBtnsEvents(); }); ////// //// 生成节点监听 // } ////// //// Initialization // var script = document.createElement('script'); script.id = '__5B4B_BTQP__'; script.charset = 'utf-8'; script.type = 'text/javascript'; script.innerHTML = 'try{(' + init.toString() + ')()}catch(e){console.log(e)}'; document.body.appendChild(script);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址