LoginSignup
1
0

More than 3 years have passed since last update.

「小説家になろう」バックアップファイルからメタデータを抽出する

Last updated at Posted at 2020-02-17

はじめに

「小説家になろう」バックアップファイルをTeX変換する」のとおり、TeX化は実現できましたが、この際にざっくり切り捨てている部分があります。 
せっかくなのでこちらも何かならないかと考えたところ、ちょうどSchema.orgのBookに近いことに気づいたので、下記のとおりメタデータをJSON-LD形式で抽出するシェルスクリプトを書いてみました。

説明

「小説家になろう」には評価の項目があるのですが、評価者の名前がなく記載に迷ったため、評価については今回は切っています。Reviewを使えば表現はできそうです。

Code

#!/bin/bash
LANG=C
FILE=Desktop/result.json
cat << EOF > $FILE
{
 "@context":"https://schema.org",
 "@type":"Book",
 "@id":"https://ncode.syosetu.com/`w='【Nコード】';grep -A 1 $w $1|grep -v $w|tr '[:upper:]' '[:lower:]'`/",
 "name":"`w='【タイトル】';grep -A 1 $w $1|grep -v $w`",
 "author":{
   "@type":"Person",
   "name":"`w='【作者名】';grep -A 1 $w $1|grep -v $w`",
   "sameAs":"https://mypage.syosetu.com/`grep 'ユーザID:.*' $1|sed 's/[^0-9]//g'`/"
  },
 "dateCreated":"`w='【初回掲載日時】';grep -A 1 $w $1|grep -v $w|sed 's/ /T/'`+09:00",
 "dateModified":"`w='【最終掲載日時】';grep -A 1 $w $1|grep -v $w|sed 's/ /T/'`+09:00",
 "genre":"`w='【ジャンル】';grep -A 1 $w $1|grep -v $w`",
 "keywords":"`w='【キーワード】';grep -A 1 $w $1|grep -v $w`",
 "sameAs":"https://ncode.syosetu.com/`w='【Nコード】';grep -A 1 $w $1|grep -v $w|tr '[:upper:]' '[:lower:]'`/",
 "abstract":"`w='【あらすじ】';sed -n /$w/,'$p' $1|sed -n '/【掲載部分数】/q;p'|sed -e /$w/d -e '/\n/d'`"
}
EOF

処理対象例

下記の例示は実際の私の作品のバックアップファイルを一部改変したものです。

【ユーザ情報】
ユーザID: 286206
ユーザ名: hiroliteral

【Nコード】
N6070DD

【タイトル】
十歳アリスちゃんは元大魔王でした

【作者名】
hiroliteral

【種別】
連載小説

【完結設定】
連載中

【年齢制限】
年齢制限なし

【ジャンル】
ハイファンタジー〔ファンタジー〕

【登録必須キーワード】
残酷な描写あり

【キーワード】
年の差 日常 冒険 ラブコメ 異世界 兄妹 ほのぼの 大魔王 ファンタジー

【あらすじ】
大魔王リルは側近に裏切られ殺害されたが、予め転生呪文を仕込んでいたため最高潮の若い肉体で転生した。
だがリルは、自身の魔力最高潮が十歳だったことを知らず、最高値の年齢で不老化する呪文まで仕込んでいたので、永遠の十歳アリスちゃんに。

【掲載部分数】
47

【初回掲載日時】
2016-02-21 23:55:06

【最終掲載日時】
2020-02-11 16:58:23

【感想受付】
感想を受け付ける(制限なし)

【レビュー受付】
レビューを受け付ける

【評価受付】
評価を受け付ける

【開示設定】
すべての一覧で表示

【評価】<以下省略>

結果

{
 "@context":"https://schema.org",
 "@type":"Book",
 "@id":"https://ncode.syosetu.com/n6070dd/",
 "name":"十歳アリスちゃんは元大魔王でした",
 "author":{
   "@type":"Person",
   "name":"hiroliteral",
   "sameAs":"https://mypage.syosetu.com/286206/"
  },
 "dateCreated":"2016-02-21T23:55:06+09:00",
 "dateModified":"2020-02-11T16:58:23+09:00",
 "genre":"ハイファンタジー〔ファンタジー〕",
 "keywords":"年の差 日常 冒険 ラブコメ 異世界 兄妹 ほのぼの 大魔王 ファンタジー",
 "abstract":"大魔王リルは側近に裏切られ殺害されたが、予め転生呪文を仕込んでいたため最高潮の若い肉体で転生した。だがリルは、自身の魔力最高潮が十歳だったことを知らず、最高値の年齢で不老化する呪文まで仕込んでいたので、永遠の十歳アリスちゃんに。"
}

その他

TeXファイルにメタデータを埋め込むのであれば、commentパッケージを使ってコメントとして入れてしまうのが現実的に楽かと思います。

\usepackage{comment}
\begin{comment}
メタデータ
\end{comment}

参考

Schema.org/Book

1
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
1
0