LoginSignup
0
0

More than 3 years have passed since last update.

オンセンログ→どどんとふ風ログコンバータ

Posted at

はじめに

Discord版とは内容や操作感が微妙に異なるので、ログの変換に来た方は注意をお願いします。

TRPGer向け

オンセンで行ったテキストセッションログを、どどんとふ風ログに変換するツールとして
個人用に作ったものを、TRPG仲間のために公開しているものです。
現時点では使い辛いかと思いますので、マシュマロ等でドンドン意見をください。
気が向いたらアップデートします。

プログラマ向け

コードが美しくない、説明がわかりにくい等の指摘を歓迎しています。

使うもの

・オンセンのセッションログ(csv形式)
:必ず取得したそのままのログを用いてください。
 編集を加えてしまっていた場合、動作を保証できません。
・RStudio
:ログを変換するために使用しているプログラム言語、及びそれを使いやすくするGUIです。
 説明をここに述べた方が良かったら言ってください。とりあえず省略しています。

使い方

初回セットアップ

RStudioセットアップ編

R言語本体とRStudioをインストール
任意で新規プロジェクト作成&作業ディレクトリ指定
Discord版ログ変換もご利用の方は、同じプロジェクト内にすることを推奨

リンク先は@hujuuさんの記事です。

新規プロジェクト作成&作業ディレクトリ指定のやり方

左上のFile→NewProject→NewDirectory→NewProjectへ進む。
Directory nameへ任意の名前を付け、出力したログを置く場所を
Create project as subdirectory of:で指定する。

関数登録編

変換プログラム本体にあるcolors_preをRStudioにコピペ。エンターキーで実行。
log_conv_onsenも同じように実行。
RStudioのFunctionsの欄を見て、clolrs_preとlog_conv_onsenが登録されているのを確認。

*次回からはここまで省略可能
 毎回作業すること以降のみでOK

変換プログラム本体

折りたたみ(クリックで展開)
colors_pre
colors_pre <- function(x) {
    namecolor <- 0:x
    name <- 0:x
    namecolor[1] <- "#00aa00"
    name[1] <- readline("systemname : ")
    for (i in 1:x+1) {
        name[i] <- readline("name : ")
        namecolor[i] <- readline("HTMLcolor : ")
    }
    names(namecolor) <- name
    namecolor <<- namecolor
    return(namecolor)
}
log_conv_onsen
log_conv_onsen <- function(x = "log0", y = 1, namecolor = TRUE, date = 0){
    op <- c("<?xml version='1.0' encoding='UTF-8'?>",
            "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>",
            "<html xmlns='http://www.w3.org/1999/xhtml' lang='ja'>",
            "  <head>",
            "    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />",
            "    <title>chatlog : null</title>",
            "  </head>",
            "  <body>")
    op <- iconv(op, from = "CP932", to = "utf-8")
    end <- c("  </body>",
             "</html>")
    end <- iconv(end, from = "CP932", to = "utf-8")
    csv <- read.csv(paste(x, ".csv", sep = ""), header = F)
    taleker <- 1:nrow(csv)
    color <- 0
    if (is.logical(namecolor) == TRUE) {
        namecolor <- colors_pre(y)
    }
    if (date == 0) {
        csv["V1"] <- " "
        } else if (date == 1) {
            csv["V1"] <- lapply(csv["V1"], str_sub, start = 12, end = -4)
            #return(csv["V1"])
        } else if (date == 2) {
            csv["V1"] <- lapply(csv["V1"], str_sub, start = 6, end = -4)
    }
    for (i in 1:nrow(csv)) {
        for (j in 1:length(namecolor)) {
            if (csv[i,3] == names(namecolor)[j]) {
                color <- namecolor[j]
                break
            } else {
                color <- "#000000"
            }
        }
        taleker[i] <- paste("[", csv[i,2], "]", csv[i,1], ":<font color='", color, "'><b>", csv[i,3], "</b>:", csv[i,4], "</font><br>", sep = "")
    }
    html <- c(op, taleker, end)
    write(html, file = paste(x, ".html", sep = ""), append = F)
    #html <- data.frame(c(op, taleker, end))
    #write.table(html, file = paste(x, ".html", sep = ""), fileEncoding = "utf-8", append = F)
}

毎回作業すること

ログ取得編

  1. オンセンのセッションルームからログを入手
  2. 作業ディレクトリ(新規プロジェクト作成&作業ディレクトリ指定のやり方で指定した場所)へログを置く

RStudio上でやること

一行ずつコピペして実行。

install.packages("tidyverse")
library(tidyverse)
#RStudio起動後、インストール・ライブラリ済なら省略可能

x <- 人数  #半角数字。例:x <- 9
colors_pre(x)
#systemneme: システム と記入してエンターキー
#"name : " に発言者の名前(かな・カナ・漢字可能)、"HTMLcolor : " に付けたい色のカラーコードを書いてエンターキー

log <- "ログ名" 
#※「ログ取得編の2.」で置いたログファイル名にする。半角英数字のみを推奨
#半角ダブルクォーテーションは絶対に外さない。

log_conv_onsen(log, , namecolor)
#第四引数に1と入力すると時分のタイムスタンプ、2と入力すると更に月日も表示される。
#log_conv_onsen(log, , namecolor, 1) などとすればよい。

後処理

出来あがったファイル(ログ名).htmlをテキストエディタで開き、
エンコードをUTF-8に変更して保存してください。

動作に異常があったら?

変換プログラム本体の中のlog_conv_onsenをもう一度コピペ、実行。
RStudio上でやることに戻り再びコピペ、実行。
ログの取得~ファイル名変更はしなくてよい。

'str_sub' を含むエラーが出た場合

install.packages("tidyverse")
library(tidyverse)
#RStudio起動後、インストール・ライブラリ済なら省略可能

ここからやり直す。

一行目library(tidyverse)からエラーが出た

Updating Loaded Packagesという表示ならば、Cancelを押してください。
既にインストール済みという表示です。深刻なエラーではありません。

x <- 人数  #半角数字。例:x <- 9

から再開してください。

謝辞

当記事の説明文、及び機能改善に多大に協力頂いたM氏に感謝します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0