DynMapChatLogger textDLver

cf. ダイナマップ/scripts - Minecraft 2ch PCGame Server Wiki*

以下は古い内容です。上のリンクに載っているものを使ってください。

// ==UserScript==
// @name         dynlog
// @match        http://pcgamemc.dip.jp:8123/*
// @version      17.9.8
// ==/UserScript==
load() ;
function load()
{
  if( document.querySelector( '.chat' ) ) repeat() ;
  else setTimeout( function() { load() ; } , 5000 ) ;
}
function repeat()
{
  logBox = document.querySelector( '.chat > textarea' ) ;
  if( !logBox ) create() ;
  lastLog = document.querySelector( '.messagelist > *:last-child' ) ;
  if( lastLog )
  {
    logList = document.querySelector( '.messagelist' ).textContent ;
    latest = logBox.latest ;
    if( latest != logList )
    {
      if( -1 != logList.indexOf( latest ) )
        logList = logList.slice( logList.indexOf( latest ) + latest.length + 1 ) ;
      if( logList.match(/\S/) )
      {
        logBox.value += convert( logList ) ;
        a = document.createElement( 'a' ) ;
        a.download = Date.now() + '.txt' ;
        a.href = 'data:text/plain,' + encodeURIComponent( logList ) ;
        a.click() ;
        logBox.latest = lastLog.textContent ;
        logBox.scrollTop = logBox.scrollHeight ;
      }
    }
  }
  setTimeout( function() { repeat() ; } , 1000 ) ;
}
function create()
{
  logBox = document.createElement( 'textarea' ) ;
  logBox.setAttribute( 'readonly' , '' ) ;
  document.querySelector( '.chat' ).appendChild( logBox ) ;
  logBox.value = convert( 'now logging...' ) ;
  document.querySelector( 'style' ).textContent +=
    '\n \n .chat > textarea' +
    ' { height: 100px; min-width: 400px; background: transparent; color: #fff; }' ;
  logBox.setAttribute( 'latest' , '' ) ;
}
function convert( log )
{
  return ( new Date() ).getHours() + ':' + ( new Date() ).getMinutes() + ' ' + log + '\n' ;
}