
pythonで条件付きリツイートをする ~ツイッター社の言論弾圧に対抗するために~
■イントロ
こんにちは。びりぶです。
今、ネットにおける言論弾圧が進んでいます。ネットの世界を牛耳ろうとしている上級国民たちは、自分たちに都合の悪い情報を拡散する庶民の言論を弾圧するため、ほぼ強制的に言論統制を進めようとしています。そんな悪に少しでも対抗するため、ツイッターのリツイートプログラムを作ったので、情報共有します。
コードだけ見たい方は、「条件付きリツイートプログラム」以降へ飛んでください。
「この記事を読んでわかること」
・ツイッター社の言論弾圧の実例
・リツイートプログラムのpythonコード
・言論弾圧に対して、どう行動すればいいか
■ネットにおける言論弾圧
ネットにおける言論弾圧の例を少し挙げてみました。
トランプ氏はツイッターで、「共和党は、ソーシャルメディアプラットフォームが保守派の声を完全に遮断しようとしていると感じている。こんなことが現実になる前に、われわれは(各種プラットフォームを)強く規制するか、あるいは閉鎖するだろう」と主張した。
https://www.afpbb.com/articles/-/3285236
中国、SNSでも言論弾圧 投稿した6人の市民が逮捕された
https://www.epochtimes.jp/p/2018/03/31888.html
ネット発信者特定へ制度改正検討
木村花さん死去で総務相が意向
https://this.kiji.is/637834364545696865
松井一郎大阪市長 SNSの誹謗中傷に「大バカ者を無くす為にとっとと法制化して下さい」と国に訴え
元大阪府知事の弁護士・橋下徹氏(50)も反応。ツイッターで「この元ツイートを単純リツイートした人たちは、直ちに削除しておいた方が法的に安全です」
https://news.yahoo.co.jp/articles/50c80d36eecb701f1a945baa0209c3bccb13a3b1
少し前までは、ネット上に工作員を多数配置しトレンドを操作し、正論が少数派であるような工作活動をする程度でしたが、最近では法的措置をとるなど、強制的な言論弾圧が進めらています。
■ネットにおける言論弾圧の実例
実際に、私が目にした実例を挙げてみました。
--①ツイッター社によるフォロワー数の操作--
以下は「時計仕掛けのオレンジ」氏のアカウントで何度も起こっている事象です。
「時計仕掛けのオレンジ」氏は、この世の隠された真実を拡散されており、ツイッター社にとっては都合の悪い情報をたくさんツイートされているようです。そのため、フォロワー数を減らされています。そして、減らされた事象をツイートすると、その時だけフォロワー数が増えるという、不思議な現象が何度も起こっています。
恐らく、ツイッター社は自在にフォロワー数を操作できるのでしょう。
今朝、見たときは、私のフォロワーが6237人いたのに、たった数時間で6219人になってしまった🤣
— 時計仕掛けのオレンジ (@9n7eWQtutsamatw) June 24, 2020
今日は久しぶりに全能神教会のことについてツイートしたから、それがイタかったのかな?
全能神教会は、李家の資金源(マネロン)だもんね。https://t.co/3anQXuAleZ
ゴメンよ🤭 https://t.co/xeg16WjtfG pic.twitter.com/XlCnxVxG6H
--②ツイッター社によるリツイート外し--
今回のプログラムコードを書くキッカケになった事象です。
「いいね」や「リツイート」が反応しない、知らない間に消されているという事象が各所で起こっているようです。
一方で、真実を拡散する人たちにとっては、それが拡散されてほしくない情報なのだと、いう事がわかります。ツイッター社は、リツイート外しにより、墓穴を掘っていることがわからないようです。
「外されるのなら、もう一度リツイートしよう。」「外されたリツイートが拡散されたくない情報なら、もう一度リツイートしよう。」
そんな動機で作ってみました。
Twitter社、拡散させたくないのか、不具合多発👉何度いいね・リツイート押しても無反応。
— selah (@HANA82451798) June 1, 2020
(当方iPadではコピペも現在出来なくなっています)
またSWさん、凍結解除やバックアップの方法など迅速に教えて下さってありがとうございます。凍結されているお二人に届きますように。https://t.co/vYnfasgxPc https://t.co/NF3uVX0A7o pic.twitter.com/ix1kmoEB5a
いリツイート外しの連続動画
— はっぴーにゃん@QArmyJapanFlynn (@happynyan8888) February 25, 2020
何でこんなことするのシイッ夕ー💩 https://t.co/2bmrnbY5X6
--③トレンド件数の非表示--
2020/6/26から、トレンドに件数が表示されない仕様に変わったようです。皆さん、気づかれていましたか?
トレンドって、件数が上位のものから上に表示されて、世の中の注目ニュースなど知るためのものだと思うのですが、、、、
件数が表示されない時点で、トレンドの意味を成さない仕様になっています。
つまり、多くの人が目にするトレンドも、ツイッター社によって、自由に操作できるということです。
Twitter、もう終わり。
— 時計仕掛けのオレンジ (@9n7eWQtutsamatw) June 26, 2020
フォロワー数、いいね、リツイート数の改ざんがバレたので、今度は数字そのものを最初から非表示にするという手に出てきた。
これじゃあ、トレンドの意味がない。
いよいよ、庶民のTwitter離れも現実味を増してきたな。 https://t.co/6MiEqD5IK9
特に、ツイッター社による言論弾圧は、取締役が李・飛飛(リ・フェイフェイ)に変わってから顕著になりました。
この李飛飛(リ・フェイフェイ)という女が、Twitterの取締役に就任したとたん、以下のような動画が次々と削除されるようになった。
— 時計仕掛けのオレンジ (@9n7eWQtutsamatw) June 15, 2020
彼女は、真実を隠蔽するために、言論弾圧する人間であり、Twitterを運営するに相応しくない女である。https://t.co/BON7RDXuxP
皆、この顔をよく覚えておこう。 https://t.co/fIpSzMITM6 pic.twitter.com/WzWqfw1us1
彼女は、北京産まれ、アメリカ在住、プリンストン大学出身で、長年グーグルに勤め、AIと機械学習のチーフサイエンティストとして活躍した人です。AIの世界では知らない人がいないほどの有名人。
有名人には、裏があるというのはラプト理論通りですね。
--④YouTube再生回数の操作--
まずは、以下の動画を見てください。
「KAWATAとNANAのRAPT理論」にて最初にアップされた動画の再生回数が、「969回」から「966回」に減らされています。
たった3回ですが、それでも意図的に減らされたことは明らかです。
上記は、2019/2の動画でしたが、2020/5の最近の動画(下記)では、1000回以上も再生回数が減らされています。回数の問題ではないですが、言論弾圧がどんどん過激になっていることがわかります。
🔴Youtube、再生回数を操作する。
— scenery (@scenery1000) May 30, 2020
三日前に「KAWATAとNANAのRAPT理論」の最新動画のページを開いた。
それは『再生回数がアナリティクスでは9231回だが動画ページの表示では7616回のまま動かない』ことを指摘したコメントが書かれた約1時間後だった。
そのとき表示された再生回数は6626 回だった。 pic.twitter.com/yFZmiD9kRz
--⑤グーグル検索順位の操作--
ラプト理論は、陰謀論に興味がある人であれば、その名前を知らない人がいないほどの有名な内容です。
この有名なブログですが、最近のgoogleの検索アルゴリズムが変わったぐらいから、ラプトブログのトップページがgoogle検索で出てこなくなりました。
以前は、「rapt」、「ラプト理論」、「ラプトブログ」などで検索すれば、検索順位のトップに表示されていたのですが、今では、「rapt home」「rapt top」などで検索してもなかなかヒットしないように操作されています。
以下ツイートを参照すると、Bingの検索エンジンでは、トップに表示さているので、グーグルのアルゴリズムが悪いのか、意図的に操作しているのか、になると思います。いずれにせよ、検索者の検索意図を把握できない検索エンジンは、今後、衰退していくかもしれません。
#Twitter社のフォロワー操作#Youtubeの再生数操作
— Lilyneo (@lilyneostar) May 29, 2020
さらに#Google と #Yahoo 検索サイトの
検索結果の操作。#RAPT理論 が広まらないように
イルミナティ(大本教)は
妨害するも、真実は広がっていくでしょう。
犯人↓https://t.co/Pm0hBhS8WP#RAPTblog はここです↓ https://t.co/7DWVaWdKe6 pic.twitter.com/2HnNnWXwO2
なお、ラプト理論の検索以外でも、グーグルの検索操作されている事例は以下に掲載されています。
このように、ツイッター、YouTube、Googleによる言論弾圧が進んでいます。これに対抗するため、リツイートプログラムを作成しました。
・・・と、前置きが長くなりましたが、以下作成したプログラムです。
■条件付きリツイートプログラム
基本的には、以前作成したプログラムを修正したものとなっていますので、詳細は、以下を参照下さい。
--環境
・anaconda
・spyder 3.3.1
・python 3.7
・windows 10
・tweepy 3.8.0
--流れ
1. インポート
2.Tweppy-api認証
3.タイムラインの取得
4.メイン文
5.条件付きリツイートの実施
----1.各種インポート
twitter apiを使うためのtweepy、dataframeを使うためpandasをインポート。
import tweepy
import pandas as pd
from datetime import timedelta,datetime
----2.Tweppy-api認証
#-Twitter APIを使用するためのConsumerキー、アクセストークン設定
def getApiInstance():
Consumer_key = ***取得したキーを入力***
Consumer_secret = ***取得したキーを入力***
Access_token = ***取得したキーを入力***
Access_secret = ***取得したキーを入力***
#-認証
auth = tweepy.OAuthHandler(Consumer_key, Consumer_secret)
auth.set_access_token(Access_token, Access_secret)
api = tweepy.API(auth ,wait_on_rate_limit = True, wait_on_rate_limit_notify=True)
return api
以前書いた以下の記事と同じなので、詳細はこちらを参照下さい。
https://note.com/believe2023/n/n7144b091d04c
----3.タイムラインの取得
#-timeline_info
def gettimeline_info(api, screen_name,df,columns):
num=0 #-取得するツイートを計算する
pages=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] #-最大16回
for page in pages:
tweets=api.user_timeline(screen_name, count=200, page=page) #-1回200,pageはページの番号
for t in tweets:
t.created_at+=timedelta(hours=9) #-JSTに
se = pd.Series([t.created_at, t.text, t.id, t.favorite_count], columns) #1行作成
df = df.append(se, ignore_index=True) #-行方向に結合
print('----------') #-見やすく
print("num:",num,"page:",page)
num+=1
print(num, 'ツイート表示しました。')
return df
(前記事の名残で、ゴミが残っていますが)
api.user_timelineで、指定ユーザのタイムラインを新しいほうから取得できます。できるだけ多く取得するため、count=200(最大取得数)とし、page=1~17(最大16回)でページ数分ループを回します。
また、
t.created_at:作成日時
t.text:ツイートテキスト
t.id:ツイートID
t.favorite_count:「いいね」の数
をそれぞれのツイートで取得し、forループ内で、dfに次々結合しています。
screen_nameには、リツイートしたいユーザのスクリーンネームをいれます。この関数の入力dfに各ツイートで抽出した内容が追記され、引数で渡しています。
----4.メイン文
if __name__ == "__main__":
screen_name = input("RTしたい人のscreen_nameを入力")
fnum = input("いいね数の下限を入力")
kword = input("含むキーワードを入力、未入力の場合はすべてRT")
api = getApiInstance()
n=1
columns = ["tweet_at","text","id","favorite_count"]
df = pd.DataFrame(columns=columns)
df = gettimeline_info(api, screen_name,df,columns)
text=list(df.loc[:,["text"]]["text"]) #-text列だけ抜き出し、リストに
tweet_id=list(df.loc[:,["id"]]["id"]) #-tweet id列だけ抜き出し、リストに
f_count=list(df.loc[:,["favorite_count"]]["favorite_count"]) #-いいね数 の列だけ抜き出し、リストに
texts=text
input関数を使い、都度、リツイート条件を変えられるようにしています。
screen_name:RTしたい人のスクリーンネーム(@以降)
fnum :「いいね」数の下限。多くいいねがついたものだけ、リツイートできるようにします。
kword :テキストに含むキーワード。
screen_name = input("RTしたい人のscreen_nameを入力")
fnum = input("いいね数の下限を入力")
kword = input("含むキーワードを入力、未入力の場合はすべてRT")
その後、api認証しています。
columnだけ指定し、空のDataFrameを作ります。
columns = ["tweet_at","text","id","favorite_count"]
df = pd.DataFrame(columns=columns)
3で説明したgettimeline_infoを呼び出し、タイムラインに表示されるすべてのツイートをデータフレームとして作成します。そのうち、テキスト列、ID列、いいね数列のみを個別に取り出して、リストを作っています。
df = gettimeline_info(api, screen_name,df,columns)
text=list(df.loc[:,["text"]]["text"]) #-text列だけ抜き出し、リストに
tweet_id=list(df.loc[:,["id"]]["id"]) #-tweet id列だけ抜き出し、リストに
f_count=list(df.loc[:,["favorite_count"]]["favorite_count"]) #-いいね数 の列だけ抜き出し、リストに
texts=text
----5.条件付きリツイートの実施
n=0
for (i,text) in enumerate(texts):
print("NOW-->>{:03}".format(i))
if type(text) is str:
if not "@" in text[0:4]:#-RTおよびリプライは除外する
if f_count[i] >= int(fnum):#-いいね数の下限指定
if kword in text: #-キーワード
print(text)
n +=1
try:
#- リツイート実行
api.retweet(tweet_id[i])
#- いいね実行
api.create_favorite(tweet_id[i])
except:
print('error')
else:
pass
print(n, '件リツイートしました。')
タイムラインにあるツイートすべてを対象にし、forループで回します。
以下を入れて、リツイートや、リプライは除外しています。リツイートのテキストは「RT @」が、リプライは「@」が最初に記載されているからです。
if not "@" in text[0:4]:
リツイートの条件は、以下の文で指定しています。
「いいね」の下限以上で、かつ、キーワードを含むツイートのみを抽出しています。
if f_count[i] >= int(fnum):#-いいね数の下限指定
if kword in text: #-キーワード
最後に、抽出したツイートに対して、「リツイート」と「いいね」を実施し、完了です。
途中で止まらないよう、エラー処理(try,except)も入れています。
try:
#- リツイート実行
api.retweet(tweet_id[i])
#- いいね実行
api.create_favorite(tweet_id[i])
----完成したコード
import tweepy
import pandas as pd
from datetime import timedelta,datetime
def getApiInstance():
#-Twitter APIを使用するためのConsumerキー、アクセストークン設定
Consumer_key = '***'
Consumer_secret = '***'
Access_token = '***'
Access_secret = '***'
#-認証
auth = tweepy.OAuthHandler(Consumer_key, Consumer_secret)
auth.set_access_token(Access_token, Access_secret)
api = tweepy.API(auth ,wait_on_rate_limit = True)
return api
#-timeline_info
def gettimeline_info(api, screen_name,df,columns):
num=0 #-取得するツイートを計算する
pages=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
for page in pages:
tweets=api.user_timeline(screen_name, count=200, page=page)
for t in tweets:
t.created_at+=timedelta(hours=9)
se = pd.Series([t.created_at, t.text, t.id, t.favorite_count], columns)
df = df.append(se, ignore_index=True) #-行方向に結合
print('----------')
print("num:",num,"page:",page)
num+=1
print(num, 'ツイート表示しました。')
return df
if __name__ == "__main__":
screen_name = input("RTしたい人のscreen_nameを入力")
fnum = input("いいね数の下限を入力")
kword = input("含むキーワードを入力、未入力の場合はすべてRT")
api = getApiInstance()
n=1
columns = ["tweet_at","text","id","favorite_count"]
df = pd.DataFrame(columns=columns)
df = gettimeline_info(api, screen_name,df,columns)
text=list(df.loc[:,["text"]]["text"]) #-text列だけ抜き出し、リストに
tweet_id=list(df.loc[:,["id"]]["id"]) #-tweet id列だけ抜き出し、リストに
f_count=list(df.loc[:,["favorite_count"]]["favorite_count"]) #-いいね数 の列だけ抜き出し、リストに
texts=text
n=0
for (i,text) in enumerate(texts):
print("NOW-->>{:03}".format(i))
if type(text) is str:
if not "@" in text[0:4]:#-RTおよびリプライは除外する
if f_count[i] >= int(fnum):#-いいね数の下限指定
if kword in text: #-キーワード
print(text)
n +=1
try:
#- リツイート実行
api.retweet(tweet_id[i])
#- いいね実行
api.create_favorite(tweet_id[i])
except:
print('error')
else:
pass
print(n, '件リツイートしました。')
inputを使いリツイート条件を変えられるので、使いやすい感じにできたと思います。条件分の書き方は、もっとスマートな書き方があるかなと思いました。
■おわりに -我々庶民ができること-
この日本は李家(上級国民)によって牛耳られています。コロナのウソや、言論弾圧に負けずに我々庶民ができることは何でしょうか?
1.真実を知ること
2.真実を拡散すること
李家や上級国民たちは、大きなウソならバレないと高をくくり我々を支配しようとしています。でも、ウソは必ずバレます。彼らは、今もウソがバレることに対し、不安でいっぱいなのだと思います。
そのようなウソに対し、我々が真実を知って、拡散することは彼らが最も恐れていることです。
まずは、真実を知ってみませんか?以下の動画を見ると頭がスッキリし、不安や心配なく生きられるようになります。
長文お読み頂き、ありがとうございました。^^
ーーーーーーーーーーーーーーーーーーーーーーーー
●コロナはウソ
●この世を支配する李家
●今後、どうしていけばいいか?
●ブログ