2017年10月10日

VALUの時価総額ランキングを定期的につぶやいてみる(Python+MySQL+Tweepy)

下記のエントリーでVALUの情報をスクレイピングしてMySQLに格納しました。
下記のエントリーで、とりあえずMySQLに触ってみましたが、実用的なことを実施し...
そのDBを元に時価総額を降順に検索して下記の様にアカウント「@kumakuma_ap」でつぶやくコードを作成しました。またつぶやくタイミングはcronで設定しています。

Tweetを140文字以内にするために

今回のコードは下記の部分でTwitterの制限である140文字になるように分割しています。
    # 時価総額10位以内を順に取得
for row in cur.fetchall():
tweet = tweet_prev + str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[5])+"BTC\n"
#140文字以上になる場合は、140文字以内になるように分割してリストに追加
if len(tweet) > 140:
tweet_list.append(tweet_prev)
tweet_prev = str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[5])+"BTC\n"
tweet = ""
else:
tweet_prev = tweet

rank=rank+1
# 残ったTweetをリストに追加
tweet_list.append(tweet_prev)
では、今回のコードに続きます。

メインコード

#!/virtual/kumanabe/.pyenv/versions/anaconda3-4.4.0/bin/python

import MySQLdb
import tweepy
from datetime import datetime

# 文字コード(UTF-8)関連
import io,sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

#Twitter認証
CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxx'
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

def main():
api = tweepy.API(auth)

# DB接続
conn = MySQLdb.connect(
user='kumanabe',
passwd='xxxx',
host='localhost',
db='kumanabe',
charset="utf8")
cur = conn.cursor()
# 時価総額の昇順
cur.execute("SELECT * FROM items ORDER BY total_value DESC LIMIT 10")

tweet_list = []
date = datetime.now().strftime('-----VALU時価総額ランキング(%Y/%m/%d)-----\n')
tweet_prev = date + "順位:名前(ID):時価総額\n"
tweet = ""
rank = 1;
# 時価総額10位以内を順に取得
for row in cur.fetchall():
tweet = tweet_prev + str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[5])+"BTC\n"
#140文字以上になる場合は、140文字以内になるように分割してリストに追加
if len(tweet) > 140:
tweet_list.append(tweet_prev)
tweet_prev = str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[5])+"BTC\n"
tweet = ""
else:
tweet_prev = tweet

rank=rank+1
# 残ったTweetをリストに追加
tweet_list.append(tweet_prev)

while tweet_list:
# Twitter投稿
tweet = tweet_list.pop()
print(tweet)
# api.update_status(tweet)

if __name__ == "__main__":
main()


cron設定について

レンタルサーバ(XREA)上でのcron設定については下記エントリーで触れています。
下記のエントリーでVALUのデータを取得してMySQLのDBに格納するPytho...


スポンサーリンク
posted by くまなべ at 08:00 | Comment(0) | TrackBack(0) | Python
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/181233614
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック