Greasy Fork is available in English.

Better Baidu

Remove the 'right' contents. Add Bing and Google search buttons.

// ==UserScript==
// @name        Better Baidu
// @namespace   feifeihang.info
// @description Remove the 'right' contents. Add Bing and Google search buttons.
// @include     http://www.baidu.com/
// @include     https://www.baidu.com/
// @include     http://www.baidu.com/s*
// @include     https://www.baidu.com/s*
// @include     http://www.baidu.com/baidu*
// @include     https://www.baidu.com/baidu*
// @version     1.2.3
// @grant       none
// ==/UserScript==
(function (window, document, undefined) {
  var hasAdded = false;
  // define search engines' urls.
  var URLS = {
    'Bing': 'http://www.bing.com/search?q=',
    'Google': 'http://www.google.com/#q='
  };
  // now, let's go implement keywords highlighting.
  var resultContainerQuery = '#content_left';
  var buffer = '';
  watch(resultContainerQuery, buffer);
  var COLORS = [
    '#FFFF00',
    '#FFCC00',
    '#CCCCFF',
    '#00CCFF',
    '#33CCCC',
    '#FF8080',
    '#008000',
    '#FFFF99',
    '#808000',
    '#FFFFCC'
  ];
  var counter = 0;
  var topBtn;
  window.addEventListener('scroll', function () {
    if (window.pageYOffset >= 20) {
      topBtn.style.display = 'block';
    } 
    else {
      topBtn.style.display = 'none';
    }
  });
  function watch(resultContainerQuery, buffer) {
    setInterval(function () {
      // first, remove the annoying right contents.
      if (document.querySelector('#content_right *')) {
        var all = document.querySelectorAll('#content_right *:not(.better-baidu-reserve)');
        all = Array.prototype.slice.apply(all);
        all.map(function (element) {
          element.remove();
        });
        topBtn = document.createElement('div');
        // now, add go-to-top button.
        topBtn.appendChild(document.createTextNode('TOP'));
        var displayStr = window.pageYOffset >= 20 ? 'block' : 'none';
        topBtn.style = 'display: ' + displayStr + '; position: fixed; bottom: 10px; right: 10px; line-height: 50px;' +
        'width: 50px; height: 50px; color: #fff; background: #ED614F; text-align: center;' +
        'cursor: pointer; font-weight: bold; border-radius: 100%; z-index: 999999;' +
        'box-shadow: 0 2px 5px grey;';
        topBtn.onclick = function () {
          window.scrollTo(0, 0);
        }
        document.body.appendChild(topBtn);
      }
      // if Bing and Google are not added yet, add them.

      var isNotBaiduHomepage =
      window.location.href.toUpperCase() !== 'HTTP://WWW.BAIDU.COM' &&
      window.location.href.toUpperCase() !== 'HTTPS://WWW.BAIDU.COM' &&
      window.location.href.toUpperCase() !== 'HTTP://WWW.BAIDU.COM/' &&
      window.location.href.toUpperCase() !== 'HTTPS://WWW.BAIDU.COM/';
      if (!hasAdded && isNotBaiduHomepage) {
        // find container and Baidu button.
        var container = document.querySelector('#form');
        var baidu = document.querySelector('#su').parentElement;
        var current = baidu;
        // now, create and add new buttons.
        for (var item in URLS) {
          var anchor = document.createElement('a');
          anchor.textContent = item;
          anchor.setAttribute('data-url', URLS[item]);
          anchor.setAttribute('target', '_blank');
          anchor.onmouseenter = function () {
            var q = document.querySelector('#kw').value || '';
            this.setAttribute('href', this.getAttribute('data-url') + q);
          };
          anchor.style = 'cursor: pointer; color: rgb(255, 255, 255);font-weight: bold; display: inline-block;' +
          'text-decoration: none;background: rgb(51, 133, 255) none repeat scroll 0% 0%; text-align: center; line-height: 33px;' +
          'margin-left: 2px; width: 60px; height: 33px; border-bottom: 1px solid transparent;';
          container.insertBefore(anchor, current.nextSibling);
          current = anchor;
        }
        hasAdded = true;
      }
      var resultContainer = document.querySelector(resultContainerQuery);
      if (resultContainer && resultContainer.textContent !== buffer) {
        // update buffer.
        buffer = resultContainer.textContent;
        // first, find all 'em's.
        var ems = document.querySelectorAll('em');
        // if there is no 'em's, do nothing.
        if (ems.length === 0) {
          return false;
        }
        // convert ems into an array.

        ems = Array.prototype.slice.apply(ems);
        var counter = 0;
        var styles = {
        };
        // iterate through all the keywords in search result, 
        // and map the predefined color to them.
        ems.forEach(function (em) {
          var text = em.innerHTML.toUpperCase().trim();
          var bg = styles[text];
          if (!bg) {
            bg = COLORS[counter++];
            styles[text] = bg;
            if (counter === COLORS.length) {
              counter = 0;
            }
          }
          em.style.background = bg;
          em.style.color = '#000';
          em.style.fontWeight = 'bold';
        });
      }
    }, 200);
  }
}) (this, document);