その1(環境構築編)はこちら
その3(簡単なプログラム作ってみた編)はこちら
※筆者がTwitter APIに触れたのは2018/12/06〜2018/12/08くらいです。
TwitterAPIは仕様変更がたびたび起こっているみたく…。
今のTwitterAPIの仕様とは色々と異なる場面もあるかもしれません。ご了承ください。
前回のおさらい
前回までで、TwitterAPIを使うための「APIキー」を入手するところまでやりました。
今回はその続き…実際のコーディング段階に入っていこうと思います。
APIを使って色々しよう
APIキーを取得した!さぁコーディングだ!!
…と思ったのですが、次に何をすればいいのやら…。
まぁこんな時はGoogleさんですね。
「TwitterAPI」で、色々検索し記事を見ていく事にしました。
同じ事をなされた方のを参考にプログラミング
ググっていくと何と、自分がやろうとしている事とほぼ全く同じ事をなされた記事を発見しちゃいました!
どうやらここの記事主さんはNode.jsを使っているみたいで…。
http://pppurple.hatenablog.com/entry/2016/04/02/204119
おまけに、ここの記事にはソースコードまで書かれてあり…何という神…。
そしてそのソースコードもGithubに置かれているっていう。もうもう何という…。
最大限の感謝をしつつ、この記事のソースコードを参考にしながら…。
無事にソースコードを完成させることができました!
早速走らせましょう!
Node.jsプログラム実行準備
さて、まずはNode.jsプログラムを走らせるところから。
ターミナルを開き、依存性のあるnpm
モジュールをインストール…。
npm install twit npm install long npm install request
そして完成したソースコードがあるディレクトリへ行き、node ファイル名.js
を実行!
…どうかなどうかな…。
エラー発生
はい、エラー発生しました。
エラー容はこんな感じのが…。
$ node dlTwitterUserImages.js 1 : http://pbs.twimg.com/media/DtsZpfQU0AArtcC.jpg 2 : no image ... 1082 : http://pbs.twimg.com/media/CyUf01CUUAAgey6.jpg { Error: getaddrinfo ENOTFOUND pbs.twimg.com pbs.twimg.com:80 at errnoException (dns.js:50:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26) code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'pbs.twimg.com', host: 'pbs.twimg.com', port: 80 } ...
一応画像ファイルはいくつか生成されたのですが、その大半が中身0バイトの空ファイルしかない状態に…どうしたものか…。
早速エラー内容でググり、参考になりそうな記事を探してみました。
https://hdykokd.github.io/posts/npm-getaddrinfo-enotfound/
どうやらDNSの名前解決に失敗しているっていうエラーらしく。
今回でいうとpbs.twimg.com
へアクセスするための名前解決に失敗したって感じみたいです。
記事をみた感じ、下記のような手順で解決なさっていたので…。
nslookup
で目的となるサーバー(今回はpbs.twimg.com
)のIPアドレス名を取得/etc/hosts
にIPアドレス名 pbs.twimg.com
という行を追記
早速試してみました。
IPアドレスを調べ、アドレス内容を/etc/hosts
に追記。
$ nslookup pbs.twimg.com Server: 131.206.79.11 Address: 131.206.79.11#53 Non-authoritative answer: pbs.twimg.com canonical name = cs196.wac.edgecastcdn.net. cs196.wac.edgecastcdn.net canonical name = cs2-wac.apr-8315.edgecastdns.net. cs2-wac.apr-8315.edgecastdns.net canonical name = cs2-wac-us.8315.ecdns.net. cs2-wac-us.8315.ecdns.net canonical name = cs45.wac.edgecastcdn.net. Name: cs45.wac.edgecastcdn.net Address: 72.21.91.70
そしてもう一度node
実行!
{ Error: getaddrinfo ENOTFOUND pbs.twimg.com pbs.twimg.com:80 at errnoException (dns.js:50:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26) code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'pbs.twimg.com', host: 'pbs.twimg.com', port: 80 }
うーんダメみたいっすね…。
PCを再起動してもダメみたい…どうしたものか…。
おまけにetc/hosts
を変更した影響か、公式TwitterのWebページににアクセスしても、画像が表示されない様になってしまいました。
これはやばいと、etc/hosts
に追加した行を削除する事に。
TwitterAPIの公式ドキュメントをチェック
もしかしたら、参考にさせて頂いた記事当時のTwitterAPIと、今のとでは仕様が変わってるのかもしれないなと思い…。
改めて、公式ドキュメントを参照しながらやっていくことにしました。
次回記事へ…
次の記事では、公式ドキュメントを参考にTwitterAPIに関する理解を深めていこうかと思います。
それではー!