コード例 #1
0
    def check_new_videos(self):
        """Check if new videos since last refresh."""
        try:
            interval = self.blink.last_refresh - self.motion_interval * 60
        except TypeError:
            # This is the first start, so refresh hasn't happened yet.
            # No need to check for motion.
            return False

        resp = api.request_videos(self.blink, time=interval, page=1)

        for camera in self.cameras.keys():
            self.motion[camera] = False

        try:
            info = resp["media"]
        except (KeyError, TypeError):
            _LOGGER.warning("Could not check for motion. Response: %s", resp)
            return False

        for entry in info:
            try:
                name = entry["device_name"]
                clip = entry["media"]
                timestamp = entry["created_at"]
                if self.check_new_video_time(timestamp):
                    self.motion[name] = True and self.arm
                    self.last_record[name] = {"clip": clip, "time": timestamp}
            except KeyError:
                _LOGGER.debug("No new videos since last refresh.")

        return True
コード例 #2
0
ファイル: sync_module.py プロジェクト: chrisAOT/blinkpy
    def check_new_videos(self):
        """Check if new videos since last refresh."""
        resp = api.request_videos(self.blink,
                                  time=self.blink.last_refresh,
                                  page=0)

        for camera in self.cameras.keys():
            self.motion[camera] = False

        try:
            info = resp['videos']
        except (KeyError, TypeError):
            _LOGGER.warning("Could not check for motion. Response: %s", resp)
            return False

        for entry in info:
            try:
                name = entry['camera_name']
                clip = entry['address']
                timestamp = entry['created_at']
                self.motion[name] = True
                self.last_record[name] = {'clip': clip, 'time': timestamp}
            except KeyError:
                _LOGGER.debug("No new videos since last refresh.")

        return True
コード例 #3
0
ファイル: sync_module.py プロジェクト: yangtianzhi/blinkpy
    def get_videos(self, start_page=0, end_page=1):
        """
        Retrieve last recorded videos per camera.

        :param start_page: Page to start reading from on blink servers
                           (defaults to 0)
        :param end_page: Page to stop reading from (defaults to 1)
        """
        videos = list()
        all_dates = dict()

        for page_num in range(start_page, end_page + 1):
            this_page = api.request_videos(self.blink, page=page_num)
            if not this_page:
                break
            videos.append(this_page)
        _LOGGER.debug("Getting videos from page %s through %s", start_page,
                      end_page)
        for page in videos:
            for entry in page:
                camera_name = entry['camera_name']
                clip_addr = entry['address']
                thumb_addr = entry['thumbnail']
                clip_date = clip_addr.split('_')[-6:]
                clip_date = '_'.join(clip_date)
                clip_date = clip_date.split('.')[0]
                try:
                    self.all_clips[camera_name][clip_date] = clip_addr
                except KeyError:
                    self.all_clips[camera_name] = {clip_date: clip_addr}

                if camera_name not in all_dates:
                    all_dates[camera_name] = list()
                all_dates[camera_name].append(clip_date)
                try:
                    self.videos[camera_name].append({
                        'clip': clip_addr,
                        'thumb': thumb_addr,
                    })
                except KeyError:
                    self.videos[camera_name] = [{
                        'clip': clip_addr,
                        'thumb': thumb_addr,
                    }]
        self.record_dates = all_dates
        _LOGGER.debug("Retrieved a total of %s records", len(all_dates))
        return self.videos
コード例 #4
0
ファイル: blinkpy.py プロジェクト: tonyli508/blinkpy
    def download_videos(self,
                        path,
                        since=None,
                        camera="all",
                        stop=10,
                        debug=False):
        """
        Download all videos from server since specified time.

        :param path: Path to write files.  /path/<cameraname>_<recorddate>.mp4
        :param since: Date and time to get videos from.
                      Ex: "2018/07/28 12:33:00" to retrieve videos since
                           July 28th 2018 at 12:33:00
        :param camera: Camera name to retrieve.  Defaults to "all".
                       Use a list for multiple cameras.
        :param stop: Page to stop on (~25 items per page. Default page 10).
        :param debug: Set to TRUE to prevent downloading of items.
                      Instead of downloading, entries will be printed to log.
        """
        if since is None:
            since_epochs = self.last_refresh
        else:
            parsed_datetime = parse(since, fuzzy=True)
            since_epochs = parsed_datetime.timestamp()

        formatted_date = get_time(time_to_convert=since_epochs)
        _LOGGER.info("Retrieving videos since %s", formatted_date)

        if not isinstance(camera, list):
            camera = [camera]

        for page in range(1, stop):
            response = api.request_videos(self, time=since_epochs, page=page)
            _LOGGER.debug("Processing page %s", page)
            try:
                result = response["media"]
                if not result:
                    raise IndexError
            except (KeyError, IndexError):
                _LOGGER.info("No videos found on page %s. Exiting.", page)
                break

            self._parse_downloaded_items(result, camera, path, debug)
コード例 #5
0
with open(SECRETS_FILE, "r") as secrets_file:
    secrets = yaml.load(secrets_file)

blink = blinkpy.Blink(
    username=secrets["blinkUsername"],
    password=secrets["blinkPassword"],
    device_id="Doorbell Script",
    no_prompt=True,
)
blink.start()

from_time = time.time() - OFFSET_SECONDS
loop_start = datetime.today()
while True:
    videos = api.request_videos(blink, time=from_time)["media"]

    if len(videos) >= 1:
        break

    if datetime.today() >= (loop_start + timedelta(seconds=TIMEOUT_SECONDS)):
        break

    time.sleep(1)

# Debug
# with open("videos.json", "w") as f:
#     f.write(json.dumps(videos, indent=4))
# exit(0)

if len(videos) >= 1:
コード例 #6
0
def get_vids():
    vid_data = blinkapi.request_videos(blink, 0, page=1).get('media')
    return json.dumps({"items": vid_data})