Python and/or Video help please

A month ago I had problems, after an Ubuntu upgrade, getting my screen resolution above 1024x768. In this forum I was given a link to the script below to fix the problem and it did! Joy. Now I tried to run a video and the screen went back to unknown and set to 1024x768 :( I ran the script again, and I get the following result: stephen@avalon:~/scripts$ ./get-edid.py VGA-1 Traceback (most recent call last): File "./get-edid.py", line 65, in <module> edid_bin = get_edid_for_connector(connector_name) File "./get-edid.py", line 51, in get_edid_for_connector edid_str = slurp_edid_string(i) File "./get-edid.py", line 39, in slurp_edid_string assert re.match(r'\tEDID:', output_lines[line_num+1]) AssertionError I do not know anything about Python. Can someone help me figure this out? Many thanks Script #!/usr/bin/env python import binascii import re import subprocess import sys from os.path import basename XRANDR_BIN = 'xrandr' # re.RegexObject: expected format of xrandr's EDID ascii representation EDID_DATA_PATTERN = re.compile(r'^\t\t[0-9a-f]{32}$') def get_edid_for_connector(connector_name): """Finds the EDID for the given connector. Args: connector_name (str): Name of a connector, i.e. HDMI-0, DP-1 Returns: Binary EDID for the connector, or None if not found. Raises: OSError: Failed to run xrandr. """ # re.RegexObject: pattern for this connector's xrandr --props section connector_pattern = re.compile('^{} connected'.format(connector_name)) try: xrandr_output = subprocess.check_output([XRANDR_BIN, '--props']) except OSError as e: sys.stderr.write('Failed to run {}\n'.format(XRANDR_BIN)) raise e output_lines = xrandr_output.decode('ascii').split('\n') def slurp_edid_string(line_num): """Helper for getting the EDID from a line match in xrandr output.""" edid = '' assert re.match(r'\tEDID:', output_lines[line_num+1]) for i in range(line_num + 2, len(output_lines)): line = output_lines[i] if EDID_DATA_PATTERN.match(line): edid += line.strip() else: break return edid if len(edid) > 0 else None for i in range(len(output_lines)): connector_match = connector_pattern.match(output_lines[i]) if connector_match: edid_str = slurp_edid_string(i) if edid_str is None: return None return binascii.unhexlify(edid_str) return None if __name__ == '__main__': if len(sys.argv) != 2: sys.exit('Usage: {} <OUTPUT>'.format(basename(sys.argv[0]))) connector_name = sys.argv[1] edid_bin = get_edid_for_connector(connector_name) if edid_bin is None: sys.exit('No EDID found for output {}'.format(connector_name)) if sys.version_info >= (3, 0): sys.stdout.buffer.write(edid_bin) else: sys.stdout.write(edid_bin) sys.exit(0) -- Stephen
participants (1)
-
Stephen