twipai

Overwrite noisey users tweet with oppai in tweetdeck.

// ==UserScript==
// @name        twipai
// @namespace   https://takachan-mirai.github.io
// @description Overwrite noisey users tweet with oppai in tweetdeck.
// @include     /https?:\/\/tweetdeck\.twitter\.com.*/
// @version     1.0.3
// @grant       none
// ==/UserScript==

(() => {
  let paiConfig = localStorage.getItem('twippai_config');
  let ids = paiConfig !== null && paiConfig !== undefined ? JSON.parse(paiConfig) : [];

  let muting = (records) => {
    records.forEach((record) => {
      record.addedNodes.forEach((obj) => {
        if(obj.nodeType == Node.ELEMENT_NODE && obj.classList.contains('stream-item')) {
          const userName = obj.querySelector(".username");
          if(userName && ids.indexOf(userName.innerText) != '-1') {
            obj.querySelector(".tweet-text").innerHTML = 'おっぱい';
          }
        }
      });
    });
  };

  let sw = true;
  while(sw) {
    if(document.querySelector('.application') != undefined) {
      let app = document.querySelector('.application');
      app.innerHTML += `
      <div id="paiconfig" style="position:fixed;bottom:10px;right:10px;background-color:#fff;padding:5px;z-index:10000;transition:1s;width:70px;height:20px;overflow:hidden;border-radius:10px;border:solid 1px #666;">
        <h2 style="text-align:center;padding-bottom:10px;color:#333;">ついっぱい</h2>
        <textarea id="paiId" style="width:100%;height:250px;"></textarea>
      </div>
      `;
      let paiconfig = document.getElementById('paiconfig');
      paiconfig.addEventListener('mouseenter', (e) => {
        e.target.style.height = '300px';
        e.target.style.width = '200px';
      });
      paiconfig.addEventListener('mouseleave', (e) => {
        e.target.style.height = '20px';
        e.target.style.width = '70px';
      });

      //set mute
      let paiId = document.getElementById('paiId');
      paiId.value = ids.join('\n');
      paiId.addEventListener('keyup', (e) => {
        localStorage.setItem('twippai_config', JSON.stringify(e.target.value.split('\n')));
      });

      let randCheck = document.body.querySelector('#rand');

      //observe elements
      (new MutationObserver((info) => {
        muting(info);
      })).observe(document.body, {
        childList: true,
        attributes: false,
        characterData: false,
        subtree: true,
        attributeOldValue: false,
        characterDataOldValue: false
      });
      sw = false;
    }
  }
})();