目的
取得したツイートをブログに張り付ける用に埋め込みコード(embedコード)を取得したい。
これができるようになれば、ブログ更新の半自動化ができる・・・と思う。
python-twitterモジュールを利用する
tweepyを使ってツイート検索などをしているため、できればtweepyでembedコードの出力までやりたかったのだが、スキル不足か英語力不足か、そのようなメソッドをtweepyに見つけることができなかった。
ので、別のモジュールを利用してembedコードを取得する。
今回はpython-twitterというものを利用することとする。
インストール
$ pip install python-twitter
いつも通りpipでインストールすることができる。
インポート
モジュールをインポートする際はpython-twitterではなくtwitterとしてインポートする必要があるので注意。
import twitter
これでpython-twitterモジュールを利用することができるようになる。
oembedメソッド
embedコードの取得にはapi.statuses.oembed(url=’url’)を利用する。
urlとはツイートのurlであり、構造は以下のようになっている。
https://twitter.com/<screen_name>/status/<id>
screen_nameやidについては以前の記事にて紹介しているので割愛。
サンプルプログラム作成
簡単なものを作成してみる。
# coding:utf-8
import twitter # python-twitterモジュール
import config # コンフィグ読み込み
def authTwitter():
### Twitter API KEY
Consumer_key = config.Consumer_key
Consumer_secret = config.Consumer_secret
Access_token = config.Access_token
Access_secret = config.Access_secret
auth = twitter.OAuth(consumer_key = Consumer_key,
consumer_secret = Consumer_secret,
token = Access_token,
token_secret = Access_secret)
t = twitter.Twitter(auth=auth)
return(t)
def getEmbed(url):
# API認証
t = authTwitter()
embed = t.statuses.oembed(url = url)['html']
return(embed)
def main():
emb = getEmbed('https://twitter.com/vatch_px/status/1140286597541158917')
print(emb)
if __name__ == "__main__":
main()
認証用の情報(API KEYなど)はconfig.pyに書いて別ファイルとして読み込むようにした。
認証の方法はtweepyと同じで、それぞれのKEY情報を引数にインスタンス化する。
出力結果
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">久しぶりにBF5やったら面白すぎたのでこのゲームでFPS慣れてこ</p>— ばっち (@vatch_px) <a href="https://twitter.com/vatch_px/status/1140286597541158917?ref_src=twsrc%5Etfw">June 16, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
htmlとして張り付けるとこんな感じとなる。
久しぶりにBF5やったら面白すぎたのでこのゲームでFPS慣れてこ
— ばっち (@vatch_px) June 16, 2019
補足
Twitterのつぶやきをブログなどに転載することは、TwitterAPIを利用してのものであれば良いらしい。(Twitterガイドラインより)
ただし、APIを使わずに内容を転記したり、中身を編集したりするのは違反になる可能性があるためやめておいたほうが良い。
今回のものも、embed取得APIを使わずとも同じようなhtmlタグを使って転載することは可能は可能なのだが、ガイドライン違反になる可能性があったため、別モジュールを使ってでもAPIをたたいてembedコードを取得する必要があった。
コメント