見出し画像

【プログラミング】【基本】JuliaでTwitter API2.0を使う.

休日でみんなもゴロゴロしてるのに 君はずいぶん忙しい顔をしてるネ
そうだいつかのあの場所へ行こう
                        ゆず「夏色」

はじめに

Juliaの発展にささやかな貢献できるように記事を書きたいと思います.
今回はプログラムを書く方なら一度はAPIを使用してみたいと思う,Twitterに関してです.僕もTwitterのデータが好きなので,論文を書く際のデータはTwitterのデータを使用しました.
また,Twitter.jl が存在しているみたいですが勉強を兼ねているのであえて使用しません.

TwitterのAPIには以下の3種類が存在しているみたいです.
(間違えていたらすみません)
・Twitter API OAuth1.0
・Twitter API OAuth1.0a
・Twitter API OAuth2.0
今回はOAuth2.0を使用します.まだ,OAuth2.0は新しくて,できないことが多いため,結局,OAuth1.0aを使用することが多いのですが,あえて2.0に関して書きます.
OAuth1.0a に関しても作成できているので,そのうち書きたいたいと思います.(こちらの方が需要が大きい気が)

<教えてください>
printなどした際に,req.bodyの中身が消えてしまいます.原因がわかる方がいましたら教えてください.(めちゃくちゃハマりました)
# 説明が雑ですみません.

# 例)
println(JSON.parse(String(req.body)))
println(req.body)
> UInt8[]

実際のプログラム

以下、実際に指定したユーザーのタイムラインを取得するプログラムです.
最新の5件を取得して,Tweet IDと内容を表示しています.

using Pkg

# 必要なパッケージのインストール
Pkg.add("HTTP")
Pkg.add("JSON")

using HTTP
using JSON

const USER_ID = "*** 自身のTwitter User id ***"
const BEARE_TOKEN = "*** Twitter 管理画面から取得 BEARE_TOKEN ***"

# max_resultで取得するツイート数を指定(MAXで200)
req = HTTP.request("GET",  "https://api.twitter.com/2/users/$USER_ID/tweets?max_results=5", ["authorization" => "Bearer $BEARE_TOKEN"])

# responseの値を取得 バイナリ形式
x = req.body

# 文字列変換
x_str = String(x)

# JSON形式
x_str_json = JSON.parse(x_str)

for i in 1:length(x_str_json["data"])
   println("-----")
   println(x_str_json["data"][i]["id"])
   println(x_str_json["data"][i]["text"])
end

補足 認証に関して

BEARE TOKENに関してはTwitter APIの管理画面から取得できるのですがCONSUMER KEYとCONSUMER SECRETを使用して取得することができます.流れとしては,
1.CONSUMER KEYとCONSUMER SECRETからBEARE TOKEN CREDENTIALS 生成
2.1.で生成したBEARE TOKEN CREDENTIALSを使用してBEARE TOKENを作成

const CONSUMER_KEY = "***Twitter API 管理画面から取得****"
const CONSUMER_SECRET = "***Twitter API 管理画面から取得****"

# CONSUMER_KEYとCONSUMER_SECRETを":"で結合し、ベース64でエンコード
const BEARE_TOKEN_CREDENTIALS = Base64.base64encode("$CONSUMER_KEY:$CONSUMER_SECRET")

# ヘッダーの作成
header =  Dict("Content-Type" => "application/x-www-form-urlencoded;charset=UTF-8"
    , "Authorization" => "Basic $BEARE_TOKEN_CREDENTIALS")

# POSTでBEARE TOKENを取得
HTTP.request("POST", "https://api.twitter.com/oauth2/token"
    , header
    , "grant_type=client_credentials"
)

beare_str = String(req.body)
beare_str_json = JSON.parse(beare_str)

# BEARE TOKENを取得
println(beare_str_json["access_token"])​

終わりに

Juliaでプログラミングをするように気づいたのですが,Juliaは圧倒的にドキュメントが少ないです.また,ドキュメント少ないせいかすごく難しく感じてしまい,プログラミング初心者が導入するのはかなり厳しいかなと思います.今後も自分の学習,初心者の方の導入のためにこだわった記述よりも一先ず動くシンプルな記述を意識してきたいと思います.
(僕もJuliaの発展貢献度日本ランキング50,000位以内くらいには入れていますかね)

何か,リクエスト(リアクション)いただけたら嬉ションです.
今年の夏はどんな夏になるかな.

いいなと思ったら応援しよう!

hideyuki.takase
PCとスマホ,wifiだけを持って全国をのんびり旅したい.