From cb2f42b3367ca44af5dc5181a3f3d3569ad2d42d Mon Sep 17 00:00:00 2001
From: Kevin McCormack <harlemsquirrel@gmail.com>
Date: Sun, 3 Nov 2019 22:11:14 -0500
Subject: [PATCH] Update Vivotek component stream source (#27941)

* Update Vivotek component

Fix building stream URL

* Update Vivotek component

Make stream path optionally configurable.

* Update Vivotek camera integration

Use f-string to build stream source URL.
This improve readability and I hear it runs faster.
---
 homeassistant/components/vivotek/camera.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/homeassistant/components/vivotek/camera.py b/homeassistant/components/vivotek/camera.py
index 012c1e1df34..c39a9b495bd 100644
--- a/homeassistant/components/vivotek/camera.py
+++ b/homeassistant/components/vivotek/camera.py
@@ -20,9 +20,12 @@ _LOGGER = logging.getLogger(__name__)
 
 CONF_FRAMERATE = "framerate"
 
+CONF_STREAM_PATH = "stream_path"
+
 DEFAULT_CAMERA_BRAND = "Vivotek"
 DEFAULT_NAME = "Vivotek Camera"
 DEFAULT_EVENT_0_KEY = "event_i0_enable"
+DEFAULT_STREAM_SOURCE = "live.sdp"
 
 PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
     {
@@ -33,12 +36,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
         vol.Optional(CONF_SSL, default=False): cv.boolean,
         vol.Optional(CONF_VERIFY_SSL, default=True): cv.boolean,
         vol.Optional(CONF_FRAMERATE, default=2): cv.positive_int,
+        vol.Optional(CONF_STREAM_PATH, default=DEFAULT_STREAM_SOURCE): cv.string,
     }
 )
 
 
 def setup_platform(hass, config, add_entities, discovery_info=None):
     """Set up a Vivotek IP Camera."""
+    creds = f"{config[CONF_USERNAME]}:{config[CONF_PASSWORD]}"
     args = dict(
         config=config,
         cam=VivotekCamera(
@@ -48,12 +53,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
             usr=config[CONF_USERNAME],
             pwd=config[CONF_PASSWORD],
         ),
-        stream_source=(
-            "rtsp://%s:%s@%s:554/live.sdp",
-            config[CONF_USERNAME],
-            config[CONF_PASSWORD],
-            config[CONF_IP_ADDRESS],
-        ),
+        stream_source=f"rtsp://{creds}@{config[CONF_IP_ADDRESS]}:554/{config[CONF_STREAM_PATH]}",
     )
     add_entities([VivotekCam(**args)], True)