【Python】テキストから一文取得、日時を取得して挨拶ツイート文を作るスクリプト

Python

今回の内容

テキストからランダムに1行を取得、現在の日時を取得、ついでに引数があれば取得してツイート内容を作成して、以下のようなツイート内容を作るスクリプトを作りましたのでその備忘録です。

「おはようございます!
本日は00月00日何曜日、現在時刻は00時00分です。
今日も一日がんばりましょう!」

ソースコード

# Greeting.py

import pathlib
import datetime
import random
import My_tweet_script as mts


def main(section):
    api = mts.tp_set(*mts.settings_api(section))
    tweet = tweet_greeting()
    mts.tweet_check(api,tweet,section)


def tweet_greeting():
    dt_now = datetime.datetime.now()
    today = dt_now.strftime('%m月%d日')
    at_time = dt_now.strftime('%H時%M分')
    greeting = greeting_txt()
    tweet_text = mts.tweet_text()
    tweet = (greeting +
            "本日は" + today + week_day (dt_now) + "、現在時刻は" + at_time + "です。" + "\n\n" +
            tweet_text)
    tweet = tweet.strip()
    return tweet


def week_day(dt):
    w_list = ['月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', '日曜日']
    return(w_list[dt.weekday()])


def greeting_txt():
    current_dir = pathlib.Path(__file__).resolve().parent
    f = open(current_dir/'greeting.txt')
    text_list = f.readlines()
    f.close()
    text_list  = [s for s in text_list if not s.startswith('#')]
    greeting = random.choice(text_list)
    return greeting


if __name__ == '__main__':
    main('user')
# greeting.txt
おはようございます!
グッドモーニング!

簡単な解説

日時の取得、用意したテキストから一文ランダムに取得、引数があればそれも取得してツイート内容を作ります。

肝心のツイート実行処理については『【Python,tweepy】Pythonでコンソールからツイートするスクリプト』にて紹介しております。

現在日時の取得

import datetime

dt_now = datetime.datetime.now()
today = dt_now.strftime('%m月%d日')
at_time = dt_now.strftime('%H時%M分')

datetimeモジュールで日付、時間を取得しています。
【参考】
『Pythonで現在時刻・日付・日時を取得』(note.nkmk.me)

曜日の取得

w_list = ['月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', '日曜日']

w_list[dt_now.weekday()]

weekday()メソッドは月〜日曜日を0〜6の数字で返します。なので、曜日のリストを使ってリスト[位置版号]で取り出すことができます。参考にさせていただいたページには、この方法以外にも様々な手法が紹介されていました。

【参考】
『Pythonで日付から曜日や月を文字列(日本語や英語など)で取得』(note.nkmk.me)

テキストから一行を取得

作業としては、以下を順に実行していきます。
・テキストファイルを開く
・一行ずつリストとして取得する
・#から始まるものを除外する
・リストからランダムに1つ選択する

ファイルパスの指定
f = open('ファイルパス')

ファイルを開くだけならopenを使えばいいのですが、どこから実行するかによってファイルまでの相対パスが変わってしまうためpathlibモジュールを使ってスクリプトからの相対パスで指定できるようにします。

import pathlib

current_dir = pathlib.Path(__file__).resolve().parent
f = open(current_dir/'greeting.txt')

【参考】
『Python3 自作モジュールのインポートにハマる』(かもメモ)

テキストファイルをリストとして取得
f = open('ファイルパス')
text_list = f.readlines()
f.close()

openでファイルを開き、readlines()メソッドで一行ずつ読み込んでリストにします。

【参考】
『Python: テキストファイルの読み込み – read()、readlines()、readline()メソッド』(Yukun’s Blog)

“#”から始まるものを除外する
text_list  = [s for s in text_list if not s.startswith('#')]

「#から始まる、に当てはまらないもの」を抽出してリストにすることで、#から始まるものを除外しています。リストから除外については以下を参考にさせていただきました。

【参考】
『Pythonでリスト(配列)の要素を削除するclear, pop, remove, del』(note.nkmk.me)

リストからランダムに1つ選択する
import random

random.choice(リスト)

randomモジュールのchoice()メソッドを使うことで、リストからランダムに1つ選択します。

【参考】
『Pythonでリストからランダムに要素を選択するchoice, sample, choices』(note.nkmk.me)

コメント

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