2013年10月3日木曜日

[Blogger]Blogger の記事を整形するVBScript(画像を横並びに編集.vbs)

このように画像を横並びに編集するのに私が使っているスクリプトです。


使い方

まずは Blogger の編集で横に並べたい画像を本文に挿入します。

2個画像を並べたいので、【2】と書いてます。【3】と書けば3個の画像を横に並べます。

「HTML」編集に切り替えて、文字列をコピーし、テキストファイルに貼り付けて保存します。
HTML 編集画面で文字列コピー
テキストファイルに文字列貼り付け

テキストファイルの文字コードは「ANSI」と「Unicode」なら大丈夫です。

そしたらテキストファイルを VB スクリプトに ドラッグ&ドロップ します。

新しいファイルが作成されるので、そのファイルの文字列を再度 Blogger にコピーして貼り付けます。

そうすると画像が横に並びます。

スクリプト

私が作ったスクリプトはこんな感じ。

画像を横並びに編集.vbs 'ドラッグ&ドロップしたテキストファイルを変換します。
'
' ・テーブルを作って画像を並べたい所に【2】または【3】のキーワードを入れる
' ・Youtubeのサイズの変更をする
' ・変換後のファイル名は元のファイル名_new

'引数のファイルを取得
Set args = WScript.Arguments
strFileName = args(0)

'変換後のファイル名 = 元のファイル名_new
pos = InstrRev(strFileName, ".")
strDistFile = Left(strFileName,(pos-1)) & "_new" & Mid(strFileName, pos)

'オブジェクトの生成
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, 1, false, -2)
Set objFile_Dist = objFSO.CreateTextFile(strDistFile, true, true)

'正規表現オブジェクトを生成
Set regEx = New RegExp

'初期処理
flgTable2 = False
flgTable3 = False
TableCount = 0
i = 0
j = 0

'元ファイルから一行ずつ読み込み、正規表現による文字列処理
Do While (objFile.AtEndOfStream <> True)
  strLineData = objFile.ReadLine

  If (Trim(strLineData) = "【2】<br />") or _
     (Trim(strLineData) = "【2】<br />") or _
     (Trim(strLineData) = "&nbsp;【2】<br />") or _
     (Trim(strLineData) = "&nbsp;【2】<br />") Then
    If flgTable2 or flgTable3 Then
      MsgBox "【2】の使い方がおかしいです。"
      WScript.Quit
    End If
    flgTable2 = True
    TableCount = 0
    i = i + 1
    objFile_Dist.WriteLine("<table align=""center"" border=""0"">")
    objFile_Dist.WriteLine("<tbody>")
    objFile_Dist.WriteLine("    <tr>")
    strLineData = ""

  ElseIf (Trim(strLineData) = "【3】<br />") or _
         (Trim(strLineData) = "【3】<br />") or _
         (Trim(strLineData) = "&nbsp;【3】<br />") or _
         (Trim(strLineData) = "&nbsp;【3】<br />") Then
    If flgTable2 or flgTable3 Then
      MsgBox "【3】の使い方がおかしいです。"
      WScript.Quit
    End If
    flgTable3 = True
    TableCount = 0
    j = j + 1
    objFile_Dist.WriteLine("<table align=""center"" border=""0"">")
    objFile_Dist.WriteLine("<tbody>")
    objFile_Dist.WriteLine("    <tr>")
    strLineData = ""

  ElseIf Trim(strLineData) = "<br />" Then
    If flgTable2 or flgTable3 Then strLineData = ""

  ElseIf Left(strLineData, 5) = "<div " Then
    If flgTable2 or flgTable3 Then strLineData = ""

  ElseIf Right(strLineData, 6) = "</div>" Then
    If flgTable2 or flgTable3 Then
      strLineData = Left(strLineData, Len(strLineData)-6)

      If Left(strLineData,3) = "<a " and Right(strLineData,4) = "</a>" Then
        objFile_Dist.WriteLine("      <td>" & strLineData & "</td>")
        TableCount = TableCount + 1

        If (flgTable2 and TableCount = 2) or (flgTable3 and TableCount = 3) Then
          objFile_Dist.WriteLine("    </tr>")
          objFile_Dist.WriteLine("</tbody>")
          objFile_Dist.WriteLine("</table>")
          TableCount = 0
          flgTable2 = False
          flgTable3 = False
        End If

        strLineData = ""
      Else
         MsgBox "【2】または【3】の使い方がおかしいです(画像じゃないデータ)。" & vbCrLf & strLineData
         WScript.Quit
      End If

    End If
  Else
    If flgTable2 or flgTable3 Then
      MsgBox "【2】または【3】の使い方がおかしいです(想定外のデータ)。" & vbCrLf & strLineData
      WScript.Quit
    End If
  End If

  If Trim(strLineData) <> "" Then objFile_Dist.WriteLine(strLineData)
Loop

MsgBox "画像を2個並べる処理( " & i & " 個)" & vbCrLf & "画像を3個並べる処理( " & j & " 個)" & vbCrLf & "処理しました。"


Blogger Tips のページに戻る

0 件のコメント:

コメントを投稿