Skip to content

Instantly share code, notes, and snippets.

@3110
Created June 13, 2024 15:09
Show Gist options
  • Save 3110/57fe917491c520df13e367d30732c72b to your computer and use it in GitHub Desktop.
Save 3110/57fe917491c520df13e367d30732c72b to your computer and use it in GitHub Desktop.
Wi-Fi接続用のQRコードを生成する
import qrcode
import argparse
VALID_ENCRYPTIONS = ["WEP", "WPA", "WPA2"]
DEFAULT_SIZE = 300
def generate_wifi_qrcode(ssid, password, filename, encryption="WPA2", size=DEFAULT_SIZE):
# 暗号化方式の検証
if encryption not in VALID_ENCRYPTIONS:
raise ValueError(f"無効な暗号化方式です: {encryption}。有効な値は {', '.join(VALID_ENCRYPTIONS)} です。")
# Wi-Fi接続用のテキストデータを生成
wifi_data = f"WIFI:T:{encryption};S:{ssid};P:{password};;"
# QRコードを生成
qr = qrcode.QRCode(version=None, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4)
qr.add_data(wifi_data)
qr.make(fit=True)
# QRコードをPNG画像として保存
img = qr.make_image(fill_color="black", back_color="white")
img = img.resize((size, size))
img.save(filename)
print(f"QRコードが生成されました: {filename}")
if __name__ == "__main__":
# コマンドライン引数のパーサーを設定
parser = argparse.ArgumentParser(description="Wi-Fi接続用のQRコードを生成します")
parser.add_argument("ssid", type=str, help="Wi-FiのSSID")
parser.add_argument("password", type=str, help="Wi-Fiのパスワード")
parser.add_argument("filename", type=str, help="出力するQRコード画像のファイル名")
parser.add_argument("-e", "--encryption", type=str, default="WPA2", help="暗号化方式 (デフォルト: WPA2)")
parser.add_argument("-s", "--size", type=int, default=DEFAULT_SIZE, help=f"QRコードの一辺のピクセルサイズ (デフォルト: {DEFAULT_SIZE})")
# コマンドライン引数を解析
args = parser.parse_args()
try:
# Wi-Fi接続用のQRコードを生成
generate_wifi_qrcode(args.ssid, args.password, args.filename, args.encryption, args.size)
except ValueError as e:
print(f"エラー: {str(e)}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment