Python:文字列を画像にしてtwitterでseleniumで自動投稿

他の記事を参考にしながら書きました。
一度image.pngで保存してから投稿しています。
pywinautoについては、Python3.9にして動作しました。

```Python:strtoimage_tweet.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import chromedriver_binary 
import pywinauto
import PIL.Image
import PIL.ImageDraw
import PIL.ImageFont
import time

account=""
password=""
#ログイン用

def strtoimage(text):
  ttfontname = "C:\\Windows\\Fonts\\meiryob.ttc"
  fontsize = 12

  # 画像サイズ，背景色，フォントの色を設定
  canvasSize    = (1024, 750)
  backgroundRGB = (256, 256, 256)
  textRGB       = (0, 0, 0)

  # 文字を描く画像の作成
  img  = PIL.Image.new('RGB', canvasSize, backgroundRGB)
  draw = PIL.ImageDraw.Draw(img)

  # 用意した画像に文字列を描く
  font = PIL.ImageFont.truetype(ttfontname, fontsize)
  textWidth, textHeight = draw.textsize(text,font=font)
  textTopLeft = (canvasSize[0]//6, canvasSize[1]//2-textHeight//2) # 前から1/6，上下中央に配置
  draw.text(textTopLeft, text, fill=textRGB, font=font)
  img.save("image.png")

def upload_item_photo():
    #import pdb; pdb.set_trace()
    # # フォルダを取得
    photo_folder = os.path.abspath(R"C:\Users\----\Downloads")

    # 開くダイアログを探して接続する
    # ダイアログタイトルを手掛かりにwindowを探す
    findWindow = lambda: pywinauto.findwindows.find_windows(title=u'開く')[0]

    # 上記Wndowを探す処理が完了したかチェックする
    # pywinauto.timings.wait_until(タイムアウトまでの時間, 繰り返す間隔(Sec), 組み込み関数)
    dialog = pywinauto.timings.wait_until_passes(20, 1, findWindow)

    # pywinauto に探し出したダイアログを接続
    pwa_app = pywinauto.Application()
    pwa_app.connect(handle=dialog)
    window = pwa_app[u"開く"]

    addres = window.children()[39]
    addres.click()

    # エクスプローラーのフォルダパス変更
    exp_folder_path = window.children()[43]
    exp_folder_path.type_keys(photo_folder+'{ENTER}',with_spaces=True)

    file_name = "image.png"

    # テキストボックス(ファイル名)にPATHを入力
    tb = window[u"ファイル名(&N):"]
    if tb.is_enabled():
        tb.click()
        edit = window.Edit4
        edit.set_focus()
        # ファイルを選択し、Alt + Oを押下
        edit.type_keys(file_name + '%O',with_spaces=True)    

def login_twitter():
    global browser
    # ログインページを開く
    options=Options()
    browser = webdriver.Chrome(options=options)
    browser.get('https://twitter.com/login/')
    time.sleep(2)  # 待ち
    # account入力
    element_account = browser.find_element_by_name("session[username_or_email]")
    element_account.send_keys(account)
    time.sleep(2)  # 待ち
    # パスワードを入力する
    element_pass = browser.find_element_by_name("session[password]")
    element_pass.send_keys(password)
    time.sleep(3)  # 動作止める
    # ログインボタンクリック
    element_login = browser.find_element_by_xpath('//*[@data-testid="LoginForm_Login_Button"]')
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    element_login.click()
    time.sleep(3) # 待ち

def remove_emoji(src_str):
    import emoji
    return ''.join(c for c in src_str if c not in emoji.UNICODE_EMOJI)
#Seleniumで絵文字の入力はできないことがあるので、その場合は絵文字を取り除いてください

login_twitter()
browser.find_element_by_class_name("public-DraftEditor-content").send_keys("テキストとしてツイートしたい内容")
strtoimage("画像に変換したい文字列")
browser.find_element_by_xpath("//div[@class=\"css-18t94o4 css-1dbjc4n r-1niwhzg r-42olwf r-sdzlij r-1phboty r-rs99b7 r-1w2pmg r-1vuahiu r-mvpalk r-1imd94c r-1vuscfd r-53xb7h r-1ny4l3l r-mk0yit r-o7ynqc r-6416eg r-lrvibr\"]").click()
#画像添付ボタンをクリック
time.sleep(3)
upload_item_photo()
time.sleep(3)
browser.find_element_by_xpath('//*[@data-testid="tweetButtonInline"]').click()
#ツイートボタンを押す
```