Pythonでランダムな自動ツイートするプログラムを作ってみた

code coder coding computer Python
Photo by Pixabay on Pexels.com

今回はPythonを使って過去にツイートした内容をDBに保存し、その内容をプログラムで自動ツイートするプログラムを書いてみました。

なぜすでにいろんなブログで紹介されているような内容をやろうかと思ったのは、自動投稿を紹介するプログラムはあるんですが、DBに保存した内容をツイートする記事が無かったことと、過去のツイートをせっかくなら有効活用したく、かつ手動でやるのが面倒なので、Pythonの勉強だと思って作りました。

逆にDBに保存した内容をツイートする記事がないってことは禁止されてるってことなのかと思い心配になったので調べてみました。

とりあえず自動ツイート自体は問題ないみたいですが、以下は注意する必要がありそうです。
特にその他の自動ツイートで、同一内容のツイートやスパムはアカウント凍結のリスクがあるみたいなので、あまりに少ないツイートの数を何回も投稿しない方がよさそうです。

B. ツイートの自動化

1. ツイートの自動投稿

外部の情報を連携投稿する自動ツイート: RSSフィードや気象データなど、外部から得た情報を使って自動的にツイートすることができます。ただし、そのような情報を投稿する適切な許可を得ていることが条件となります。 

その他の自動ツイート(@ツイートや返信を除く): 他のすべてのルールを遵守していれば、エンターテイメント、情報提供、その他の新しい用途のために自動化されたツイートを投稿できます。繰り返しになりますが、同一内容のツイートやスパムなど、禁止されているコンテンツを投稿した場合、アカウントが凍結される可能性があります。

確認したサイト

自動化ルール

ツイッターbot、ボットである事、責任者名の明示が「必要」に。プロフィール記載「推奨」。Twitter規約変更/規制 最新情報 2020年3月

もし、使われる方は注意して使ってください。アカウント凍結されても責任は持てません。

想定読者

想定読者は以下の方をイメージしています。

  • PythonのTweepyを利用してツイートをしてみたい
  • プログラムで自動ツイートできるなんて何かかっこいいと思った人
  • 毎回手動でツイートを投稿をするのが面倒なので自動化したい
  • 今まで作った過去のツイートを有効活用したい

前提知識と事前準備

前提知識

この記事を実行するには以下のことができれば大丈夫です。

  • 自分でPythonをインストールできること
  • 自分でTwitterAPIの登録ができること

事前準備

Pythonのインストール方法が分からない方はこちらを参照ください。
Windows版Pythonのインストール

プログラムを作成するためには、TwitterAPIを利用するため、「Twitter APIを登録」して、カスタマーキーやアクセスキーを取得必要があります。

私は以下サイトを参考にさせていただきました。
Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ

環境

作成した環境は以下になります。

  • Windows10
  • Python 3.8.1
  • tweepy 3.10.0
  • pandas 1.2.0

tweepyとpandasは事前にインストールしておいてください。

tweepyとpandasのインストール方法

Pycharmの下の方にあるTerminalを選択し以下のコマンドを入力
pip install tweepy pip install pandas

作業イメージ

作業の流れとしては以下のようになります。

  1. 過去のツイートを集める
  2. スプレッドシートで内容を整理する
    ↓ ここからプログラム開始です
  3. プログラムを作成する
  4. プログラムを実行する

作業開始

それではさっそく作っていきたいと思います。

過去ツイートを集める

ここは今までのツイートを集めるだけですので特に何もありませんが、私の場合は、「iThought」というマインドマップにツイートの内容をまとめていたため、その内容をCSVファイルにエクスポートして過去のツイートを集めました。

 スプレッドシートの内容を整理する

続いては、過去ツイートをまとめたスプレッドシートの内容を以下のように整理します。

  • 1列目_No:記事のナンバーを入力
  • 2列目_Tweet:ツイートの内容を入力
  • 3列目_Counter:何回ツイートされたかをカウントする
  • 4列目_Not_flag:ツイートしたくないときのフラグ ※今回は準備だけで使いません。

