Refactor QR code generation to use Python

This commit is contained in:
Whispering Wind
2025-05-10 23:29:05 +03:30
committed by GitHub
parent a710d076fd
commit d852c21a9d

View File

@ -6,6 +6,8 @@ import json
import subprocess import subprocess
import argparse import argparse
import re import re
import qrcode
from io import StringIO
from typing import Tuple, Optional, Dict, List, Any from typing import Tuple, Optional, Dict, List, Any
from init_paths import * from init_paths import *
from paths import * from paths import *
@ -83,17 +85,20 @@ def generate_uri(username: str, auth_password: str, ip: str, port: str,
return f"{uri_base}?{params_str}#{username}-IPv{ip_version}" return f"{uri_base}?{params_str}#{username}-IPv{ip_version}"
def generate_qr_code(uri: str) -> List[str]: def generate_qr_code(uri: str) -> List[str]:
"""Generate QR code for the URI using qrencode.""" """Generate terminal-friendly ASCII QR code using pure Python."""
try: try:
result = subprocess.run( qr = qrcode.QRCode(
['qrencode', '-t', 'UTF8', '-s', '3', '-m', '2'], version=1,
input=uri.encode(), error_correction=qrcode.constants.ERROR_CORRECT_L,
capture_output=True, box_size=1,
check=True border=2,
) )
return result.stdout.decode().splitlines() qr.add_data(uri)
except subprocess.CalledProcessError: qr.make(fit=True)
return ["QR Code generation failed. Is qrencode installed?"]
output = StringIO()
qr.print_ascii(out=output, invert=True)
return output.getvalue().splitlines()
except Exception as e: except Exception as e:
return [f"Error generating QR code: {str(e)}"] return [f"Error generating QR code: {str(e)}"]