あんりふ!

スマホ、タブレット、PC、Amazon、Windows etc...お得情報やHow toブログ

WSL版Ubuntu16.04とPython3とTwitterAPIでつぶやく方法

Windows 10のWSLのUbuntu 16.04とPython 3.5.2とTwitter APIを使ってツイートする方法と、タイムラインのツイートをコマンドラインに表示する方法をシェアします。

f:id:ahiru8usagi:20180412213905j:plain

0.用意する環境や準備

今回用意した環境は以下のとおり。

・Windows 10 バージョン1709
・(WSL)Ubuntu 16.04
・Python 3.5.2 (仮想環境導入済)
・Twitter API:キーとトークン

Windows 10にWSLのUbuntu 16.04をインストールする方法と、Python 3.5.2の仮想環境を整えるまでの手順は以下の記事をご参照のこと。

ahiru8usagi.hatenablog.com

ahiru8usagi.hatenablog.com

Twitter APIのキーとアクセストークン取得がまだの場合は以下記事の手順で取得しておきます。

ahiru8usagi.hatenablog.com

Twitterキーとアクセストークンを環境変数ファイルに保存

Twitterのキーとアクセストークンは環境変数ファイル(.env)に保存しておきます。

CONSUMER_KEY=aaaa
CONSUMER_SECRET=bbbb
ACCESS_TOKEN=cccc
ACCESS_TOKEN_SECRET=dddd

※aaaa~ddddの部分にTwitterAPIで取得した自分のキーとアクセストークンを保存

『.env』ファイルはUbuntuユーザーフォルダ直下にあります(隠しファイルとなっている場合あり)。

C:\Users\【Windowsユーザー名】\AppData\Local\Packages\
CanonicalGroupLimited.UbuntuonWindows_*\
LocalState\rootfs\home\【Ubuntuユーザー名】\.env

『.env』ファイルがない場合はテキストエディタで作成します。

環境変数ファイル(.env)からキーとアクセストークンを読み込むようにすれば、スクリプトファイルを公開してもキーとアクセストークンを知られずに済みます。

foregoとtweepyをインストール

foregoというツールを使って環境変数ファイル(.env)からキーとトークンを読み込むので、foregoをインストールします。

$ wget https:// bin. equinox. io/ c/ ekMN 3 bCZFUn/ forego-stable-linux-amd 64. deb
$ sudo dpkg -i forego-stable-linux-amd 64. deb

またPython3対応のtweepyというライブラリを使います。

$ pip install tweepy

 

1.Python3とTweepyでつぶやく手順

Python3を使ってつぶやくスクリプトはこんな感じ。

import os
import tweepy

CONSUMER_KEY = os.environ[CONSUMER_KEY]
CONSUMER_SECRET = os.environ[CONSUMER_SECRET]
ACCESS_TOKEN = os.environ[ACCESS_TOKEN]
ACCESS_TOKEN_SECRET = os.environ[ACCESS_TOKEN_SECRET]

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

tweet_text = "WSL版Ubuntu16.04とPython3.5.2とTwitterAPIでつぶやきテスト"

api = tweepy.API(auth)
api.update_status(tweet_text)

Ubuntuユーザーフォルダ直下に上記スクリプトファイル(仮にtest_tweet.py)を保存したらUbuntuを起動し、環境変数ファイル(.env)とスクリプトファイル(.py)に最低でも読込権限を付与します。

$ chmod 400 .env
$ chmod 400 test_tweet.py

次に仮想環境(仮にtest_venv)にアクティベート。

$ . test_venv/bin/activate

そしてforegoを使ってスクリプトファイルを実行します。

(test_venv) $ forego run python test_tweet.py

コマンドラインに何も表示されなければOK。

自分のTwitterアカウントを見てちゃんとつぶやけているか確認しましょう。

 

2.Python3とtweepyでタイムラインを表示する手順

Python3でタイムラインのツイートをコマンドラインに表示するスクリプトはこんな感じです。

import os
import tweepy

CONSUMER_KEY = os.environ[CONSUMER_KEY]
CONSUMER_SECRET = os.environ[CONSUMER_SECRET]
ACCESS_TOKEN = os.environ[ACCESS_TOKEN]
ACCESS_TOKEN_SECRET = os.environ[ACCESS_TOKEN_SECRET]

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
public_tweets = api.home_timeline()

for status in public_tweets:
print(@ + status. user. screen_name, status.text)

Ubuntuを立ち上げ環境変数ファイル(.env)と上記スクリプトファイル(仮にrest_timeline.py)に読込権限を付与。

$ chmod 400 .env
$ chmod 400 rest_timeline.py

仮想環境(仮にtest_venv)にアクティベートし、foregoを使ってスクリプトファイルを実行します。

$ . test_venv/bin/activate
(test_venv) $ forego run python rest_timeline.py

タイムラインに流れるツイートがコマンドラインに表示されます。

 

おわりに

以上、Python3とTwitter APIを使ってつぶやきのテストとタイムラインの表示でした。Windows 10上のUbuntu 16.04でもきちんと動作していて面白いです。