Search 4 Truth

Search 4 Truth

Pythonと仮想通貨

【Python】落合陽一氏もやっているエゴサbotをPythonで作った【Tweepy】

先日このようなツイートを見つけました。 

最近の情熱大陸で一躍有名になった(?)(自分はこれで知った)落合陽一氏ですが、番組が面白かったのでフォローしていました。そこで「Pythonでできんじゃね?」と思ったので、つくってみました。

準備

使うモジュールはTweepyのみです。

無い方は

pip3 install tweepy

でインストールしてください。

前回の記事の「各種キーの取得」の手順に沿って「Consumer Kye」、「Consumer Secret」、「Access Token」、「Access Secret」をそれぞれ発行して、コードをメモっておいて下さい。

www.pypi.cf

コード

コード自体はとても簡単で、前回のブログで使用したソースコードを流用します。いわゆるこれがエゴサ段階で、ツイートの識別番号を取得してあるのであとは識別番号を引数としてretweet()に代入してあげればいいだけです。

 

s4t.hatenablog.com

 

コード

下記コードをそのままコピーして。searchメソッドではapiの仕様上15件までしか取得できないようなので、実行する間隔を狭めるなりして調整して下さい。(crontabなどを使用して定期実行することが前提となっています。)

 

import tweepy

def api(): 
    consumer_key = 'consumer_key'
    consumer_secret = 'consumer_secret'
    access_key = 'access_key'
    access_secret = 'access_secret'
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    api = tweepy.API(auth)
    return api

dic = {} 

for tweet in api().search('仮想通貨'):
	if tweet.retweeted == False: 
		text = tweet.text 
		id = tweet.id
		dic.update({id:text}) 
		if '@' in dic[id]: 
			pass
		else:
			api().retweet(id) 

特定の文字列を含むツイートをリツイートするやつ

こちらは最初からリプライを含むツイートは除外しています。Twitterのbotについては自動化ルール をしっかり読んだ上でお使い下さい。

 

 

【IFTTT】地震速報をLINEに送信する

IFTTTを使って地震速報を受信する方法を紹介します。

 

Twitterでこのアカウントをフォローしている方も多いと思います。

twitter.com

 

今回はこちらのアカウントが呟いた内容をIFTTTに渡して、LINEに送信するという簡単なものになってます。

 

完成するとこのような通知が来ます。全国の地震速報が送信されるので、通知を切って後でまとめて読むことが多いです。(速報の意味)それとつぶやかれてから、2,3分ほどのしてから拾うようなので(速報性は)ないです。

f:id:lisbeths:20180101001603p:plain

 

何はともあれ作って行きましょう。書いてる最中に気がついたのですがそういえばIFTTTってレシピ(制作物)を公開できることを完全に忘れていました。

とりあえずレシピのリンクを張っておきました。IFTTTのアカウントを持ていない方は取得しておいてください。取得してから、リンク先へ移動すると各種アカウント(LINE、Twitter)の連携を催されるで指示に従い設定していきましょう。

 

https://ifttt.com/applets/66596467d-twitter-line

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

あ、あけおめ

 

 

【Python】特定の単語を含むツイートを自動でふぁぼるbotを作った

 Tweepyを使って自動お気に入り登録ツールを作ってみました。これは指定した文字列に反応して、その単語が含まれているツイートを見つけたら自動的にお気に入り登録するというものです。

例えば、自分の名前やブログ名が入っているツイートを見つけたらお気に入り登録する、自動でエゴサしてくれるツールとなっているので、なにかと応用してみると面白そうです。

今回は、「仮想通貨」という文字列に反応するbotを作ってみました。

使用した環境

・MacBook Air Early 2015 Sierra 10.12.6 Python 3.6.2

必要なもの

tweepy

 使用するモジュールはtweepyのみです。無い方はインストールしておいてください。 

pip3 install tweepy

アクセストークン等のキー

以下の記事の「各種キーの取得」という項目に沿って「Consumer Key」、「Consumer Secret」、「Access Key」、「Access Secret」をそれぞれ発行してメモしておいて下さい。

www.pypi.cf

コード

import tweepy

def api():
    consumer_key = 'consumer_key'
    consumer_secret = 'consumer_secret'
    access_key = 'access_key'
    access_secret = 'access_secret'
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    api = tweepy.API(auth)
    return api

#ふぁぼりたい対象の単語をSearchメソットの引数部分に文字列として代入 for tweet in api().search('ビットコイン'): id = tweet.id api().create_favorite(id)

特定の文字列を含むツイートを自動でふぁぼるやつ

これではお気に入りに登録する対象を特定の文字列の「リプライを含む全ての」ツイートとなってしまい、不快に思われる方がいらっしゃるかもしれません。なのでリプライを除く処理を追加してみました。

