// ==UserScript== // @name GameChatSaver // @namespace http://tampermonkey.net/ // @version 0.9 // @description Script created for saving the private/team chat for a game into an HTML file. // @author JustinR17 // @match https://www.warzone.com/MultiPlayer?GameID=* // @require http://cdn.jsdelivr.net/g/filesaver.js // @require // @downloadURL none // ==/UserScript== function saveFile(value, name) { var fileBlob = new Blob([value], { type: "text/plain;charset=utf-8" }); saveAs(fileBlob, name + ".html"); } function startFile(chat) { return "" + chat + ""; } function endFile() { return "
"; } function formatMessage(curMsg) { var output = ""; var playerCol = curMsg.querySelectorAll("div[id^='ujs_LeftCol']")[0]; var messageCol = curMsg.querySelectorAll("div[id^='ujs_MessageLabel']")[0].innerText; var playerName = playerCol.querySelectorAll("div[id^='ujs_PlayerNameLabel']")[0].innerText; var playerDate = playerCol.querySelectorAll("div[id^='ujs_TimestampLabel']")[0].innerText; if (playerName == "Player Name") { playerName = ""; } output += playerName + "
" + playerDate + "" output += messageCol + "" return output; } function formatTurn(curMsg) { var output = ""; var turn = curMsg.querySelectorAll("div[id^='ujs_TurnLabel']")[0].innerText; output += turn + "" return output; } function doSave() { var chatFinal = prompt("Enter a file name: ", document.getElementById("ujs_GameNameLabel").innerText + "-TeamChat"); if (chatFinal == null) { return; } var date = new Date(); chatFinal = date.getFullYear() + ("0" + date.getMonth().toString()).slice(-2) + ("0" + date.getDay().toString()).slice(-2) + "-" + chatFinal; var output = startFile(chatFinal); var chat = document.getElementById("ujs_Content_6"); var childNodes = chat.childNodes; for (var i = 0; i < chat.childNodes.length; i++) { var curMsg = childNodes[i]; if (curMsg.id == "ujs_CenteredContainer_2") { continue; } else if (curMsg.id.indexOf("ujs_ChatTurnSeperator") != -1) { output += formatTurn(curMsg); } else { output += formatMessage(curMsg); } } output += endFile(); saveFile(output, chatFinal); } function getModalButton() { return ''; } function initiateSave() { var modalButton = document.createElement("div"); modalButton.innerHTML = getModalButton(); var navBox = document.getElementsByClassName("navbar-nav")[0]; navBox.appendChild(modalButton); var el = document.getElementById("saveChatButton"); if (el.addEventListener) { el.addEventListener("click", doSave, false); } else if (el.attachEvent) { el.attachEvent('onclick', doSave); } } (function() { 'use strict'; initiateSave(); })();