|
13 | 13 | from blinkpy import api |
14 | 14 | from blinkpy.helpers.constants import TIMEOUT_MEDIA |
15 | 15 | from blinkpy.helpers.util import to_alphanumeric |
| 16 | +from blinkpy.livestream import BlinkLiveStream |
16 | 17 |
|
17 | 18 | _LOGGER = logging.getLogger(__name__) |
18 | 19 |
|
@@ -413,6 +414,15 @@ async def get_liveview(self): |
413 | 414 | ) |
414 | 415 | return response["server"] |
415 | 416 |
|
| 417 | + async def init_livestream(self): |
| 418 | + """Initialize livestream.""" |
| 419 | + response = await api.request_camera_liveview( |
| 420 | + self.sync.blink, self.sync.network_id, self.camera_id |
| 421 | + ) |
| 422 | + if not response["server"].startswith("immis://"): |
| 423 | + raise NotImplementedError("Unsupported: {}".format(response["server"])) |
| 424 | + return BlinkLiveStream(self, response) |
| 425 | + |
416 | 426 | async def image_to_file(self, path): |
417 | 427 | """ |
418 | 428 | Write image to file. |
@@ -548,13 +558,24 @@ async def get_liveview(self): |
548 | 558 | f"{self.sync.blink.account_id}/networks/" |
549 | 559 | f"{self.network_id}/owls/{self.camera_id}/liveview" |
550 | 560 | ) |
551 | | - response = await api.http_post(self.sync.blink, url) |
| 561 | + data = dumps({"intent": "liveview"}) |
| 562 | + response = await api.http_post(self.sync.blink, url, data=data) |
| 563 | + await api.wait_for_command(self.sync.blink, response) |
| 564 | + return response["server"] |
| 565 | + |
| 566 | + async def init_livestream(self): |
| 567 | + """Initialize livestream.""" |
| 568 | + url = ( |
| 569 | + f"{self.sync.urls.base_url}/api/v1/accounts/" |
| 570 | + f"{self.sync.blink.account_id}/networks/" |
| 571 | + f"{self.network_id}/owls/{self.camera_id}/liveview" |
| 572 | + ) |
| 573 | + data = dumps({"intent": "liveview"}) |
| 574 | + response = await api.http_post(self.sync.blink, url, data=data) |
552 | 575 | await api.wait_for_command(self.sync.blink, response) |
553 | | - server = response["server"] |
554 | | - server_split = server.split(":") |
555 | | - server_split[0] = "rtsps" |
556 | | - link = ":".join(server_split) |
557 | | - return link |
| 576 | + if not response["server"].startswith("immis://"): |
| 577 | + raise NotImplementedError("Unsupported: {}".format(response["server"])) |
| 578 | + return BlinkLiveStream(self, response) |
558 | 579 |
|
559 | 580 |
|
560 | 581 | class BlinkDoorbell(BlinkCamera): |
@@ -620,8 +641,21 @@ async def get_liveview(self): |
620 | 641 | f"{self.sync.blink.account_id}/networks/" |
621 | 642 | f"{self.sync.network_id}/doorbells/{self.camera_id}/liveview" |
622 | 643 | ) |
623 | | - response = await api.http_post(self.sync.blink, url) |
| 644 | + data = dumps({"intent": "liveview"}) |
| 645 | + response = await api.http_post(self.sync.blink, url, data=data) |
| 646 | + await api.wait_for_command(self.sync.blink, response) |
| 647 | + return response["server"] |
| 648 | + |
| 649 | + async def init_livestream(self): |
| 650 | + """Initialize livestream.""" |
| 651 | + url = ( |
| 652 | + f"{self.sync.urls.base_url}/api/v1/accounts/" |
| 653 | + f"{self.sync.blink.account_id}/networks/" |
| 654 | + f"{self.sync.network_id}/doorbells/{self.camera_id}/liveview" |
| 655 | + ) |
| 656 | + data = dumps({"intent": "liveview"}) |
| 657 | + response = await api.http_post(self.sync.blink, url, data=data) |
624 | 658 | await api.wait_for_command(self.sync.blink, response) |
625 | | - server = response["server"] |
626 | | - link = server.replace("immis://", "rtsps://") |
627 | | - return link |
| 659 | + if not response["server"].startswith("immis://"): |
| 660 | + raise NotImplementedError("Unsupported: {}".format(response["server"])) |
| 661 | + return BlinkLiveStream(self, response) |
0 commit comments