タイトルの通りです。
ログオン・ログオフ時に自動的にツイートして入退記録が出来るようにしてしまいました。
ちなみにWindowsです。
全体の大まかな流れは
のお手軽3ステップです。
2.コード書き書き
実際に書いたコードはこちら!
import tweepy import datetime #ステップ1で取得したAPIKeyを以下に入力 CK = 'XXXXX' #CK=consumer_key CS = 'XXXXX' #CS=consumer_secret AT = 'XXXXX' #AT=access_token AS = 'XXXXX' #AS=access_secret auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) api = tweepy.API(auth) #ツイート d = datetime.datetime.today() api.update_status('%s年%s月%s日' % (d.year, d.month, d.day) + '%s時%s分%s秒' % (d.hour, d.minute, d.second) + 'にラボin!\n 今日も一日頑張るぞい')
時間の部分は以下の記事を参考にしました。
Python: 現在の日付・時刻の取得と出力 - datetimeクラスの属性、today()、strftime()メソッド | Yukun's Blog
3.ログオン・ログオフ時に発動するように設定
細かいステップを説明すると
3.1 laboin.pyを発動するようなbatファイルの作成
3.2 laboin.batをグループポリシーでログオンスクリプトとして登録
3.3 laboin.pyをログオンディレクトリに置いてくる
になります。
3.1 laboin.pyを発動するようなbatファイルの作成
これの3番目の方法を参考にbatファイルを作成します。
WindowsでPythonの実行する4つの方法 - ちょっと便利なてっちーノート
3.2 laboin.batをグループポリシーでログオンスクリプトとして登録
これが一番わかりやすいと思います。
グループ・ポリシーを使って、コンピュータの終了時にコマンドを実行する:Tech TIPS - @IT
自分はシャットダウン時ではなくてログオフ時にしたかったので実際の登録場所は以下の記事を参考にしました。
Windows 2012 でログオン・ログオフ時間をイベントへ記録する。
そしてこれらの記事を参考にログオンスクリプト・ログオフスクリプトとして登録します。
…それだけのはずなのに何度やってもうまく発動しないので、
3.3 laboin.pyをログオンディレクトリに置いてくる
のステップをやります。
以下の図はログオンスクリプトにlaboin.batを登録しているだけの状態です。
他の設定を少しいじって(後述)実行すると以下のようなメッセージが吐かれます。
多分
①ログオンスクリプトのbatファイルが開く
②batファイルの処理としてpyファイルを開こうとするがないので開けない
というような流れなので参照ボタンを押して出てくる場所に以下のように実行されるべきpyファイルを置いてきたところ
上手くいくようになりました。
ちなみにログオンスクリプトに登録して、仮に失敗したとしても親切にエラーを吐いてくれません。
[GP]「実行中のレガシ ログオン スクリプトを表示しない」で利用されているレジストリ | Windowsレジストリ置き場
を参考にしてログオンスクリプトの実行を表示する に設定することで原因が明らかになりました。
この記事を書く上では以下の記事にお世話になりました。
はてなブログにソースコードを色付けして貼り付ける方法 - sonickun.log
更なる改良点としては滞在時間算出したり、Excelに書き込むようにしてみたりとかで管理とか色々発展できそうですね。
けど今回はここまでで勘弁してください。なんでこんなものを作ってしまったのか、自分も今後も使い続けるかは謎です。
追記:
なんかシャットダウンがすごい遅くなってたのですが、laboaout.batファイルのpauseを消したところ解決しました。