Greasy Fork

ChatLog

Downloads all messages (including private) in current chat

当前为 2017-11-28 提交的版本,查看 最新版本

// ==UserScript==
// @name         ChatLog
// @namespace    http://alphaoverall.com
// @version      0.6
// @description  Downloads all messages (including private) in current chat
// @author       AlphaOverall
// @include      *://www.kongregate.com/games/*/*
// ==/UserScript==

// Check for holodeck to load
function check() {
    if (!holodeck) { setTimeout(check, 1000);}
    else {
        console.log("[ChatLog]: Holodeck loaded");
        start();
    }
} check();

// Main function
function start() {
    holodeck.addChatCommand("chatlog", function(l, msg){
        let z = msg.match(/^\/\S+\s+(.+)/), type = ".txt";
        // Allow an optional html download
        if (z && z[1] == "html") type = ".html";
        // Get active chat message window and log
        let element = jQuery(".chat_room_template:visible .chat_message_window")[0];
        let log = element.innerText;
        if (type === ".html") {
            // Add styling to html files
            // Just grabbed these from Kong, probably not comprehensive or all necessary
            log = `
            <style>
			.chat_message_window {
				background-color: #fff;
				margin-top: 3px;
				max-height: 500px;
				overflow-x: hidden;
				overflow-y: auto;
				text-align: left;
			}
			.chat_message_window p .timestamp {
				color: #888;
				display: block;
				font: 10px/12px Arial, sans-serif;
				text-transform: uppercase;
			}
			.chat_message_window p .username {
				text-decoration: none;
			}
			.chat_message_window .chat_message_window_username {
				color: #285588;
				cursor: pointer;
				text-decoration: underline;
			}
			.chat_message_window .is_self, .chat_message_window .sent_whisper span.username {
				color: #900;
			}
			.chat_message_window p .message {
				line-height: 14px;
			}
			.hyphenate, .hyphenate * {
				word-wrap: break-word;
				-webkit-hyphens: auto;
				-moz-hyphens: auto;
				-ms-hyphens: auto;
				hyphens: auto;
			}
			.chat_message_window .even {
				background-color: #e3e3e3;
			}
			.chat_message_window p {
				margin: 1px 0;
				padding: 4px 6px 4px 5px;
			}
            </style>`;
            log += `<div class="chat_message_window">${element.innerHTML}</div>`;
        }
        // Create link to download document
        var download = document.createElement("a");
        download.href = "data:attachment/text," + encodeURI(log);
        download.target = "_blank";
        // Set a unique name
        download.download = "Log_" + (new Date().toLocaleString()) + type;
        // Download it
        download.click();
        // Don't send command to chat window
        return false;
    });
    // Add /log as an optional form of command
    holodeck._chat_commands.log = holodeck._chat_commands.chatlog;
}