(今更この需要あるんですか…?)
動作は保証しません。試す場合は自己責任で。

動作確認した環境

  • Windows 10
  • Google Chrome 94.0.4606.71 (Official Build)

操作

  • BattleLogのエンブレム作製画面へ行く
  • コピーしたいエンブレムを選択
  • Consoleを開く
    • F12を押して、上段にあるConsoleを選ぶ
  • 以下のやつをConsoleへコピペ、Enterで実行
copy('emblem.emblem.load('+JSON.stringify(emblem.emblem.data,null,2)+');');
  • エンブレムの情報が記録されたものがクリップボードへコピーされる
$('body').html('<pre style="color:#000;">emblem.emblem.load('+JSON.stringify(emblem.emblem.data,null,2)+');</pre>');
  • だめならこっち。

  • 上のやつでコピーされる内容が表示されるページに遷移する。

  • なんか背景と同化して見づらいけどCtrl + Aで全選択してCtrl + Cでコピーすればいいと思います。

  • 恐らく、右クリックをしてもペーストできないのでCtrl + Vを使いましょう

  • テキストエディタを開く

    • いろいろ宗派があるので深くは突っ込まない。私はVSCodeを使いました。メモ帳でもOK。
  • 先ほどコピーした内容を貼り付け。

  emblem.emblem.load({
      "objects": [
          {
              "opacity":
              .
              .
              .
- ↑のような物が貼り付けられるはず。
  • 不要な部分を削除する
  # 最初の部分の
  emblem.emblem.load({
    "objects": 
  
  # 末尾の部分の
  });
  • 新しくテキストエディタを起動

    • いろいろ宗派があるのd(ry
  • まず最初に以下のものを記述

  var request=new XMLHttpRequest;request.open("POST","https://companion-api.battlefield.com/jsonrpc/web/api?Emblems.newPrivateEmblem",!0),request.onreadystatechange=function(){if(request.readyState==XMLHttpRequest.DONE){var e=JSON.parse(request.responseText);e.result?window.location.href=window.location.href.replace("/new","/edit/")+e.result.slot:alert("Error")}},request.setRequestHeader("Content-Type","application/json;charset=UTF-8"),request.setRequestHeader("X-GatewaySession",localStorage.gatewaySessionId),data={jsonrpc:"2.0",method:"Emblems.newPrivateEmblem",params:{data:'XXXXXXX'},id:"00000000-0000-0000-0000-000000000000"},request.send(JSON.stringify(data));
  • 先ほど作製した不要な部分を削除したやつを全選択 & コピー
  • ↑のXXXXXXXになっている場所を、コピーした内容で置換
  var request=new (中略) ,params:{data:'[{"opacity"...(中略)..."fill":"#FFFFFF"}]()'},id:"00000000-0000-0000-0000-000000000000"},request.send(JSON.stringify(data));

補足

  • あえて記事を作るようなことはしませんが、逆移植も可能かと思われます(未確認)
  var request=new XMLHttpRequest;request.open("POST","https://companion-api.battlefield.com/jsonrpc/web/api?Emblems.fetchPrivateEmblem",!0),request.onreadystatechange=function(){if(request.readyState==XMLHttpRequest.DONE){var e=JSON.parse(request.responseText);if(e.result){document.body.innerHTML='<h1>Copy that code:</h1><textarea style="width:100%;height:200px;padding:10px;">'+e.result+'</textarea>'}else{alert("Error")}}},request.setRequestHeader("Content-Type","application/json;charset=UTF-8"),request.setRequestHeader("X-GatewaySession",localStorage.gatewaySessionId);data={jsonrpc:"2.0",method:"Emblems.fetchPrivateEmblem",params:{personaId:window.location.href.split("career/")[1]().split("/")[0](),platform:"pc",slot:window.location.href.split("/").pop()},id:"00000000-0000-0000-0000-000000000000"},request.send(JSON.stringify(data));
  • ↑をConsoleで実行し、エンブレムのデータを取得

  • emblem.emblem.load({"objects":XXXXXXX});

  • XXXXXXXの部分を取得したデータで置換し、BattleLogのエンブレム作成画面に行き、Consoleで実行


参考記事