for tweet in api().search('仮想通貨'): 
    text = tweet.text 
    id = tweet.id 
    dic.update({id:text}) 
    if '@' in dic[id]: 
        pass
    else:
        api().create_favorite(id)

関数api以下のfor文から下の処理を差し替えてお使い下さい。

使い方

上記のソースコードをそのままコピーして「TweetFav.py」で保存しました。

先程メモしたキーをソースコードの該当箇所に代入して下さい。以上で作業は完了なので動かしてみます。

python3 TweetFav.py
起動!

f:id:lisbeths:20180129144422p:plain

できていますね〜。筆者はcrontabで自動化して日々情報収集に励んでおります。

Twitterのbotについては自動化ルールをしっかりとお読みになった上でお使い下さい。
www.pypi.cf

 

【Python】ビットコインの価格を定期的にツイートするbotを作った【Application Managementの使い方も記載】

今回は、Pythonを使ったビットコインの価格を取得して自動で定期ツイートしてれるbotを作成しました。

構造としては

1,BeautifulSoupで価格データのスクレイピング 

2,Tweepyを使ってツイート

3,crontabを使ってbot化

となっています。 

スクレイピングの対象となるbitFlyerのサイトのHTMLをBeautifulSoupで抜き出し、正規表現で文字列を抽出してTweepyを使ってツイートする簡単なものです。Raspberry Piを使ってcrontabでbot化しましたが、今回はツイートするところまでを紹介していきます。

完成品はこちらです。10分毎にツイートするbotとなっています。

bitFlyerの専用のAPIがありますが、今回は公式サイトのスクレイピング結果をツイートするbotとなっています。

f:id:lisbeths:20171227011828p:plain

今回のプログラミングで使用した端末

・MacBook Air Early 2015 Sierra 10.12.6 Python 3.6.2

使用したモジュール

・re
・urllib
・tweepy
・datetime
・BeautifulSoup

 tweepyとbeautifulsoupは新しくインストールする必要があるので、pipでインストールします。 

pip3 install beautifulsoup4
pip3 install tweepy

各種キーの取得

tweepyを使うためにOAuth認証を行ないます。

こちらに移動し、ご自身のTwitterアカウンでログインします。注意点として、予め電話番号とアカウントととの紐付けが必要です。

1,「Create New App」を選択。 

f:id:lisbeths:20180128140130p:plain

 2, 「Application Details」の"Name" 、"Description" 、"Website" をそれぞれ入力。完了したら「Create your Twitter application」を選択。

f:id:lisbeths:20180128140254p:plain

 3, 無事作成できたらこの画面になる。「Keys and Access Tokens」を選択。

f:id:lisbeths:20180128140513p:plain

 4, 「Create my Access token」を選択。

f:id:lisbeths:20180128140813p:plain

 5, "Consumer Kye"、"Consumer Secret"、"Access Token"、"Access Token Secret" をそれぞれメモっておく。

f:id:lisbeths:20180128140935p:plain

コード 

以下のソースコードをそのままコピペして拡張子.pyで保存して下さい。先程メモした、キーを"consumer_key"、"consumer_secret"、"access_key"、"access_secret"にそれぞれ代入して下さい。 

import re
import urllib
import tweepy
import datetime
from bs4 import BeautifulSoup as b4

todaydetail = datetime.datetime.today()
today = todaydetail.strftime("%m/%d %H:%M")

def Tweet(text):
    consumer_key = 'consumer_key'
    consumer_secret = 'consumer_secret'
    access_key = 'access_key'
    access_secret = 'access_secret'
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    api = tweepy.API(auth)
    api.update_status(text)

def BTC():
    url = 'https://bitflyer.jp/' 
    headers = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"} #UserAgentを変更します。
    req = urllib.request.Request(url,None,headers)
    res = urllib.request.urlopen(req)
    soup = b4(res,"html.parser")
    soup = str(soup)
    pa = 'none;">(.+)</div>' 
    ma = re.findall(pa,soup) 
    x = today + ' 現在のビットコインの価格\nBTC/JPY ' + 'ask: '  + ma[0] + ' / ' + 'bid: ' + ma[1] 
    return x

if __name__ == '__main__':
    Tweet(BTC()

#BTC()の戻り値を代入してツイートします。crontabで時間指定してbot化しました。

bitFlyerをスクレイピングしてビットコインの価格をツイートするやつ

 〆

以上のプログラムをcrotnabで実行すると完成品のようになります。関数BTCをご自身の好きなものに変えれば、立派なTwitterbotの完成です。

Twitterのbotについては自動化ルールをしっかりとお読みになった上でお使い下さい。このプログラム自体はルールに準じていますが、違反が確認されると、アカウントのロック、又は凍結される場合があります。