samples(python): fix drive handling in source path
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Fri, 16 Nov 2018 00:23:26 +0000 (00:23 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Fri, 16 Nov 2018 00:24:34 +0000 (00:24 +0000)
samples/python/video.py

index e4eb2d3..87b45b8 100755 (executable)
@@ -32,6 +32,8 @@ Keys:
 # Python 2/3 compatibility
 from __future__ import print_function
 
+import re
+
 import numpy as np
 from numpy import pi, sin, cos
 
@@ -169,11 +171,11 @@ def create_capture(source = 0, fallback = presets['chess']):
     '''source: <int> or '<int>|<filename>|synth [:<param_name>=<value> [:...]]'
     '''
     source = str(source).strip()
+
+    # Win32: handle drive letter ('c:', ...)
+    source = re.sub(r'(^|=)([a-zA-Z]):([/\\a-zA-Z0-9])', r'\1?disk\2?\3', source)
     chunks = source.split(':')
-    # handle drive letter ('c:', ...)
-    if len(chunks) > 1 and len(chunks[0]) == 1 and chunks[0].isalpha():
-        chunks[1] = chunks[0] + ':' + chunks[1]
-        del chunks[0]
+    chunks = [re.sub(r'\?disk([a-zA-Z])\?', r'\1:', s) for s in chunks]
 
     source = chunks[0]
     try: source = int(source)