毎月壁紙を自動で変えたい!その2
前回の記事で毎月自動で壁紙を変えるプログラムを作ってみたのですが、PCを再起動すると壁紙がリセットされてしまったので、いろいろ試行錯誤してみました。
改善点
プログラムを毎日実行すると毎日壁紙ダウンロードすることになり、それはちょっとナンセンスだと思うのでif文
を使って条件分岐してみました。
また、python環境が無くても動くようにexe形式
に変換して動かすことにしました。
条件分岐
if文を使って、指定された格納先に「wallpaper_yyyymm_1.jpg」というファイルがないかを判定。
プログラム実施月の画像ファイルがない場合は、壁紙をダウンロードします。
まず、実施日の日付を取得し、ファイル名を作成します。これは前回と同じです。
#--- import Today's date ---
dt_now = datetime.datetime.now()
print(dt_now.strftime('%Y/%m/%d'))
#--- path make ---
dst_path = r'C:\Users\ayk_f\wallpaper\wallpaper_'+dt_now.strftime('%Y%m')+'_1.jpg'
wname = 'wallpaper_'+dt_now.strftime('%Y%m')+'_1.jpg'
print('path: '+dst_path)
$ python wallpaper_v2.py
2021/09/13
path: C:\Users\ayk_f\wallpaper\wallpaper_202109_1.jpg
ファイル名が作れたので該当するファイル名がないかを判定し、ない場合のみ壁紙をダウンロードします。
is_file = os. path.isfile(dst_path)
print(is_file)
if is_file:
print(f"{wname} is a file.")
pass #なにもしない
else:
print(f"{wname} is a not file.")
os. path.isfile()
関数は、指定したファイル名が存在する場合にTrueを返す、という関数らしいです。
今回は「指定したディレクトリに wallpaper_202109_1.jpg が存在する場合はなにもしない、存在しない場合はダウンロードする」ということになります。
pass
は、条件分岐の結果何もしない場合に入れておく必要があります。
今回は試験的にprint
を実行していますが、実際はコメントアウトするためpass
を入れています。
参考までに
今月の壁紙(wallpaper_202109_1.jpg)があるとき~~~!!!
$ python wallpaper_v2.0.py
2021/09/13
path: C:\Users\ayk_f\wallpaper\wallpaper_202109_1.jpg
True
ないとき~~~~
$ python wallpaper_v2.0.py
2021/09/13
path: C:\Users\ayk_f\wallpaper\wallpaper_202109_1.jpg
False
このネタがやりたかっただけ・・・・(笑)
ないとき(else時)に壁紙をダウンロードするコードを実行し、最後に壁紙を設定するコードを実行すれば完成です。
壁紙の設定は再起動時にリセットされてしまうので、if文の外に出しておく必要があります。
コードのexeファイル化
この記事の通りにやりました。
参考までに、記録しておきます。
1. pyinstallerをインストール
Pythonをインストールしている状態で、pyinstaller
をインストールします。
$ pip install pyinstaller
2. exeファイル作成
インストールが完了したら、exe形式
のファイルを作成します。
$ pyinstaller wallpaper_v2.0.py --onefile
--onefile
オプションは、関連ファイルを1つにまとめてくれるとのこと。省略可能です。
実行後、3つのフォルダとspec形式
のファイルができました。
distフォルダの中に、作成したexe形式
のファイルが作成されています。
これで、exe形式
に変換できました!
さいごに
前回投稿したコードの改版についてでした。
折角exe化したので、タスクスケジューラをやめてwindowsのスタートアップにほおりこんでおくことにしました。
毎日PC立ち上げたタイミングで実行してくれるので、もうこれで安心のはず・・・。