{Python}自分のTLの画像を保存する(2)

前回の記事では、TwitterAPIにリクエストを送信し結果の格納されたレスポンスを得るところまでやりました。
この記事では、そのレスポンスから必要な情報を取り出し、必要なツイートを選別する処理について書きます。

環境等

  • win 10
  • python2.x
  • python lib: json
  • python lib: re

JSONデータを辞書型に変換する

まず、例として以下のパラメーターでeverykey_ckのアカウントのタイムラインから最新の2件のデータを取得してみます。

今$reqの中には以下の2件のツイートの情報が入っているはずです。
1件目が文字のみの自分のツイート、2件目が4枚の画像が添付されているフォロイーのツイートです。

$reqの中に確かにデータは入っていますがこのままでは読むことできません。
pythonで処理できるようにloads関数を使って辞書型に変換します。

#JSONを辞書型に変換

loads関数で$reqの中身を辞書型に変換し$timelineに格納します。

#中身を確認

画像を保存するプログラムでは必要ありませんが、ここでは試しに変換した中身をのぞいてみます。
json.dumps()を使うことで簡単にインデント付きに整形された中身を出力することができます。
実際の出力結果に注釈を加えたものが以下です。
「XXX」はフォロイーの個人情報を私が置き換えたものです。長いです。

#ツイート本文

日本語や韓国語の場合、unicode文字列がエスケープされて格納されています。
一見して内容を確認することができません。
ちょっと見てみたいときは、http://0xcc.net/jsescape/で、エスケープされた文字列を「\uXXXX」の欄に貼り付けると、元の文字列を確認することができます。

#user情報

trim_user:trueに設定したため、ここではidのみの情報しかありません。
ツイートしたユーザーの@xxxx(数字ではないもの)を取得したいとき等はfalseにして全ユーザー情報を取得する必要があります。
falseにすると”user”: { (略) }部分が以下のような長いものに入れかわります。


必要なデータを取り出す

それでは、このデータから必要なデータを取り出してみます。
各要素へのアクセスの仕方は通常の辞書型配列と同じです。上のレスポンスを見て取り出したい要素の階層とキーを確認してください。
取り出したデータは、画像DLの処理に入る前にDLが必要なツイートとそうでないツイートを選別するために使います。

ここでは、以下のツイートを排除対象として、1件ずつ、排除対象に該当しないかを見ていきます。

  • 添付ファイルのないツイート
  • 日付記載のないツイート

  • if条件に当てはまったツイートは、その時点でcontinueによって処理を終了し、次のツイートの処理に入ります。
    全てのif条件に当てはまらなかったツイートだけにDL処理を行います。
    取り出すデータと条件設定によってかなり自由に添付を保存するツイートの選別を行えると思います。
    次のエントリでは、添付ファイルをローカルにDLする処理を行います。

    Leave a Reply

    Your email address will not be published. Required fields are marked *