The shell version had to pass the password through a shell variable into a Python subprocess, which is fragile for special characters. The Python version uses getpass.getpass() which reads directly from the terminal at the Python level — no shell variable, no quoting issues, no risk of special characters being mishandled. https://claude.ai/code/session_01C4jbd3waXG3eKZYbGUjLUQ
17 lines
493 B
Python
Executable File
17 lines
493 B
Python
Executable File
#!/usr/bin/env python3
|
|
"""URL-encode a camera password for use in an RTSP URL.
|
|
|
|
Runs entirely locally. The password is read without echoing via
|
|
getpass — never written to disk, never sent anywhere.
|
|
"""
|
|
|
|
import getpass
|
|
import urllib.parse
|
|
|
|
password = getpass.getpass("Password (not echoed): ")
|
|
encoded = urllib.parse.quote(password, safe="")
|
|
|
|
print(f"\nURL-encoded: {encoded}")
|
|
print( "\nPaste into .env like:")
|
|
print(f" CAM_RTSP_<cam>='rtsp://admin:{encoded}@192.168.1.XXX:554/stream1'")
|