以下のような感じです。

ここまで出来たら事前準備は完成です。
完成したスプレッドシートはCSVファイルでPythonプログラムを実行するファイルと同じディレクトリに保存しておきます。

それではプログラムを作成していきます。

プログラムを作成する

まずは、先ほどのスプレッドシートの内容をDBへ保存していきます。
今回はPythonが標準で持っているSqlite3を使っていきます。

コードは以下のようになります。

import sqlite3
import pandas as pd
import csv
import tweepy
import random

#Twitter情報。これは公開NG。
consumer_key        = '***自分のキーを入力***'
consumer_secret     = '***自分のキーを入力***'
access_token        = '***自分のキーを入力***'
access_token_secret = '***自分のキーを入力***'

#Twitterの認証 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) #CSVデータ読み込み~DBへ接続 df = pd.read_csv("自動tweet内容.csv") dbname = 'auto-tweet.db' conn = sqlite3.connect('auto-tweet.db') cur = conn.cursor() #SQLへ登録 df.to_sql('tweet', conn, if_exists='replace') #SQL文 count_sql = 'SELECT count(*) FROM tweet' select_sql = 'SELECT * FROM tweet' #SQLの行をカウント cur.execute(count_sql) count = cur.fetchall()
#登録個数のカウントとランダムの値を取得 max_count = count[0][0] rand_count = random.randrange(max_count) i = 1 #SQLのデータを読み込み for row in cur.execute(select_sql): if i == rand_count: tweet = row[2] cur.execute('UPDATE tweet SET Counter = Counter+1 where No=?', (i,)) conn.commit() i += 1 db_export = pd.read_sql_query('SELECT * FROM tweet', conn) db_export = db_export.drop('index', axis=1)
#自動tweet内容_本番用.csvにDBの内容をエクスポートする db_export.to_csv('自動tweet内容_本番用.csv', index=False)
#ツイートをする api.update_status(tweet) print(tweet) cur.close() conn.close()

本プログラムでは、DBの名前とCSVフィル名を以下のようにしています。

  • DB名:auto-tweet.db
  • CSV名:自動tweet内容_本番用.csv

このコードをコピーして、TwitterAPI情報を自分の情報に書き換えてください。

  • consumer_key = ‘***自分のキーを入力***’
  • consumer_secret = ‘***自分のキーを入力***’
  • access_token = ‘***自分のキーを入力***’
  • access_token_secret = ‘***自分のキーを入力***’

もし余裕のある方はDB名やCSV名も自分の好きな名前に変えてみてください。

それでは作成したプログラムを実行してみましょう。

プログラムを実行する

Pycharmのメニューバーの「Run」から「Run」を選択し、作成したPythonプログラムを選択して実行します。

もしくは、右上の実行のアイコンがあるのでそちらでも可能です。

実行した時の動きを動画で取りましたので興味があれば見てみてください。

 

実行すると、DBのcounter値が1カウントアップします。
ちゃんとカウントアップできているかを確認します。
※読み込み時に使用したCSVファイルにデータベースの内容をエクスポートしているので、CSVファイルを確認しています。

今後やりたいこと

今回はとりあえず、ランダムでツイートをする部分だけを作ったので、今後やりたいこととしては、カウンターを利用して多めにカウントしているツイートは抑制するとか、あとNot_flagがあるのでそのフラグがあるときはツイートしないなど細かい制御ができればなと思っています。

最初に書いていますがこれを使って自動ツイートを使用とする場合、アカウント凍結にはお気をつけください!

以上が、自動ツイートプログラムの内容でした。

他にも、くじ引きアプリというものを作って、その手順をブログにしているので興味がある方は見てってください。

Djangoでくじ引きアプリを作ってみる_part1

ありがとうございます。

コメント

タイトルとURLをコピーしました