退院後の初gem情報です
tweet_sanitizer (0.1.1): sanitize tweet https://t.co/UqzO7kcdRC
— RubyGems (@rubygems) 2017年8月16日
どんなgemか?
full_text
(140文字より長いツイート)があればそれを積極的に使う- 短縮URLの t.co を元のURLに戻す
- ツイートの末尾に含まれてる添付画像などのURLを除去
>
や<
が>
や<
などにエスケープされているので、エスケープを解除
などのサニタイズ処理を行います
モチベーション
Twittodon のロジックをgem化しています
twittodonのツイートのサニタイズ周りの処理にバグがあったんですが、
という理由でgem化してテストコードをリファクタリングしつつバグ修正しました *1
使い方
tweet_sanitizerを使わない場合
普通に twitter のgemを使った場合
tweet = @client.status("https://twitter.com/github/status/866677968608927744") tweet.text #=> "Introducing GitHub Marketplace, a new place to browse and buy integrations using your GitHub account.… https://t.co/dK0Tmcmm72"
tweet_sanitizerを使った場合
using TweetSanitizer::TwitterExtension extended_tweet = @client.status("https://twitter.com/github/status/866677968608927744", tweet_mode: "extended") extended_tweet.sanitized_text #=> "Introducing GitHub Marketplace, a new place to browse and buy integrations using your GitHub account. https://github.com/blog/2359-introducing-github-marketplace-and-more-tools-to-customize-your-workflow"
using TweetSanitizer::TwitterExtension
すると生える #sanitized_text
でいい感じにサニタイズできます
ツイート取得時の tweet_mode: "extended"
がないと前述の full_text
がレスポンスで返ってこないので必須です
#status
メソッド以外でもツイートを取得しそうなAPI(#search
とか)のオプションに tweet_mode: "extended"
を渡せばたいてい対応してます
参考
Upcoming changes to Tweets — Twitter Developers
詳しくはREADME読んでください