どうも皆さん。知ってるでしょう?ダクト飯でございます。おい、やる夫路線来ねえか。
さて、昨日普通のやる夫板で、「AAで学ぶネット事件簿」という一種のモキュメンタリーを投下させて頂いたのですが(絶対AIあたりで間違いがあるので見てほしくないし見たなら間違いを指摘してほしい)、過去にやべー奴を投下しようとしていた因果か全くまとめられないので、自分でまとめブログを作ることにしました。この記事のその時に得られたコツをまとめたものです。
レンタルサーバーなんて借りる暇はないのでGithub Pagesを利用し、JekyllとRubyで「普通のやる夫板から指定DatをDL→解析しJekyllでポストを作成→デプロイ」というサイクルを作りました。自動まとめって奴ですね。のび太みたいにならないように気をつけましょう。
なお、この記事はLinuxを使用していますが、RubyやGitをインストールすればWindowsでも動くはずです。頑張れ。
WindowsにおけるRubyやRailsの環境構築方法をいろいろ調べてみた(2017年3月版)
私家版 Git For Windowsのインストール手順
WindowsでJekyllを動かす
Jekyllのプラグインは、コンバータとして作成すべき
_plugins
に*.rbファイルを置くとプラグインとして作用する。プラグインには何種類かがあるが、今回はコンバータを採用する。最初はジェネレーターを使おうと思ったのだが、通常の投稿というよりも特別投稿的位置づけの記事ができてしまうので断念した。
コンバータは特別な拡張子がついたファイルを機械的に変換するプラグインの種類で、例えば.textileファイルをTextile言語として解釈してHTMLに変換するjekyll-textile-converter
が代表例である。
んでもって、今回は*.yaruoファイルを、URLや引用範囲を含んだYAMLとして解釈し、自動DLやエンコーディング変換、整形を済ませたHTMLに変換するコードを書く。
以下がyaruoファイルのサンプル
---
layout: post
title: "AAで学ぶネット事件簿 第2章 Wikipedia Forget-Me-Not Revolution"
date: 2017-09-02 23:51:00 +0900
categories: yaruo-thread internet-casefile
---
url: http://bbs.yaruyomi.com/test/read.cgi/ban/1499589234/
range:
- 175
- 332
2chからDLする部分について
ここに関しては得られた結論がある。2ちゃんねる系のウェブサービスはShift-JISでできていることは皆さんご存知のことであろうと思うが、AAを扱う場合、アレをShift-JISと思ってはいけない。
というのも、RubyでShift-JISとして読み込んでしまうと、デフォルトの文字コード変換であるKconvが「 ̄
」という文字を「¯
」として変換してしまったりするので、割と酷い悲劇が起こる。
そこで、Shift-JISではなくCP932として読み込むと良い。CP932はMicrosoftやらが定めた独自実装Shift-JISであり、これで変換するとなぜか文字崩れしない。
また、既存のRuby用2ちゃんねるライブラリは総じてあまり訳に立たないと思ったほうがいい(少なくともAAブログをやるなら)。どうやら、大抵Shift-JISとして読み込んでいるようである(あまり調べてないけど)。datの仕様は簡単なので、板一覧とかスレ一覧とか見ない限り、簡単に実装できる。
名前<>E-mail<>日付とIDとBE<>本文<>スレッドタイトル
名前<>E-mail<>日付とIDとBE<>本文<>
名 </b>fusianasan.2ch.net<b>前<>E-mail<>日付とIDとBE<>本文<>
名前 </b>◆ozOtJW9BFA <b><>E-mail<>日付とIDとBE<>本文<>
キャップ ★<>E-mail<>日付とIDとBE<>本文<>
名前 </b>◆ozOtJW9BFA <b>@キャップ ★<>E-mail<>日付とIDとBE<>本文<>
あぼーん<>あぼーん<>あぼーん<>あぼーん<>あぼーん
それと、dat落ちに備えてキャッシュ化機能を書いておくべきであると思う。若干不純ではあるものの、一応このキャッシュは.gitignoreから外しておこう。そうじゃないと復旧が厳しくなる。
CSSについて
とりあえずwhiteglassというテーマを使っているが、スマホ対応のためには、
<meta name="viewport" content="target-densitydpi=device-dpi, width=1000">
と設定してやる。するとスマホ側が自動でデフォ横幅を1000pxまで縮小してくれる。レスポンシブなんて糞食らえ。
フォントについて
フォントはChromeだとAA表示を崩すDirectWrite機能が強制有効なため、専用のフォントをWebフォントとして使う必要がある。それが、Saitamaarである。
ブックマークレットで iOS,Android 端末でも綺麗なアスキーアート(AA)を表示しよう!
作者の方は、このフォントをWebフォントとして読み込むブックマークレットを公開し、自分のサーバーからリンクで参照できるようになさっている。私も可能であれば、作者のサーバーから取ってくるようにしたかったが、彼のサーバーは残念なことにhttpで、httpsであるGithub Pagesからは参照できないというまさかの問題を抱えている。
仕方がないのでリポジトリに無断転載させて頂いたが、可能であれば転載の許可を出すかLet's EncryptやCloudFlare使ってHTTPS化してほしいと思う。
え?お前がTwitterで要望出しに行けって?ワイは優しい怪物の類やぞ?
追記(2017/11/05). SaitamaarのライセンスはMIT Licenseだそうです。コメント欄で@tar-binさんからご教授頂きました。ありがとうございました。