1. ホーム
  2. Python

ガールフレンドが深夜12時に彼女をベッドに急がせるよう頼んだが、私はそれをしないパイソンを持っています。

2022-02-20 01:47:38
<パス

ここで問題です。今夜、私のガールフレンドが12時に急いでベッドに入るようにと頼んできました。

でも、でも、眠くて起きていられない......ですよね?恋人と寝ることより大事なことがあるのか?

でも、恋人の命令には、あえて逆らわない・・・・・・。

でも、睡眠不足にはなりません

この時点でどうするか?そろそろPythonの出番です!

Pythonの登場

今回は彼氏の義務として、夜の12時に恋人にメッセージを送る自動プログラムを作ってみましょう。

インストールとインポート

2つのモジュールが必要です。 apscheduler ピュートグイ

ショートカット Windows+r でファイル名を指定して実行のコントロールボックスを開き、cmd と入力し、コマンドラインに移動して、入力します。

pip install apscheduler
pip install pyautogui


インポートする。

import pyautogui
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler # Scheduler that blocks the current process
# The blocking type scheduler blocks the current process, if you want a scheduler that runs in the background, you can use the following code.
# from apscheduler.schedulers.background import BackgroundScheduler


ピョートーギ

まず、メッセージの自動送信機能を実装してみましょう

pyautoguiはマウスやキーボードを操作することができる非常に強力なライブラリです。これを使って、コンピュータで自動的に行うことにします。

まずは基本的な設定から。

pyautogui.PAUSE = 1 # Set the interval (in seconds) between each operation, which prevents operations from going too fast


そして、WeChatにログインし、最小化します。

次に、WeChatタスクバーアイコンにマウスオーバーして、以下のステートメントを実行し、このポイントでのカーソルの座標を取得し、Pointオブジェクトを返します。

print(pyautogui.position()) # Print the coordinates, Point(x=148, y=879)
icon_position = pyautogui.position() # Point(x=148, y=879)


WeChatを開き、あなたのガールフレンドのトークバックウィンドウを選択し、入力ボックスにマウスを置き、再度カーソルの座標を取得します。

print(pyautogui.position()) # Print coordinates, Point(x=174, y=751)
entry_position = pyautogui.position() # Point(x=174, y=751)


次に、制御プログラムは2点を順番にクリックする。

pyautogui.click(icon_position) # Default left-click
# pyautogui.click(148, 879)
pyautogui.click(entry_position)
# pyautogui.click(174, 751)


WeChatを開き、フォーカスをロックした状態で、テキストの入力を開始します。

テキストの入力は、2つの方法で行うことができます。

  • pyautogui.typewrite(['o', 'n', 'e', 'enter'])

    メソッドにリストを渡します。各要素は単一の文字または特殊キーです。

  • pyautogui.typewrite('You can type multiple letters in this way')

    文字列を渡すが、文字と特殊キーを同時に印刷することはできない。

この2つの方法はどちらも中国語を直接入力できないので、入力メソッドに頼ることになります。

pyautogui.typewrite([*list('zhengzai '), *list('jinxing '), 'shift', *list('pyautogui'), 'shift', *list('shiyan '), 'enter'], 0.1) # The first argument is the input text, the second is the interval between inputting each character


操作性を高めるために ヒューマンライク マウスを移動させるコードを追加してみましょう。

pyautogui.moveTo(icon_position, duration=2) # duration is the execution time, optional
pyautogui.click(icon_position)
pyautogui.moveTo(entry_position, duration=2)
pyautogui.click(entry_position)
pyautogui.typewrite([*list('zhengzai '), *list('jinxing '), 'shift', *list('pyautogui'), 'shift', *list('shiyan '), 'enter'], 0.1) # The second parameter is the interval between pressing each optional


効果をご覧ください。

もちろん、本当に大量に入力するのが面倒な場合は、コピー&ペーストでOKです。

import pyperclip

pyperclip.copy('Experimenting with Chinese, please ignore it and don't call me an idiot') # copy
pyautogui.hotkey('ctrl', 'v') # Press the key combination method, ctrl+v paste
pyautogui.press('enter') # Press the key


<イグ
これでWeChatメッセージの自動送信は完了です。

アプスケジューラ

APScheduler は、Python コードの実行を一度だけ、あるいは定期的に、遅延スケジューリングできる Python ライブラリです。いつでも新しいタスクを追加したり、古いタスクを削除することができます。非常に便利なタイムドタスクを実現します。

scheduler = BlockingScheduler() # Instantiate a scheduler
scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # Add a job
scheduler.start()


add_jobメソッドはここで3つの引数を渡します。1つ目は時間が来たときに実行される関数、2つ目はトリガーの種類です。ここでは日付トリガーを使用しています。これは特定の時点でトリガーされ、ジョブは一度だけ実行されます。3番目のパラメータであるrun_dateは、実行時間です。この前にmain関数で自動メッセージ送信のコードをラップしておいたので、あとは時間が来たらそれを呼び出すだけです。

フルコード

import pyautogui
import pyperclip
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler

def main():
	pyautogui.PAUSE = 0

	icon_position = pyautogui.Point(x=148, y=879) # Taskbar icon position
	entry_position = pyautogui.Point(x=174, y=751) # entry box position

	pyautogui.moveTo(icon_position, duration=1) # duration is the execution time, optional
	pyautogui.click(icon_position)
	pyautogui.moveTo(entry_position, duration=0.7)
	pyautogui.click(entry_position)
	pyperclip.copy('Go to sleep')
	pyautogui.hotkey('ctrl', 'v')
	pyautogui.press('enter')
    pyperclip.copy('stupid pig')
	pyautogui.hotkey('ctrl', 'v')
	pyautogui.press('enter')
    
scheduler = BlockingScheduler() # instantiate
scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # add task
scheduler.start()


完了!これでもう寝られますね。

成果

翌朝起きたら、「なんで夜中の12時にまだパソコンがついていて、独り言をつぶやいているんだ!」と母に叱られました。

しかし、良いニュースは、私は恋人を失わなかったし、彼女を仕留めることができたということだ!


- THE END

さて、今回の記事はこれで終わりです。私が共有したのは以上です。読んでくださってありがとうございました。

この記事はコラムに含まれています。 Python関連
著者をフォローし、彼の記事を読み続けて、Pythonについてもっと学びましょう!
https://blog.csdn.net/weixin_52132159

おすすめの読み物