<commit_before><html>
<head>
    <style>
        .video {
            overflow: hidden;
            position: fixed;
            transform: scale(-1, 1);
            height: 80%;
            width: 80%;
            top: 100px;
            left: 195px;
        }

        #audio {
            display: none;
        }

        body {
            background: black;
        }
    </style>
</head>
<body>
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script>
<script>
  $(function () {

    function shuffle(array) {
      var n = array.length, t, i;

      while (n) {
        i = Math.floor(Math.random() * n--);
        t = array[n];
        array[n] = array[i];
        array[i] = t;
      }

      return array;
    }

    var getWindowMovieHeight = function () {
      // ここでブラウザの縦横のサイズを取得します。
      var windowSizeHeight = $(window).outerHeight();
      var windowSizeWidth = $(window).outerWidth();

      // メディアの縦横比に合わせて数値は変更して下さい。(メディアのサイズが width < heightの場合で書いています。逆の場合は演算子を逆にしてください。)
      var windowMovieSizeWidth = windowSizeHeight * 1.76388889;
      var windowMovieSizeHeight = windowSizeWidth / 1.76388889;
      var windowMovieSizeWidthLeftMargin = (windowMovieSizeWidth - windowSizeWidth) / 2;

      if (windowMovieSizeHeight < windowSizeHeight) {
        // 横幅のほうが大きくなってしまう場合にだけ反応するようにしています。
        $("#video").css({left: -windowMovieSizeWidthLeftMargin});
      }
    };

    // 以下画面の可変にも対応できるように。
    $(window).on('load', function () {
      getWindowMovieHeight();
    });

    $(window).on('resize', function () {
      getWindowMovieHeight();
    });

    function loadVideo(mp4Array) {
      //設定 ラップするコンテナdivのid指定
      var tgtDiv = '#videoWrapper';

      //メイン処理
      mp4Array.forEach(makeVideoTag);
      //メインが呼び出す関数
      function makeVideoTag(val, index) {
        $('<video>').attr({
          id: 'video' + index,
          Class: 'video',
          src: 'video/' + val
//          muted: true
        }).appendTo($(tgtDiv)).hide();

        // 最後でなければ入る
        if (index !== mp4Array.length - 1) {
          $(tgtDiv + ' #video' + index).on('ended', function (event) {
            $(this).hide();
            $(this).next().show();
            $(this).next()[0].muted = true;
            $(this).next()[0].play();
          });
        }
        //HTML処理 生成したHTML<video>1個目を表示化
        $(tgtDiv + ' video:eq(0)').show();
        $(tgtDiv + ' video:eq(0)')[0].muted = true;
        $(tgtDiv + ' video:eq(0)')[0].play();
      }
    }


    function setStoryVideo(mp4Array) {
      if (mp4Array.length === 1) {
        // TODO ランダムに並び替える
        var repeatArray = [];
        mp4Array.push.apply(mp4Array, (shuffle(repeatArray)));
      }
      console.log(mp4Array);
      loadVideo(mp4Array);
    }

    function setVideo(mp4Array) {
      if (mp4Array.length === 1) {
        // TODO ランダムに並び替える
        var repeatArray = [];
        repeatArray.push("repeat-2.mp4");
        repeatArray.push("repeat-3.mp4");
        repeatArray.push("repeat-4.mp4");
        repeatArray.push("repeat-2.mp4");
        repeatArray.push("repeat-3.mp4");
        repeatArray.push("repeat-4.mp4");
        mp4Array.push.apply(mp4Array, (shuffle(repeatArray)));
        repeatArray.push("repeat-1.mp4");
      }
      console.log(mp4Array);
      loadVideo(mp4Array);
    }

    var c = new WebSocket('ws://'+location.hostname+':8080/api/ws?channel=movie');
    c.onopen = function () {
      c.onmessage = function (response) {
        console.log(response.data);
        var data = $.parseJSON(response.data);
        try {
          $('#videoWrapper').empty();
          //設定部分 再生データの配列
          var mp4Array = [
            data.body.video_file_name
          ];
          if (data.type === "videoChangeStory") {
            setStoryVideo(mp4Array);
          } else {
            setVideo(mp4Array);
          }
          setTimeout(function () {
            $('#audio').attr('src', 'voice/'+data.body.voice_file_name).load();
          }, 1000);
        } catch (e) {
          console.log(e)
        }
      };
    };
  });
</script>
<audio id="audio" src="" autoplay></audio>
<p>音声出るよ（本番は消してね）</p>
<video src="video/repeat-1.mp4" class="video" autoplay muted></video>
<div id="videoWrapper">
</div>
</body>
</html>
<commit_msg>fix: shuffle<commit_after><html>
<head>
    <style>
        .video {
            overflow: hidden;
            position: fixed;
            transform: scale(-1, 1);
            height: 80%;
            width: 80%;
            top: 100px;
            left: 195px;
        }

        #audio {
            display: none;
        }

        body {
            background: black;
        }
    </style>
</head>
<body>
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script>
<script>
  $(function () {

    function shuffle(array) {
      var n = array.length, t, i;

      while (n) {
        i = Math.floor(Math.random() * n--);
        t = array[n];
        array[n] = array[i];
        array[i] = t;
      }

      return array;
    }

    var getWindowMovieHeight = function () {
      // ここでブラウザの縦横のサイズを取得します。
      var windowSizeHeight = $(window).outerHeight();
      var windowSizeWidth = $(window).outerWidth();

      // メディアの縦横比に合わせて数値は変更して下さい。(メディアのサイズが width < heightの場合で書いています。逆の場合は演算子を逆にしてください。)
      var windowMovieSizeWidth = windowSizeHeight * 1.76388889;
      var windowMovieSizeHeight = windowSizeWidth / 1.76388889;
      var windowMovieSizeWidthLeftMargin = (windowMovieSizeWidth - windowSizeWidth) / 2;

      if (windowMovieSizeHeight < windowSizeHeight) {
        // 横幅のほうが大きくなってしまう場合にだけ反応するようにしています。
        $("#video").css({left: -windowMovieSizeWidthLeftMargin});
      }
    };

    // 以下画面の可変にも対応できるように。
    $(window).on('load', function () {
      getWindowMovieHeight();
    });

    $(window).on('resize', function () {
      getWindowMovieHeight();
    });

    function loadVideo(mp4Array) {
      //設定 ラップするコンテナdivのid指定
      var tgtDiv = '#videoWrapper';

      //メイン処理
      mp4Array.forEach(makeVideoTag);
      //メインが呼び出す関数
      function makeVideoTag(val, index) {
        $('<video>').attr({
          id: 'video' + index,
          Class: 'video',
          src: 'video/' + val
//          muted: true
        }).appendTo($(tgtDiv)).hide();

        // 最後でなければ入る
        if (index !== mp4Array.length - 1) {
          $(tgtDiv + ' #video' + index).on('ended', function (event) {
            $(this).hide();
            $(this).next().show();
            $(this).next()[0].muted = true;
            $(this).next()[0].play();
          });
        }
        //HTML処理 生成したHTML<video>1個目を表示化
        $(tgtDiv + ' video:eq(0)').show();
        $(tgtDiv + ' video:eq(0)')[0].muted = true;
        $(tgtDiv + ' video:eq(0)')[0].play();
      }
    }


    function setStoryVideo(mp4Array) {
      if (mp4Array.length === 1) {
        // TODO ランダムに並び替える
        var repeatArray = [];
        mp4Array.push.apply(mp4Array, (shuffle(repeatArray)));
      }
      console.log(mp4Array);
      loadVideo(mp4Array);
    }

    function setVideo(mp4Array) {
      if (mp4Array.length === 1) {
        // TODO ランダムに並び替える
        var repeatArray = [];
        repeatArray.push("repeat-2.mp4");
        repeatArray.push("repeat-3.mp4");
        repeatArray.push("repeat-4.mp4");
        repeatArray.push("repeat-2.mp4");
        repeatArray.push("repeat-3.mp4");
        repeatArray.push("repeat-4.mp4");
        mp4Array.push.apply(mp4Array, (shuffle(repeatArray)));
        mp4Array.push("repeat-1.mp4");
      }
      console.log(mp4Array);
      loadVideo(mp4Array);
    }

    var c = new WebSocket('ws://'+location.hostname+':8080/api/ws?channel=movie');
    c.onopen = function () {
      c.onmessage = function (response) {
        console.log(response.data);
        var data = $.parseJSON(response.data);
        try {
          $('#videoWrapper').empty();
          //設定部分 再生データの配列
          var mp4Array = [
            data.body.video_file_name
          ];
          if (data.type === "videoChangeStory") {
            setStoryVideo(mp4Array);
          } else {
            setVideo(mp4Array);
          }
          setTimeout(function () {
            $('#audio').attr('src', 'voice/'+data.body.voice_file_name).load();
          }, 1000);
        } catch (e) {
          console.log(e)
        }
      };
    };
  });
</script>
<audio id="audio" src="" autoplay></audio>
<p>音声出るよ（本番は消してね）</p>
<video src="video/repeat-1.mp4" class="video" autoplay muted></video>
<div id="videoWrapper">
</div>
</body>
</html>

{'fraction_non_alphanumeric': 0.16343457943925233, 'fraction_numerical': 0.020677570093457946, 'mean_word_length': 1.9705065926439973, 'pattern_counts': {'":': 0, '<': 51, '<?xml version=': 0, '>': 47, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3684688', 'n_tokens_mistral': 3147, 'n_tokens_neox': 3037, 'n_words': 445}