ココログのカテゴリーのアーカイブから記事一覧を作るVBScript
カテゴリ別書評一覧の新装開店の詳細その4。
【はじめに】
カテゴリ別書評一覧を作り替える際、ついでに少し体裁を変えた。記事は千件以上あるので、手作業でじゃやってられない。そこで、各カテゴリーのアーカイブから一覧を作る VBScript を書いた。
【もう少し詳しく】
各カテゴリーの頁の HTML は、次の構成だ。最新の10記事は全文を載せ、11記事目より前の記事はリンクだけが載っている。
¦
¦ なんかいろいろ
¦
記事1の全文
記事2の全文
記事3の全文
…
記事10の全文
¦
¦ なんかいろいろ
¦
記事11へのリンク
記事12へのリンク
記事13へのリンク
…
記事xへのリンク
¦
¦ なんかいろいろ
¦
これから、各記事のタイトル・URL・日付を抜き出し、次の形の HTML を作る。
<li>記事1の日付 <a href="記事1のURL">
記事1のタイトル</a></li>
<li>記事2の日付 <a href="記事2のURL">
記事2のタイトル</a></li>
<li>記事3の日付 <a href="記事3のURL">
記事3のタイトル</a></li>
…
<li>記事10の日付 <a href="記事10のURL">
記事10のタイトル</a></li>
<li>記事11の日付 <a href="記事11のURL">
記事11のタイトル</a></li>
<li>記事12の日付 <a href="記事12のURL">
記事12のタイトル</a></li>
<li>記事13の日付 <a href="記事13のURL">
記事13のタイトル</a></li>
…
<li>記事xの日付 <a href="記事xのURL">
記事xのタイトル</a></li>
ちなみに、記事1~記事10は、次の形になっている。
¦
¦ なんかいろいろ
¦
<h2>記事?の日付</h2> ¦
¦ なんかいろいろ
¦<h3><a href="記事?のURL">記事?のタイトル</a></h3>
¦
¦ なんかいろいろ
¦
記事11~記事xの形は以下。
<li class="archive-list-item"><a href="
">記事?のURL
</a> <span class="archive-list-date">記事?のタイトル
記事?の日付
</span></li>
要はテキスト・フィルタですね。必要な所を正規表現で見つけ出し、都合のいい形に直して書き出してるだけ。
【インストール】
この記事の末尾にあるスクリプトを、ctindex.vbs などの名前で保存する。
【使い方】
- 各カテゴリーをブラウザで開き、その HTML を cat1.html などの名前で保存する。
- cat1.html を、ctindex.html にドラッグ&ドロップする。
→ cat1.html.txt ができる。 - テキスト・エディタで cat1.html.txt に見出しや <ol>~</ol> などを付け加えてください。
【スクリプト】
' 2018.01.266 カテゴリHTMLから索引頁を作る
Option Explicit
Dim WSH : Set WSH = WScript.CreateObject("Wscript.shell")
Dim FSYS : Set FSYS = WScript.CreateObject("Scripting.FileSystemObject")
' ダブルクリックで起動したら使い方を示して終わる
if WScript.Arguments.length <> 1 then
Call MsgBox( "Drag&DropしたファイルLから索引頁を作る" )
WScript.Quit
end if
' D&Dしたファイル名からフルパスと親フォルダを得る
Dim iName : iName = WScript.Arguments.Item(0) ' D&Dしたファイルのフルパス
Dim iFolder : iFolder = FSYS.getParentFolderName( iName ) & "\" '親フォルダ名
' D&D したファイルを開く
Dim iHandle : Set iHandle = CreateObject("ADODB.Stream")
iHandle.Type = 2 ' text mode
iHandle.charset = "utf-8"
iHandle.LineSeparator = 10 ' lf
iHandle.open
iHandle.LoadFromFile iName '入力ファイルを読み込む
If Err.Number <> 0 Then
Call MsgBox( "Code:" & Err.Number & " :Can not open " & iName )
WScript.Quit
end if
Dim hDate, hURL, hTitle, rDate, rTitle, rList, oBuf
Set rDate = new RegExp : rDate.IgnoreCase = True '<h2>日付</h2>
Set rTitle = new RegExp : rTitle.IgnoreCase = True '<h3><a href=URL>記事名</a></h3>
Set rList = new RegExp : rList.IgnoreCase = True '<li class=..>
rDate.pattern = "^.*<h2>(\d+)[^\d]+(\d+)[^\d]+(\d+).*</h2>.*$"
rTitle.pattern = "^.*<h3><a href=.([^>]+).>([^<]+)</a></h3>.*$"
rList.pattern = "^<li class=.archive-list-item.><a href=.(.*).>(.*)</a>.*<span .*>(.*)</span></li>$"
Do While iHandle.EOS = False
Dim line : line = iHandle.ReadText( -2 )
' <h2>日付</h2>
if rDate.Test( line ) then
hDate = rDate.Replace( line, "$1" & "." & "$2" & "." & "$3" )
end if
' <h3><a href=URL>記事名</a></h3>
if rTitle.Test( line ) then
hURL = rTitle.Replace( line, "$1" )
hTitle = rTitle.Replace( line, "$2" )
oBuf = oBuf & "<li>" & hDate & " <a href=""" & hURL & """>" & vblf & hTitle & "</a></li>" & vblf
end if
' <li class=..><a href=URL>記事名</a> <span..>日付</span></li>
if rList.Test( line ) then
hURL = rList.Replace( line, "$1" )
hTitle = rList.Replace( line, "$2" )
hDate = rList.Replace( line, "$3" )
oBuf = oBuf & "<li>" & hDate & " <a href=""" & hURL & """>" & vblf & hTitle & "</a></li>" & vblf
end if
Loop
' 結果の書き出し
Dim oHandle
Set oHandle = CreateObject("ADODB.Stream")
oHandle.Charset = "UTF-8"
oHandle.Open
oHandle.WriteText oBuf, 0
oHandle.SaveToFile WScript.Arguments.Item(0) & ".txt", 2 '上書き
iHandle.Close
oHandle.Close
Call MsgBox( hDate )
【おわりに】
改めて考えると、「複数のカテゴリーを一度で処理できりゃ楽なんじゃね?」とか「いっそカテゴリーのHTMLもスクリプトで取ってこいや」とか、改善の余地はいろいろあるけど、とりあえず役に立ったから良しとしよう。
【関連記事】
- 2018.2.4 カテゴリ別書評一覧の新装開店
- 2018.2.5 ココログ(Typepad)のバックアップを複数のファイルに分けるVBScript
- 2018.2.7 ココログの記事一覧で大量の記事を一度に選ぶ
- 2018.2.8 ココログでスマートフォン対応アコーディオン式メニュー但し反則技
- 2018.2.12 ココログのカテゴリーのアーカイブから記事一覧を作るVBScript
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- サミュエル・ウーリー「操作される現実 VR・合成音声・ディープフェイクが生む虚構のプロパガンダ」白揚社 小林啓倫訳(2021.07.11)
- ココログ:記事編集で余分な改行が入る→初期設定を通常エディタにする(2019.10.10)
- Q.Ethan McCallum「バッドデータ ハンドブック データにまつわる問題への19の処方箋」オライリージャパン 磯蘭水監訳 笹井崇司訳(2019.06.07)
- ココログ:リンク切れ一覧と旧URL一覧と公開記事URL一覧を突き合わせるOpenOfficeCalc(2018.11.18)
- ココログ:古い「カテゴリ別書評一覧」から各記事の旧URL 一覧を作るVBScript(2018.11.15)
コメント