您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
tba_style
当前为
// ==UserScript== // @name tb_borer // @namespace http://wp.stf.iaceob.name // @description tba_style // @include http://tieba.baidu.com/* // @version 1.3 alpha // @grant none // @author 生物烯丙菊 // ==/UserScript== /* 00000000 00010000 00020000 00000001 00010001 00020001 00000002 00010002 00020002 http://tieba.baidu.com/f/commit/commonapi/checkVcode captcha_code_type captcha_input_str captcha_vcode_str fid */ String.prototype.format = function () { var txt = this.toString(); for (var i = 0; i < arguments.length; i++) { var exp = getStringFormatPlaceHolderRegEx(i); txt = txt.replace(exp, (arguments[i] == null ? "" : arguments[i])); } return cleanStringFormatResult(txt); } function getStringFormatPlaceHolderRegEx(placeHolderIndex) { return new RegExp('({)?\\{' + placeHolderIndex + '\\}(?!})', 'gm'); } function cleanStringFormatResult(txt) { if (txt == null) return ""; return txt.replace(getStringFormatPlaceHolderRegEx("\\d+"), ""); } Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){ return false; } for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=this[i] } } this.length-=1 return true; } !(function(window, $, undefined){ var topic = $('#thread_topic'); var h_posts = $('#thread_list li.j_thread_list'); var h_paging = $('#frs_list_pager'); var me = $('#balv_mod'); var html = ''; var document = window.document; var pd = window.PageData; var tpl = {}; var config = { posts: { handle_url: '', forum_id: 0, forum_name: 0, tbs: '' }, post: { page_url: '', handle_url: 'http://tieba.baidu.com/f/commit/post/add', forum_id: 0, thread_id: 0, forum_name: '', tbs: '', floor_num: 1 }, captcha: { url4: 'http://tieba.baidu.com/cgi-bin/genimg', url4_get: 'http://tieba.baidu.com/f/commit/commonapi/getVcode', url_check: 'http://tieba.baidu.com/f/commit/commonapi/checkVcode', type: 0, code: '', input: '', value: [] } }; window.cfg = config; tpl.html_header = '<header id="header" class="loop-12"></header>'; tpl.html_container = '<div class="span container">{0}</div>'; tpl.html_footer = '<footer id="footer" class="loop-12">Footer</footer><div class="ow-overlay ow-closed"></div><div class="tba-modal ow-closed">Hello, human!</div>'; tpl.html_box_posts = '<div class="loop-4 box_posts" id="box_posts"></div>'; tpl.html_box_post = '<div class="loop-8 post_container" id="post_container"></div>'; tpl.css = 'http://idc.iaceob.name/tba_style/tba_v1.2_alpha.css'; tpl.js_omniwindow = 'http://idc.iaceob.name/tba_style/jquery.omniwindow.js'; if (location.href === 'http://tieba.baidu.com/') { return; } if (!pd) { return; } function initBorer() { if (!!pd.forum.id) { setPostsConfig($('body').text()); var postsPage = parsePosts($('body')); initPage(); initPosts(postsPage); return; } if (!!pd.forum.forum_id) { $.ajax({ url: 'http://tieba.baidu.com/' + pd.forum.forum_name, dataType: 'html' }).done(function(data){ config.post.page_url = window.location.href; setPostConfig($('body').text()); var postPage = parsePost($('body')); initPage(); initPosts(parsePosts($(data))); initPost(postPage); }); return; } }; function initPage() { var fhtml = parseFooter(); html = tpl.html_header; html += tpl.html_container.format(tpl.html_box_posts+tpl.html_box_post); html += tpl.html_footer; $('body').empty(); $('body').html(html); // $('#head').html(html); initHeader(); initFooter(fhtml); initImport(); bindEvent(); }; function initPosts(body) { $('.posts_paging a').unbind('click'); $('#post_container').empty(); $('#box_posts').html(body); $('#box_posts').scrollTop(0); monitorHPage(); }; function initPost(body) { $('.post-page a').unbind('click'); $('#post_container').html(body); $('#post_container').scrollTop(0); mointorPPage(); }; function initHeader() { var hhtml = '<div class="loop-2 tiebalogo"><img src="http://tb2.bdstatic.com/tb/static-common/img/search_logo_7098cbef.png"></div>'; hhtml += '<div class="loop-8">\ <div class="select_box">\ <input type="text" name="query" id="query" class="keyipt">\ <div id="search_list" style="display: none"></div>\ </div>\ </div>'; $('#header').html(hhtml); }; function initFooter(fhtml) { $('#footer').html(fhtml); }; function initImport(){ $('head').append('<link rel="stylesheet" href="' + tpl.css + '">'); $('head').append('<script src="' + tpl.js_omniwindow + '"></script>'); }; function monitorHPage() { $('.posts_paging a').bind('click', function(){ $.ajax({ url:this.href, dataType: 'html' }).done(function(data){ setPostsConfig($(data).text()); initPosts(parsePosts($(data))); }); return false; }); $('.posts_list li').bind('click', function(){ handleGetPost($(this).data('href')); }); }; function mointorPPage() { $('.post-page a').bind('click', function(){ handleGetPost(this.href); return false; }); $('#btn_post').bind('click', function(){ var post_content = $('#post_editor').val(); $.ajax({ url: config.post.handle_url, type: 'post', data: { kw: config.post.forum_name, ie: 'utf-8', rich_text: 1, floor_num: config.post.floor_num, fid: config.post.forum_id, tid: config.post.thread_id, content: post_content, anonymous: 0, tbs: config.post.tbs, vcode_md5: config.captcha.code, vcode: config.captcha.input }, dataType: 'json' }).done(function(data){ parseDoPost(data); }); }); }; function mointorSearch(){ $.ajax({ url: 'http://tieba.baidu.com/suggestion', data: $('#query').serialize(), dataType: 'json', }).done(function(data){ $('#search_list').html(parseSearch(data)); }); }; window.handleSearchResult = function(forum){ $.ajax({ url:'http://tieba.baidu.com/' + forum, dataType: 'html' }).done(function(data){ setPostsConfig($(data).text()); initPosts(parsePosts($(data))); }); }; function handleGetPost(postUrl) { config.post.page_url = postUrl; $.ajax({ url: postUrl, dataType: 'html' }).done(function(data){ initPost(parsePost($(data))); setPostConfig($(data).text()); }); }; function setPostsConfig(text) { window.t=text; var fid = text.match(/PageData.forum([ ]*)=([ ]*){(.*?)"forum_id":(\d+)/); var fe = text.match(/PageData.forum([ ]*)=([ ]*){(.*?)"forum_name":"(.*?)"/); config.posts.forum_id = !fid ? 0 : fid[4]; config.posts.forum_name = !fe ? '' : decodeUnicode(fe[4]); }; function setPostConfig(text){ var tbs1 = text.match(/PageData([ ]*)=([ ]*){(.*?)'tbs'(.*?):(.*?)"(.*?)"/); var tbs2 = text.match(/PageData([ ]*)=([ ]*){(.*?)tbs(.*?):(.*?)'(.*?)'/); var fid = text.match(/PageData.forum([ ]*)=([ ]*){(.*?)"forum_id":(\d+)/); var fe = text.match(/PageData.forum([ ]*)=([ ]*){(.*?)"forum_name":"(.*?)"/); var tid = text.match(/PageData.thread([ ]*)=([ ]*){(.*?)thread_id(.*?):(\d+)/); config.post.tbs = !tbs1 ? tbs2[6] : tbs1[6]; config.post.forum_id = !fid ? 0 : fid[4]; config.post.forum_name = !fe ? '' : decodeUnicode(fe[4]); config.post.thread_id = !tid ? 0 : tid[5]; }; function bindEvent() { $('#query').bind('keyup', function(event){ $('#search_list').show(); if (event.keyCode != 13) { mointorSearch(); return; } event.cancelBubble = true; event.returnValue = false; window.handleSearchResult($(this).val()); }); $('#query').bind('click', function(){ $('#search_list').show(); mointorSearch(); }); $('#search_list').hover(function(){ $(this).show(); }, function(){ $(this).hide(); }); }; function parseFooter() { var tf = $('#footer').html(); var fhtml = '<div class="loop-12">' + tf + '</div>'; return fhtml; }; function parseSearch(data) { var qms = data.query_match.search_data; if (qms.length==0) { return '<p>无数据'; } var qhtml = '<ul>'; for(var i=0; i<qms.length; i++) { qhtml += '<li onclick="handleSearchResult("' + qms[i].fname + '")">\ <div class="sh_forum_name">' + qms[i].fname + '</div>\ <div class="sh_forum_desc">' + qms[i].forum_desc + '</div>'; } qhtml += '</ul>'; return qhtml; }; function parsePosts(postsDom) { var h_posts = postsDom.find('li.j_thread_list'); var h_paging = postsDom.find('#frs_list_pager'); var h_cur_page = postsDom.find('#frs_list_pager .cur'); var h_cur_url = !h_cur_page.length ? '#?' + window.Math.random() : '/f?kw=' + config.posts.forum_name + '&pn=' + (h_cur_page.text()*50-50); var ho_pobj = {}, posts_html=''; posts_html='<div class="span"><div class="loop-12 posts_list"><ul>'; for(var i=0; i<h_posts.length; i++) { var hp = h_posts[i]; var hp_rep_num = $(hp).find('.threadlist_rep_num')[0].textContent; var hp_title = $(hp).find('.j_th_tit')[1].textContent; var hp_href = $(hp).find('.j_th_tit')[1].href; var hp_detail = !$(hp).find('.threadlist_text')[1] ? '' : $(hp).find('.threadlist_text')[1].textContent; var hp_author = !$(hp).find('.j_user_card')[0] ? '' : $(hp).find('.j_user_card')[0].textContent; var hp_last_repuser = !$(hp).find('.j_user_card')[1] ? '' : $(hp).find('.j_user_card')[1].textContent; var hp_last_time = !$(hp).find('.j_reply_data')[0] ? '' : $(hp).find('.j_reply_data')[0].textContent; posts_html += '<li data-href="' + hp_href + '">\ <div class="span">\ <div class="loop-10 post_title hidefont" title="' + hp_title + '">' + hp_title + '</div>\ <div class="loop-2 post_author hidefont" title="' + hp_author + '">' + hp_author + '</div>\ <div class="loop-12 box_posts_detail">' + hp_detail + '</div>\ <div class="loop-5 post_repuser hidefont">最后回复人:' + hp_last_repuser + '</div>\ <div class="loop-5 post_lasttime">最后回复时间:' + hp_last_time + '</div></div>'; } posts_html += '</ul></div>'; posts_html += '<div class="loop-4 posts_paging">' + (!h_paging.length ? '' : h_paging.html()) + '<a href="' + h_cur_url + '">刷新</a></div></div>'; return posts_html; }; function parsePost(postDom) { var post_title = postDom.find('.core_title_txt').html() var post_info = postDom.find('.l_post'); var post_content = postDom.find('.p_content cc'); var author_avatar = postDom.find('.p_author_face img'); var lzlbox = postDom.find('j_lzl_c_b_a'); var ppage = postDom.find('.pb_list_pager')[0]; var post_html = ''; post_html += '<div class="loop-12 post_title">' + post_title + '</div>'; for(var i=0; i<post_info.length; i++) { var pi = $(post_info[i]).data('field'); var pc = post_content[i]; post_html += '<section data-post="' + pi.content.post_id + '">'; post_html += '<div class="loop-2 post_info">\ <div class="loop-12 post_author" data-user="' + pi.author.user_id + '">\ <div><img src="http://tb.himg.baidu.com/sys/portrait/item/' + pi.author.portrait + '"></div>\ <span>' + pi.author.user_name + '</span>\ </div>\ <div class="loop-12 post_author_level">\ <span>' + (pi.author.level_name||'*') + '</span>\ <span>' + (pi.author.level_id||'0') + '</span>\ </div>\ </div>'; post_html += '<div class="loop-10 post_article">' + pc.innerHTML + '</div>'; post_html += '<div class="loop-10 post_msg">' + pi.content.date + '</div>'; post_html += '<div class="loop-10 post_lzl">' + getPostLzl(lzlbox, i) + '</div>'; post_html += '</section>'; } post_html += '<div id="ue_texteara" class="loop-12"><script id="ueditor_tieba" name="content" type="text/plain">这里写你的初始化内容</script></div><div class="loop-12"><textarea id="post_editor" /></div><div class="loop-12"><button id="btn_post">回复</button></div>'; post_html += '<div class="loop-8 post-page">' + ppage.innerHTML + '</div>'; // <a href="'+(($(ppage).find('a'))[0].href.split('?')[0]+'?see_lz=1')+'">只看楼主</a> post_html='<div class="span box_post">' +post_html+ '</div>'; return post_html; }; function getPostLzl(lzldom, index) { var lzlbox = lzldom[index]; if (!lzlbox) { return ''; } var lzlreps = $(lzlbox).find('li'); var lzlhtml = '<ul>'; for(var i=0; i<lzlreps.length; i++) { var lzlinfo = $(lzlreps[i]).data('field'); var lzltext = $(lzlreps[i]).find('.lzl_cnt span.lzl_content_main').html(); var lzltime = $(lzlreps[i]).find('.lzl_cnt span.lzl_time').html(); var llio = eval('(' + lzlinfo + ')'); lzlhtml += '<li data-pid="' + llio.pid + '" data-spid="'+llio.spid+'">\ <div class="span">\ <div class="loop-2">' + llio.user_name + '</div>\ <div class="loop-8">' + lzltext + '</div>\ <div class="loop-2">' + lzltime + '</div>\ </div>'; } lzlhtml += '</ul>'; return lzlhtml; }; function parseDoPost(data) { window.da = data; if (!data.no) { console.log('success'); return; } var vhtml = '', da = data.data; if (da.vcode.need_vcode) { config.captcha.code = da.vcode.captcha_vcode_str; config.captcha.type = da.vcode.captcha_code_type; var img = config.captcha.url4 + '?' + da.vcode.captcha_vcode_str; vhtml += '<div class="box_model">'; vhtml += '<div class="loop-12 captcha"><img src="' + img + '"></div>'; vhtml += '<div class="loop-12 captcha-input">\ <input type="checkbox" class="cait cait-1" data-index="1" value="00000000">\ <input type="checkbox" class="cait cait-2" data-index="2" value="00010000">\ <input type="checkbox" class="cait cait-3" data-index="3" value="00020000">\ <input type="checkbox" class="cait cait-4" data-index="4" value="00000001">\ <input type="checkbox" class="cait cait-5" data-index="5" value="00010001">\ <input type="checkbox" class="cait cait-6" data-index="6" value="00020001">\ <input type="checkbox" class="cait cait-7" data-index="7" value="00000002">\ <input type="checkbox" class="cait cait-8" data-index="8" value="00010002">\ <input type="checkbox" class="cait cait-9" data-index="9" value="00020002">\ </div>'; vhtml += '<div class="loop-12">\ <button type="button" id="btn_refre_captcha"">换一张</button>\ <button type="button" id="btn_submit_captcha">确定</button></div>'; vhtml += '<div class="loop-12"><div class="loop-10" id="captchackr"></div><div class="loop-2" id="delcaptchar">X</div></div>'; vhtml += '<div class="loop-12" id="post-result"></div>'; vhtml += '</div>'; $('.tba-modal').html(vhtml); $('.tba-modal').omniWindow().trigger('show'); mointorCaptcha() return; } vhtml += '<div class="box_model">\ <div class="loop-12">\ <p>no:' + data.no + '\ <p>err_code' + data.err_code + '\ <p>error:' + data.error + '</div></div>'; $('.tba-modal').html(vhtml); $('.tba-modal').omniWindow().trigger('show'); return; }; function mointorCaptcha() { $('.cait').bind('click', function(){ if (config.captcha.value.length==4) { return; } $(this).prop({disabled: true}); config.captcha.value.push({val: $(this).val(), index: $(this).data('index')}); $('#captchackr').append('<span id="checkcaptchar-' + $(this).data('index') + '">' + $(this).data('index') + '</span>'); }); $('#delcaptchar').bind('click', function(){ for(var i=0; i<config.captcha.value.length; i++) { if ((i+1)==config.captcha.value.length) { $('#checkcaptchar-' + config.captcha.value[i].index).remove(); $('.cait-' + config.captcha.value[i].index).prop({disabled: false, checked: false}); config.captcha.value.remove((i+1)); } } }); $('#btn_refre_captcha').bind('click', function(){ $('#btn_post').click(); }); $('#btn_submit_captcha').bind('click', function(){ if (config.captcha.value.length<4) { $('#post-result').text('选择完验证码'); return; } var captVal = ''; for(var i=0; i<config.captcha.value.length; i++) { captVal += config.captcha.value[i].val; } config.captcha.input = captVal; $.ajax({ url: config.captcha.url_check, data: { captcha_code_type: config.captcha.type, captcha_vcode_str: config.captcha.code, captcha_input_str: captVal }, dataType: 'json', type: 'post' }).done(function(data){ config.captcha.value = []; $('#btn_post').click(); if (!data.anti_valve_err_no) { handleGetPost(config.post.page_url); $('.tba-modal').omniWindow().trigger('hide'); return; } }); }); }; function encodeUnicode(str){ return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u'); }; function decodeUnicode(str){ return unescape(str.replace(/\\u/gi,'%u')); }; initBorer(); })(window, jQuery);