#### 埋め込みツイートのoembedメソッドの変換に失敗して,5分割にした「金沢弁護士会のTwitterアカウントを探すため,Twitterで検索をしたところでの宮西香金沢弁護士会会長の会長声明の発見」という記事

:CATEGORIES: TwitterAPI,Ruby

 昨夜に問題が発生して,原因を探しまくり,スクリプトの修正や検証用のスクリプトの作成,実行を繰り返していたのですが,最終的にはoembedメソッドで一度に処理するツイートの数が多すぎるとエラーが起こるらしいとわかりました。

463:2020-05-19_21:01:03 #### 「宮西 香弁護士(弁護士法人金沢合同法律事務所) - 石川県金沢市 - 弁護士ドットコム」での発見,強盗殺人事件 https://hirono-hideki.hatenadiary.jp/entry/2020/05/19/210101

 上記の記事が昨夜最後の投稿で,この次の投稿でエラーが起こるようになったのですが,今見ると21時01分という最後に成功した投稿で,実に長い時間,この問題に取り組み対処をしていたことになります。

 メソッドの使い方がちょっと変わっていてエラーの補足が困難ということもあったのですが,どう調べても原因のツイートを発見することが出来ず,一度に処理するツイートの数を疑うようになったのです。

 エラーがでないか範囲を絞りながら分割を行い,最終的に次の5つの投稿に分けたことで,全部の内容を投稿することができました。

464:2020-05-20_09:44:31 #### 金沢弁護士会Twitterアカウントを探すため,Twitterで検索をしたところでの宮西香金沢弁護士会会長の会長声明の発見(1) https://hirono-hideki.hatenadiary.jp/entry/2020/05/20/094428
465:2020-05-20_09:48:36 #### 金沢弁護士会Twitterアカウントを探すため,Twitterで検索をしたところでの宮西香金沢弁護士会会長の会長声明の発見(2) https://hirono-hideki.hatenadiary.jp/entry/2020/05/20/094830
466:2020-05-20_10:00:34 #### 金沢弁護士会Twitterアカウントを探すため,Twitterで検索をしたところでの宮西香金沢弁護士会会長の会長声明の発見(3) https://hirono-hideki.hatenadiary.jp/entry/2020/05/20/100031
467:2020-05-20_10:01:41 #### 金沢弁護士会Twitterアカウントを探すため,Twitterで検索をしたところでの宮西香金沢弁護士会会長の会長声明の発見(4) https://hirono-hideki.hatenadiary.jp/entry/2020/05/20/100134
468:2020-05-20_10:04:41 #### 金沢弁護士会Twitterアカウントを探すため,Twitterで検索をしたところでの宮西香金沢弁護士会会長の会長声明の発見(5) https://hirono-hideki.hatenadiary.jp/entry/2020/05/20/100436

content.gsub!(/^- (?:TW|RT) .+ URL: (https?:\/\/[^ ]+?) +$/){@twclient.oembed($1).html.chomp}

 他にも設定が必要ですが,上記のコードでツイートのURLを埋め込みツイートのHTMLに変換しています。これはテキスト内で正規表現のパターンにマッチした全てのツイートに変換を行うことになるので,その数が多すぎるとエラーが出ました。

 1つのブログ記事あるいは1つのページに埋め込みツイートの数が多すぎると,埋め込みツイートのデザインが適用されないことがあったので,他のスクリプトでは,自分で埋め込みを使うツイートは199件までという制限を掛けていました。

 また,APIでの投稿時にHTMLやCSSのタグに変換しているので,もとのテキストファイルは影響を受けず,テキストのHTMLタグが混じるということもありません。自分で書式を決めれば,色々な変換が出来ます。

 わかりやすいのは次の方法で,3つのバッククオートに囲まれた範囲を引用文として,全ての行頭に記号を付加しています。これでないと引用のスタイルが適用できない場合もあったので作ったものですが,通常はHTMLのblockquoteタグを使うことが多いです。

content.gsub!(/```(.+?)```/m) {">《引用の始まり》\n\n#{$1.gsub(/^/,'> ')}\n\n>《引用の終わり》"}

 前に作ったLaTeX用のものだと,字下げをして文字サイズを小さくするだけで,次のような処理になりました。本当はTexのマクロを作って,もっときめ細かく処理をしたいのですが,時間も掛かりそうなので先延ばしにしています。それに当面はPDFファイルの必要性も考えていません。

content = content.gsub(/\\begin{verbatim}(.+?)\\end{verbatim}/m) \
        {"\\begingroup\\fontsize{9pt}{10pt}\\selectfont\n\\begin{quote}\n\\begin{verbatim}\n#{$1}\n\\end{verbatim}\n\\end{quote}\\endgroup
\n"}