pythonで端末画面を保存する。
ブログにコマンドラインを貼り付けるとき
以下の作業を毎回行っていた。
結構めんどいので、自動化しようと思う。
pythonの勉強がてら端末画面切り出しアプリを作ってみます。
pythonでスクリーンショットの取り込み
まずは、スクリーンショットの取り込みです。
pythonではPyAutoGuiを使用するとスクリーンショットが取得できるようです。
PyAutoGuiのインストール
PyAutoGuiはpipでインストールする。
sudo apt install python-xlib scrot pip install pyautogui
コード
import pyautogui sc = pyautogui.screenshot() sc.save('screen.png')
pythonでアプリケーションの座標取得
次は端末画面のみをスクショするため、端末の位置座標を取得します。
subprocessでxwininfoを使用すれば取得できるようです。
from subprocess import Popen, PIPE import re cmd = ["xwininfo", "-name", terminal_name] p = Popen(cmd, stdout = PIPE, stderr = PIPE) ret = str(p.communicate()) coord = re.search('X:\s+(\d+)[^Y]+Y:\s+(\d+)', ret) appwin_x,appwin_y = coord.groups()
完成
# -*- coding: utf-8 -*- import os import sys import re from subprocess import Popen, PIPE import pyautogui class SaveTerminal(): def __init__(self, argvs): self.argvs = argvs # コマンドライン引数の判定処理 if len(self.argvs) == 2: filename = argvs[1] if os.path.splitext(filename)[1] != '.png': filename = os.path.splitext(filename)[0] + ".png" elif len(self.argvs) == 1: filename = "default.png" elif len(self.argvs) > 2: print("エラー:引数は1つです。") exit() # osでユーザ名、コンピュータ名、カレントディレクトリを取得する。 user = os.getlogin() host = os.uname()[1] cdir = os.getcwd().replace("/home/"+user, "~") # ターミナルの名前 terminal = user + "@" + host +": " + cdir # コマンド cmd = ["xwininfo", "-name", terminal] # subprocessでのxwininfoの情報を取得する p = Popen(cmd, stdout = PIPE, stderr = PIPE) ret = str(p.communicate()) # xwininfoの情報から正規表現で端末の左上の座標を取得する coord = re.search('X:\s+(\d+)[^Y]+Y:\s+(\d+)', ret) appwin_x,appwin_y = coord.groups() # xwininfoの情報から正規表現で端末のサイズを取得する coord = re.search('Width:\s+(\d+)[^Y]+Height:\s+(\d+)', ret) appwin_w,appwin_h = coord.groups() # 切り出す領域を指定する。 # このアプリを呼び出す行は不要なのでサイズを高さを短くしている input = (int(appwin_x), int(appwin_y), int(appwin_w), int(appwin_h)-33) sc = pyautogui.screenshot(region=input) sc.save(filename) print("端末画面を「" + filename + "」で保存しました。") if __name__ == "__main__": argvs = sys.argv SaveTerminal(argvs)
引数にファイル名を入れればその名前で保存できます。
以上。
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ
- 出版社/メーカー: 日経BP社
- 発売日: 2018/03/20
- メディア: Kindle版
- この商品を含むブログを見る
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
- 作者: Al Sweigart,相川愛三
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る