おはよう戦隊
Twitter界隈で目にする人も多いだろうハッシュタグの一つに「おはよう戦隊」があります。
どういうものかというと、このハッシュタグをつけて挨拶のツイートするとみんなから挨拶がリプライやいいねがきます。
またさらに自分もこのハッシュタグが付いているツイートにリプライやいいねをして、コミュニケーションを取ろうってハッシュタグです。
詳しくはおはよう戦隊を設立した「ひー」さんのアカウントに書かれている説明を読んでください。
色々な人と繋がれるので、昔、私も使っていたのですが、途中からそのハッシュタグのルールが変わって、めんどくさくなってしまい、辞めてしまった経緯があります。
逆に考えるとハッシュタグが簡単にできれば辞めなかったかもなぁと思ったのですが、それならPythonでおはよう戦隊のタグを作成するプログラム書いちゃえばいいじゃない?というのが今回のお話。
ちなみにそのおはよう戦隊で使うハッシュタグですが、「#おは戦030928sk🔥」のようなハッシュタグです。
分解すると「#おは戦」+「和暦(令和3年なら3)」+「月日(9月28日なら0928)」+「英語の月の最初の文字(9月ならs)」+「日本語の曜日の最初の文字(火曜日ならk)」+「曜日ごとの絵文字(火曜日なら🔥)」です。
なかなか言われても分かりにくい(そうすることで違反する人たちの参入を防ぐ?)ハッシュタグです。
こういうものを見ると自動化したくなるのが、プログラムを学んでいる人の性なんでしょう。
ではではちょっと試していきましょう。
プログラム全体
プログラム全体はこんな感じ。
from datetime import date
timenow = date.today()
def ohasenmake(timenow):
eng_month_dict = {'01':'j','02':'f','03':'m','04':'a','05':'m','06':'j','07':'j','08':'a','09':'s','10':'o','11':'n','12':'d'}
jp_day_dict = {'Mon':'g','Tue':'k','Wed':'s','Thu':'m','Fri':'k','Sat':'d','Sun':'n'}
mark_day_dict = {'Mon':'🌜','Tue':'🔥','Wed':'🌊','Thu':'🌴','Fri':'🍺','Sat':'🍩','Sun':'🍨'}
japan_year = int(timenow.strftime('%Y')) - 2018
month = str(timenow.month).zfill(2)
eng_month = eng_month_dict[month]
date = str(timenow.day).zfill(2)
eng_day = timenow.strftime('%a')
jp_day = jp_day_dict[eng_day]
mark_day = mark_day_dict[eng_day]
ohasenword = f'#おは戦{japan_year}{month}{date}{eng_month}{jp_day}{mark_day}'
return ohasenword
def main():
ohasenword = ohasenmake(timenow)
print(ohasenword)
if __name__ == '__main__':
main()
それでは順番に解説していきましょう。
セッティング
まずはセッティングです。
from datetime import date
timenow = date.today()
今回、年月日を使うので、「datetime」モジュールから「date」をインポートします。
そして「date.today()」で現在の年月日を取得し、変数timenowに格納します。
ohasenmake関数
ohasenmake関数はその名の通りおは戦のハッシュタグを作成するための関数です。
def ohasenmake(timenow):
eng_month_dict = {'01':'j','02':'f','03':'m','04':'a','05':'m','06':'j','07':'j','08':'a','09':'s','10':'o','11':'n','12':'d'}
jp_day_dict = {'Mon':'g','Tue':'k','Wed':'s','Thu':'m','Fri':'k','Sat':'d','Sun':'n'}
mark_day_dict = {'Mon':'🌜','Tue':'🔥','Wed':'🌊','Thu':'🌴','Fri':'🍺','Sat':'🍩','Sun':'🍨'}
japan_year = int(timenow.strftime('%Y')) - 2018
month = str(timenow.month).zfill(2)
eng_month = eng_month_dict[month]
date = str(timenow.day).zfill(2)
eng_day = timenow.strftime('%a')
jp_day = jp_day_dict[eng_day]
mark_day = mark_day_dict[eng_day]
ohasenword = f'#おは戦{japan_year}{month}{date}{eng_month}{jp_day}{mark_day}'
return ohasenword
最初の3行はそれぞれおは戦のハッシュタグを作るためのパーツを辞書として格納しています。
eng_month_dict = {'01':'j','02':'f','03':'m','04':'a','05':'m','06':'j','07':'j','08':'a','09':'s','10':'o','11':'n','12':'d'}
jp_day_dict = {'Mon':'g','Tue':'k','Wed':'s','Thu':'m','Fri':'k','Sat':'d','Sun':'n'}
mark_day_dict = {'Mon':'🌜','Tue':'🔥','Wed':'🌊','Thu':'🌲','Fri':'🍺','Sat':'🍩','Sun':'🍨'}
上から数字の月から英語の月の一文字目に変える辞書、英語の曜日から日本語の曜日の一文字目に変える辞書、英語の曜日から絵文字に変える辞書です。
ここから年月日の値を取得し、おは戦用に改変していきます。
まず年ですが和暦が必要、つまり西暦2021年なら令和3年となるようにしなければいけません。
ということでとりあえず西暦を取得し、2018を引くことで和暦にしました。
japan_year = int(timenow.strftime('%Y')) - 2018
これだと和暦が変わるたびに修正しなければいけませんが、そうそう変わることもないのでまぁいいかなと。
最初は「Japanera」という和暦を計算するライブラリも使ってみたのですが、ローカル環境ではうまくいくものの、どうもサーバーとの相性が悪いみたいで、Cronで自動化するとエラーとなったため、上記の単純に引き算する方法にしました。

次に月の値です。
月に関しては2回使い、1度目は年月日の数値として、2度目は月の英語名の一文字目を使います。
month = str(timenow.month).zfill(2)
eng_month = eng_month_dict[month]
ここで注意しなければいけないのは、「timenow.month」で取得した値は数値で「1月から9月は1桁」であること。
しかしおは戦のハッシュタグでは1桁の場合は0埋めした2桁の文字にする必要があります。
そこでまずstr()で文字列にしたのち、「zfill(2)」を使うことで2桁で1桁の場合は10の位が0埋めされた数値が文字として取得できます。
英語名の一文字目を取得するには辞書で取得しています。
日も月と同様に1桁の場合は0埋めする必要があるので、同様の処理をします。
さらに「.strftime(‘%a’)」で英語の曜日(短縮形)を取得し、辞書を使って、日本語の曜日の一文字目に変換します。
また曜日の絵文字も同様に辞書で変換します。
date = str(timenow.day).zfill(2)
eng_day = timenow.strftime('%a')
jp_day = jp_day_dict[eng_day]
mark_day = mark_day_dict[eng_day]
最後にそれぞれ取得・変換したパーツから文字列を組み立て、返します。
ohasenword = f'#おは戦{japan_year}{month}{date}{eng_month}{jp_day}{mark_day}'
return ohasenword
これでohasenmake関数は完了です。
main関数
あとはmain関数にこのohasenmake関数を入れて実行プログラムとします。
def main():
ohasenword = ohasenmake(timenow)
print(ohasenword)
if __name__ == '__main__':
main()
ちなみにおは戦のハッシュタグを作成したあと、print関数で表示しています。
ということで実行してみたのがこちら。
実行結果
#おは戦30909sm🌴
この日は令和3年9月9日(木)だったので、このようなおは戦のハッシュタグになります。
ということでこれでかなりおは戦のハッシュタグの作成が楽になることでしょう。
ではでは今回はこんな感じで。
コメント