https://naba-san.hatenablog.com/


【自動リロード】abemaTVのコメントヘルパー作った。【ちょっとだけ軽量化】

二番煎じですみません。気づかずに作りました。
あと超絶作りが雑ですみません。

これはなに?

・abemaTVのウインドウをコメント専用表示にします。*1

・新着コメント(のボタン)を3秒間隔でチェックし、リロードします。

・[2016-05-02版より] 軽量化対策のため、コメントの表示件数を150件程度に制限します。*2

動作確認は Chrome 49 で行っています。

Firefoxでも動くみたいです(下記のブックマークレットは動きません*3)。

var _jq = null;
document.body.appendChild(
  function(){
    src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js";
    sc = document.createElement("script");
    sc.type="text/javascript";
    sc.src=src;
    sc.onload = function() {
      // jQuery 読込後の処理
      _jq = window.jQuery.noConflict();
      onReady("comment");
    };
    return sc;
  }()
);

function onReady(mode) {
      // 要素フィルタ
      function filter(elms, regExp) {
          var elmArray = [];
          _jq(elms).each(function(index, elm) {
              var matchingElm = _jq(elm).prop("class");
              if(matchingElm != undefined && matchingElm.match(regExp) != undefined) {
                  elmArray.push(elm);
              }
          });
          return elmArray;
      }

      // スクリーン部分除去
      function removeScreen() {
          elements = _jq(filter(_jq("div"), /screen/g)[0]).find("> > div");
          not = filter(elements, /TVContainer/);
          screen = elements.not(not);
          screen.hide();
      }

      // コメント表示
      function showComment() {
          filter(_jq("div"), /right-container/g)[0].click();
          // _jq(filter(_jq("div"), /right-comment-area/g)[0]).width("100%");
          var commentArea = _jq(filter(_jq("div"), /right-comment-area/g)[0]);
          commentArea.width("100%");
          commentArea.css("transform", "initial");
      }

      // 番組詳細表示
      function showDetail() {
          filter(_jq("div"), /view-count/g)[0].click();
          _jq(filter(_jq("div"), /right-slide--shown/g)[0]).width("100%");
      }

      // コメントの自動リロード
      function reloadComment() {
          setTimeout(function(){
              reloadComment();
              if(mode == "detail")  showDetail();
              if(mode == "comment") showComment();
              var newCmtBtn = filter(_jq("button"), /continue-btn/g);
              if(newCmtBtn.length != 0) newCmtBtn[0].click();
              commentLimit();
          }, 3000);
      }

      // commentLimit
      function commentLimit() {
          var count = 0;
          _jq.each(filter(_jq(filter(_jq("div"), /comment-list/g)[0]).find(">div"), /item/g), function(index, elm){
              if(count++ >= 150)
                  _jq(elm).hide();
          });
      }

      reloadComment();
      removeScreen();
}

見た感じ、ウインドウ表示後はコメントAPIだけのやり取りになってるようですが、もし過負荷を与えるようなら(CAさんとかAbemaさんから苦情が入ったら)削除すると思います。

使い方

動作確認程度なら、上記を開発者ツールのコンソールにコピペすると動きます。

または、以下のブックマークレットでも動きます。

javascript:(function(e){e=document.createElement('script');e.src='//dd.naba78.net/abema/commentHelper.js';document.head.appendChild(e);})();

ブックマークに上記をアドレスとして登録し、チャンネル表示後(動画再生開始後)にブックマークを開いてください。

ブックマークレットが置いてあるサーバはとても貧弱なので、なるべく各自の環境に配置してお使いください。気が向いたら性能考えて別の場所に置くかもしれません(機能しなくなったら場所が変わってるかもしれません)。

改訂履歴

2016-04-30 : 初版
2016-05-02 : コメント表示件数を150件程度に制限、リサイズした時にコメント表示が一瞬戻る点を修正

*1:個人的に別ウインドウの方が都合が良かったので。動画用に別ウインドウ立ち上げてください。

*2:表示を隠すだけなので、実態は残りますが、多少マシになると思います。

*3:証明書が引っかかるみたいなので、配置場所を変えて頂いたら動くと思います。