{"id":18267700,"url":"https://github.com/maebert/snoo","last_synced_at":"2025-07-22T13:34:40.779Z","repository":{"id":57468938,"uuid":"221779827","full_name":"maebert/snoo","owner":"maebert","description":"Wrapper around the (undocumented) SNOO Smart Bassinet API","archived":false,"fork":false,"pushed_at":"2024-12-24T13:10:57.000Z","size":32,"stargazers_count":26,"open_issues_count":7,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-14T09:56:53.058Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maebert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-14T20:20:18.000Z","updated_at":"2025-04-24T18:54:08.000Z","dependencies_parsed_at":"2022-09-19T08:40:13.851Z","dependency_job_id":null,"html_url":"https://github.com/maebert/snoo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maebert/snoo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maebert%2Fsnoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maebert%2Fsnoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maebert%2Fsnoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maebert%2Fsnoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maebert","download_url":"https://codeload.github.com/maebert/snoo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maebert%2Fsnoo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266506208,"owners_count":23940019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T11:28:35.333Z","updated_at":"2025-07-22T13:34:40.756Z","avatar_url":"https://github.com/maebert.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SNOO\n\n![PyPI](https://img.shields.io/pypi/v/snoo?style=for-the-badge) ![GitHub last commit](https://img.shields.io/github/last-commit/maebert/snoo?style=for-the-badge)\n\nThis is an API client to the [SNOO Smart Bassinet](https://www.happiestbaby.com/products/snoo-smart-bassinet). The SNOO is a bassinet that will rock your baby to sleep, and responds to the baby by trying to sooth it with different rocking motions and sounds when it detects crying.\n\nCurrently, it supports getting the current session data from SNOO, and historic data. It does not allow you to control the SNOO (the control API is provided by [PubNub](https://www.pubnub.com) and is different from the read-only data API hosted by happiestbaby.com)\n\n# A word of caution\n\nThe SNOO API is undocumented. Using it might or might not violate Happiest Baby, Inc [Terms of Service](https://www.happiestbaby.com/pages/terms-of-service). Use at your own risk.\n\n# Usage\n\n## Installation\n\n```sh\npip install snoo\n```\n\n## Command line usage\n\nTo get the status of your snoo, simply run\n\n```\n$ snoo status\nSoothing 26m\n```\n\nThe first time you run it, it will prompt for your username and password. These will be stored in either `~/.snoo_config` or `~/.config/snoo/snoo.config`, depending on your system. The output of the `snoo` command is the status (`Awake`, `Asleep`, or `Soothing`), and the duration of the current session.\n\n## Exporting data\n\nTo export data of each individual session, use\n\n```\n$ snoo sessions --start DATE --end DATE\n```\n\nwhere `DATE` follows the format `2019-12-03`. By default, `--start` and `--end` correspond to yesterday and today, respectively.\n\nThe result is a CSV formatted list of sessions in the snoo, eg.\n\n```csv\nstart_time,end_time,duration,asleep,soothing\n2019-12-03T12:35:11,2019-12-03T13:59:04,5033,4218,815\n2019-12-03T15:28:13,2019-12-03T15:28:41,28,17,11\n...\n```\n\nwhere `duration`, `asleep`, and `soothing` are durations given in _seconds_.\n\nAlternatively, you can get aggregated information about each day using `snoo days`:\n\n```csv\ndate,naps,longestSleep,totalSleep,daySleep,nightSleep,nightWakings,timezone\n2019-12-03,6,12933,58035,25038,32997,4,None\n```\n\nAgain, all durations are given in seconds. How `daySleep` and `nightSleep` are defined is set in your Snoo app.\n\n## Programmatic usage\n\n```python\nfrom snoo import Client\n\nclient = Client()\n# Find out where your config is stored\nprint(client.config_path)\n# Get data from your current session\ncurrent_session = client.get_current_session()\n# Print the status of the current session.\nprint(client.status())\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaebert%2Fsnoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaebert%2Fsnoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaebert%2Fsnoo/lists"}