您需要先安装一个扩展,例如 篡改猴、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.2 // @grant none // @author 生物烯丙菊 // ==/UserScript== 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+"), ""); } !(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 = { post: { handle_url: 'http://tieba.baidu.com/f/commit/post/add', forum_id: 0, thread_id: 0, forum_name: '', tbs: '' } }; 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>'; 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.css'; if (location.href === 'http://tieba.baidu.com/') { return; } if (!pd) { return; } function initBorer() { if (!!pd.forum.id) { 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){ 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); initCss(); 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 initCss(){ $('head').append('<link rel="stylesheet" href="' + tpl.css + '">'); }; function monitorHPage() { $('.posts_paging a').bind('click', function(){ $.ajax({ url:this.href, dataType: 'html' }).done(function(data){ initPosts(parsePosts($(data))); }); return false; }); $('.posts_list li').bind('click', function(){ $.ajax({ url: $(this).data('href'), dataType: 'html' }).done(function(data){ initPost(parsePost($(data))); setPostConfig($(data).text()); }); }); }; function mointorPPage() { $('.post-page a').bind('click', function(){ $.ajax({ url: this.href, dataType: 'html' }).done(function(data){ initPost(parsePost($(data))); setPostConfig($(data).text()); }); 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, id: 'utf-8', rich_text: 1, floor_num: 1, fid: config.post.forum_id, tid: config.post.thread_id, content: post_content, anonymous: 0, tbs: config.post.tbs }, dataType: 'json' }).done(function(data){ console.log(data); if (!!data.no) { console.log('no:'+data.no+'\nerr_code:'+data.err_code+'\nerror:'+data.error); return; } console.log('success'); }); }); }; 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){ initPosts(parsePosts($(data))); }); }; 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 ? '' : dencodeUnicode(fe[4]); config.post.thread_id = !tid ? 0 : tid[5]; }; function bindEvent() { $('#query').bind('keyup', function(){ $('#search_list').show(); mointorSearch(); }); $('#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=' + pd.forum.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 encodeUnicode(str){ return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u'); }; function dencodeUnicode(str){ return unescape(str.replace(/\\u/gi,'%u')); }; initBorer(); })(window, jQuery);