Tweepyで複数画像のツイートからの画像取得

2枚目以降もstatus.entitiesに入ってるものだと思って長い間探していたんですが、2枚目以降も含んだデータはstatus.extended_entitiesに格納されてたようで、徒労感…

画像を取得した後はurllibを用いて「ID+(0~3の番号).jpg」という形で保存します。

動画とか入ってた場合とかの対処を端折りたかったので雑に握りつぶしてしまってるのでそこは良くないと思う…

tweepyとurllibのimportを忘れずに。

API~前の認証周りは前記事で書いてあります。

tweepyで認証して認証情報を保存するだけのスクリプト

tweepyを使う機会が増えたので、認証部分だけ分割してみたメモ

これで実行してPINを入力すると同じディレクトリにaccount.dbが作られます。(すでにある場合上書きされる)

トークンの使用期限は今のところないようなのでとりあえずこんな感じで。

コンシューマキーとシークレットは各自で差し替えで(↓記事参照)

 

使用例(トークンの入ったaccount.dbは同一ディレクトリにあるようにする)

最後の一行以外が認証部分になります。

account.dbにデータがない場合、エラーメッセージを吐いて終了するようになっています。

twitterOAuthを使ってPHPでTwitter連携

2015年7月に動作確認しています。

 

の続きです。

Authorize.php(認証用URLの生成)

Callback.php(アクセストークンの取得、保存)

Tweet.php(ツイートの投稿、プロフィールの取得)

 と遷移するページを作ります。説明がわかりづらいしめんどくさい場合は一番下のgithubのコードを見たほうがよく分かるかもしれません。

twitterOAuthのインストール

  • twitterOAuthのgithubページから、最新版をダウンロード(2015年7月現在0.5.3)

  • 解凍したフォルダを"twitterOAuth"にリネームし、下の様に、認証ページのPHPと同ディレクトリにフォルダを配置する(最終的なディレクトリ構造は↓)
  • example/

    ├ twitterOAuth/

    ├ authorize.php

    ├ callback.php

    ├ tweet.php

    └ initialize.php 

初期設定(initialize.php

  • Twitterで登録したアプリケーションのコンシューマキー、コンシューマシークレット、そして認証後にコールバックするURLを設定したphpファイルを作成します。アプリケーションを登録してない場合は下のリンクを参考に登録しましょう。

  • 今回コールバックするのは"callback.php"ですが、相対パスだと認証が上手く通らないので、URLの形式で表記します(localhost直下の場合、http://localhost/example/callback.php等)

    Initialize

認証用URLの生成ページ作成(authorize.php

  • アプリケーションのConsumerKeyとConsumerSecretを用意する[URL]
  • 公式ドキュメントの通りにコードを入力するとうごきます(丸投げ)

  • 一応自分が書いたコードを貼り付けて起きます、上記とほとんど変わりませんが、コンシューマキー等の入力を共通化するために外部(initialize.php)から読み込んでいます。

  • 上手く実行できると、Authorizeのリンクを押すとTwitterの認証ページに行くことが出来ます。

    f:id:qrbys:20150716150107p:image

    f:id:qrbys:20150716144759p:image

アクセストークンの取得、保存(callback.php

  • 連携アプリを認証した後、コールバック先でアクセストークンを取得し、セッション関数に保存します。

  • 実行すると、認証後にTweetリンクが表示されたページに飛ぶことが出来ます。

    f:id:qrbys:20150716145220p:image

ツイート、アカウントプロフィールの取得(tweet.php

  • callback.phpで保存したアクセストークンを使い、"Hello,world!"と呟き、プロフィールを取得します。

    f:id:qrbys:20150716145635p:image

    f:id:qrbys:20150716220129p:image

 

 

以上でtwitterOAuthを用いた認証からツイートまでは終了です、これでセッションにトークンが一時的に保存されるので、セッションが破棄されるまでは認証を繰り返さずにAPIの仕様が出来ます。

今回使用したファイルは全てgithubにあげているので、参考になれば使ってください。

Twitterの開発者用アプリ登録

2015年7月に動作確認しています。

PHPのtwitterOAuthを使用する前準備として書いています。

  • "Create New App"をクリックf:id:qrbys:20150715202603j:image
    • Name:アプリケーション名
    • Description:説明、10~200文字
    • Website:ホームページ、yorufukurou等ではviaをクリックしたらここで指定したURLに飛びます
    • Callback URL:コールバック用のURL、スクリプト側で指定できるので何でもいいですが、入力しなかった場合Desktop用アプリケーションと判定され、Webアプリケーションだと認証が上手く行かなくなるので、Webアプリケーションで使う場合は入力しておきましょう(私はWebsiteと同じURLにしています)

     

    f:id:qrbys:20150715210834j:image

※アプリの追加に電話番号が必須になったため、アカウントに電話番号が登録されてない場合↓のような表示が出ます、設定のモバイルから追加しましょう

 

f:id:qrbys:20150715211156j:image

  • うまくいくとアプリの設定ページに飛ぶので、"Key and Access Tokens"をクリックします

     

    f:id:qrbys:20150715211632j:image

  • このページのConsumerKeyとConsumerSecretが認証に必要なコードになります

     

    f:id:qrbys:20150715211730j:image

  • デフォルトの設定だと、ツイートの取得と投稿のみが可能ですが、Permissionsタブより変更可能です。

 

Pythonでネット上の画像をダウンロードする

URL先の画像を指定したディレクトリに保存する。

save_directoryに保存先の絶対パス、URLに保存するURLを入れる

ファイル名はURLをそのまま使うので、"hoge.com/foo.jpg"とかだと、ファイルはfoo.jpgで保存される