Добро пожаловать в мир генераторов QR-кодов! Сегодня мы собираемся создать собственный генератор QR-кода WiFi, используя веб-фреймворк Flask и библиотеку qrcode. Но прежде чем мы начнем, давайте удостоверимся, что у нас есть все необходимое.

Во-первых, убедитесь, что у вас установлен Flask. Вы можете установить его, запустив pip install flask в своем терминале. Далее нам нужно установить библиотеку qrcode. Вы можете сделать это, запустив pip install qrcode==6.0. Это важный шаг, потому что он гарантирует, что мы используем правильную версию библиотеки, совместимую с остальной частью нашего кода.

Теперь, когда у нас есть все необходимое, давайте начнем с нашего кода! Начнем с импорта Flask, request и send_file из модуля flask, а также qrcode и BytesIO из модуля io.

from flask import Flask, request, send_file
import qrcode
from io import BytesIO

Далее мы создадим экземпляр класса Flask, который будем использовать для определения и запуска нашего веб-приложения.

app = Flask(__name__)

Теперь мы определим маршрут для нашего приложения с помощью декоратора @app.route. Этот маршрут будет обрабатывать запросы к конечной точке «/» и вызывать функцию generate_qr(), которую мы определим далее.

@app.route('/')
def generate_qr():

Внутри функции generate_qr() мы создадим две переменные, ssid и password, в которых будут храниться имя и пароль для нашей сети Wi-Fi соответственно. Затем мы будем использовать эти переменные для создания строки в формате, который библиотека qrcode использует для кодирования информации WiFi в QR-код.

ssid = "Get Your Own Wifi"
    password = "ItIsMyWifi69"
    wifi_data = 'WIFI:S:{};T:WPA;P:{};;'.format(ssid, password)

Далее мы создадим экземпляр класса QRCode, который позволит нам сгенерировать QR-код с предоставленной нами информацией. Мы установим версию, исправление ошибок, размер окна и свойства границы для настройки QR-кода.

qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=5)

Затем мы добавим wifi_data в объект QR-кода и подгоним данные к QR-коду.

qr.add_data(wifi_data)
    qr.make(fit=True)

Мы создадим изображение QR-кода с черным и белым цветом fill_color и back_color соответственно.

img = qr.make_image(fill_color="black", back_color="white")

Теперь мы создадим объект BytesIO для хранения изображения в памяти и сохраним изображение в объекте BytesIO в формате PNG.

byteIO = BytesIO()
    img.save(byteIO, 'PNG')

Мы сбросим поиск к началу объекта byteIO и вернем файл изображения с MIME-типом «image/png».

byteIO.seek(0)
    return send_file(byteIO, mimetype='image/png')

Наконец, мы добавим проверку запуска приложения только в том случае, если скрипт запускается напрямую (а не импортируется как модуль).

if __name__ == '__main__':
    app.run(port=5000,debug=True)

Вот и все! Наш генератор QR-кода WiFi готов. Теперь вы можете запустить скрипт и посетить http://localhost:5000/, чтобы увидеть свой собственный QR-код для вашей сети WiFi.

С помощью этого удобного инструмента вы можете легко поделиться своей сетью Wi-Fi с друзьями и семьей, не раскрывая свой пароль. Просто помните, никогда не сообщайте свои пароли Wi-Fi никому, кому вы не доверяете. Удачи и удачного кодирования!

Полный код:

from flask import Flask, request, send_file
import qrcode
from io import BytesIO

app = Flask(__name__)

@app.route('/')
def generate_qr():
    ssid = "Get Your Own Wifi"
    password = "ItIsMyWifi69"

    wifi_data = 'WIFI:S:{};T:WPA;P:{};;'.format(ssid, password)

    qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=5)
    qr.add_data(wifi_data)
    qr.make(fit=True)
    img = qr.make_image(fill_color="black", back_color="white")

    byteIO = BytesIO()
    img.save(byteIO, 'PNG')
    byteIO.seek(0)
    return send_file(byteIO, mimetype='image/png')

if __name__ == '__main__':
    app.run(port=5000,debug=True)