ニコニコ動画の動画のURLをデコードするjavascript

ニコニコ動画のSM〜ってページのソースでエンコードしてあるURLをデコードして新しいページで開くjavascriptを書きました。
最初はリファレンスを読んでお勉強をするつもりでしたが、読んでも動く物が作れる感が得られなかったので早々に方向転換して
動く物を作って少しずつレベルアップする事にしました。

ぱっと思いついたキーワード"htmlのソースを検索するjavascript"で検索して最初に引っかかった知恵袋を見ると
とりあえずBODYタグを丸ごと持ってくる方法がわかったので、まずは実行するとBODYタグをalertで表示するスクリプトができました。

BODYタグの中身さえ引っ張ってこれれば、後は文字列操作なので何とでもなりました。
作ったスクリプトブックマークレットに変えるとsyntaxエラーが出るので、原因を調べるとブラウザ側で"%**"と書いて有る場合
ブックマークレットでは元の記号と解釈されるためでした。
そのためreplaceに渡す前に文字列を連結する事としました。

            • -
  var b = document.getElementsByTagName('body') [0].innerHTML;
  var re = /thread_id.*/gi;
  var b2 = b.match(re);
  var s1 = "%";
  var s2 = "gi";
  var uencs =[
    "25",
    "26",
    "2F",
    "3A",
    "3D",
    "3F",
  ];
  var reurl = [
    new RegExp(s1+uencs[0],s2),
    new RegExp(s1+uencs[1],s2),
    new RegExp(s1+uencs[2],s2),
    new RegExp(s1+uencs[3],s2),
    new RegExp(s1+uencs[4],s2),
    new RegExp(s1+uencs[5],s2),
  ];
  var churl = [
    String.fromCodePoint(37),
    String.fromCodePoint(38),
    String.fromCodePoint(47),
    String.fromCodePoint(58),
    String.fromCodePoint(61),
    String.fromCodePoint(63)
  ];
  if (b2 != null) {
    var step;
    var str = b2[0];
    for (step = 0; step < reurl.length; step++) {
      str = str.replace(reurl[step], churl[step]);
    };
    re = /http\:\/\/[a-z0-9\.\-\/\?\=]+/gi;
    var nicovideo = str.match(re);
    var win = window.open(nicovideo[0], 'name');
  } else {
    alert('not nico');
  };