#はじめに
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 <- 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 <- 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)
}
##毎回作業すること
###ログ取得編
- オンセンのセッションルームからログを入手
- 作業ディレクトリ(新規プロジェクト作成&作業ディレクトリ指定のやり方で指定した場所)へログを置く
###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氏に感謝します。