毎日テキストマイニング

180日間、毎日テキストマイニングをするブログです

2018/7/2【10日目の捕捉】Twitter APIのcreated_atをUNIX時間に変換してDATETIMEに保存する

昨日、Twitterが吐き出すcreated_atを文字列型であるvarcharに保存したのですが、これ、検索に全く使えないですね笑 しっかりtime型で保存できるように、UNIX時間 → 日本時間に変換したいと思います。 Pythonで時間を操作するにはtimeモジュールとdatetimeモジュールを使うらしいです。これはもともとPythonに附属されてますので、pip installしないで良いそうです。

Python公式ページ https://docs.python.jp/3/library/time.html

コードはこんな感じです。 まず、time.strptimeを使って、Twitterが返す時刻に合わせて時間を解釈します。第一引数にTwitter APIが返す引数、第二引数にTwitter APIが持っている情報を示します。

printするとこんなのが出力されます。

time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=19, tm_min=54, tm_sec=22, tm_wday=0, tm_yday=183, tm_isdst=-1)

↑この形式をUTC のstruct_timeというらしいですが、calendar.timegm関数に入れれば、エポックからの秒数に変換されます。それで、これをtime.localtime関数に入れると日本時間に変換されます。後は出力の形式をtime.strftime関数に入れれば完成です。

import sys, json, time, calendar

                time_utc = time.strptime(created_data, '%a %b %d %H:%M:%S +0000 %Y')
                unix_time = calendar.timegm(time_utc)
                time_local = time.localtime(unix_time)
                japan_time = time.strftime("%Y-%m-%d %H:%M:%S", time_local)

実行結果。

2018-07-02 13:05:22

これで、DATETIME('0000-00-00 00:00:00')に保存できそうですね。 データベースのテーブルを再生成して、Pythonを実行してみます。

create table tweet3(
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
created_data DATETIME NOT NULL,
name varchar(50) NOT NULL,
tweet varchar(255) UNIQUE NOT NULL,
count_tweets int,
count_follows int,
count_followers int,
count_favolites int,
count_lists int, 
users_favorites int,
retweet int,
favorite int,
datesp DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

無事に保存できました。 本当は日本戦の前に完成させたかったです。