{"id":13588852,"url":"https://github.com/snow-tree/camera-probe","last_synced_at":"2025-03-02T22:32:37.078Z","repository":{"id":38176744,"uuid":"163921450","full_name":"snow-tree/camera-probe","owner":"snow-tree","description":"A realtime camera network device discovery tool.","archived":false,"fork":false,"pushed_at":"2023-03-04T03:04:06.000Z","size":860,"stargazers_count":57,"open_issues_count":11,"forks_count":12,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-09T09:48:18.731Z","etag":null,"topics":["camera","camera-probe","discovery","networked-cameras","node","onvif","onvif-camera","onvif-client","rxjs","typescript","udp","upnp","ws-discovery"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/snow-tree.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-01-03T04:03:32.000Z","updated_at":"2024-08-12T19:44:32.000Z","dependencies_parsed_at":"2024-01-29T08:09:46.743Z","dependency_job_id":"bd2d6fc0-5dbb-433c-abe3-94be5be4005f","html_url":"https://github.com/snow-tree/camera-probe","commit_stats":{"total_commits":68,"total_committers":2,"mean_commits":34.0,"dds":"0.014705882352941124","last_synced_commit":"49924bb9616e4a5631b7f8f3ba06f0d512eec6b5"},"previous_names":["patrickmichalina/camera-probe","patrickmichalina/onvif-probe-rx"],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-tree%2Fcamera-probe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-tree%2Fcamera-probe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-tree%2Fcamera-probe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-tree%2Fcamera-probe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snow-tree","download_url":"https://codeload.github.com/snow-tree/camera-probe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241582515,"owners_count":19985845,"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","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":["camera","camera-probe","discovery","networked-cameras","node","onvif","onvif-camera","onvif-client","rxjs","typescript","udp","upnp","ws-discovery"],"created_at":"2024-08-01T15:06:58.998Z","updated_at":"2025-03-02T22:32:37.056Z","avatar_url":"https://github.com/snow-tree.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003ch1 align=\"center\" style=\"border-bottom: none;\"\u003ecamera-probe\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003eRealtime scanning and discovery of networked cameras.\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://codeclimate.com/github/snow-tree/camera-probe/test_coverage\"\u003e\n    \u003cimg src=\"https://api.codeclimate.com/v1/badges/f40c9fff2927e49c3ea2/test_coverage\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codeclimate.com/github/snow-tree/camera-probe/maintainability\"\u003e\n    \u003cimg alt=\"codeclimate\" src=\"https://api.codeclimate.com/v1/badges/f40c9fff2927e49c3ea2/maintainability\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://david-dm.org/snow-tree/camera-probe\"\u003e\n    \u003cimg alt=\"greenkeeper\" src=\"https://david-dm.org/snow-tree/camera-probe/status.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://david-dm.org/snow-tree/camera-probe?type=dev\"\u003e\n    \u003cimg alt=\"greenkeeper\" src=\"https://david-dm.org/snow-tree/camera-probe/dev-status.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/semantic-release/semantic-release\"\u003e\n    \u003cimg alt=\"semantic-release\" src=\"https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@snow-tree/camera-probe\"\u003e\n    \u003cimg alt=\"npm latest version\" src=\"https://img.shields.io/npm/v/camera-probe/latest.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Installation\nThis package is designed to be run in Node. For the best developer experience use Typescript.\n```sh\n$ npm i @snow-tree/camera-probe\n```\n\n## CLI Usage\nFor CLI usage its easier to install globally like so:\n```sh\n$ npm i -g @snow-tree/camera-probe\n\n// starting listening\n$ camera-probe\n\n// This table will update as cameras come online and offline.\n┌─────────┬───────────┬─────────────┬─────────────────┬──────────────────────────────────────────┬────────────────────────────────────────────────┐\n│ (index) │   Name    │    Model    │       IP        │                   URN                    │                   Endpoint                     │\n├─────────┼───────────┼─────────────┼─────────────────┼──────────────────────────────────────────┼────────────────────────────────────────────────┤\n│    0    │ 'Amcrest' │ 'IP2M-841B' │ '192.168.1.1'   │  '38b4eeff-f5bd-46b9-92e4-30e6acffee73'  │  'http://192.168.1.1/onvif/device_service'     │\n│    1    │  'IPCAM'  │   '631GA'   │ '192.168.1.2'   │  '4f5dcb4f-eea6-4cda-b290-f2b2b7d2f14f'  │  'http://192.168.1.2:80/onvif/device_service'  │\n└─────────┴───────────┴─────────────┴─────────────────┴──────────────────────────────────────────┴────────────────────────────────────────────────┘\n```\n\n## Programmatic Usage\n```js\nimport { onvifDevices$ } from 'camera-probe'\nimport { takeUntil } from 'rxjs/operators'\n\nconst subscription = onvifDevices$().subscribe(console.log)\n\n// be sure to close the socket connection when complete with your query\n// by unsubscribing from the observable.\nsubscription.unsubscribe()\n\n// or using an rxjs operator like take\nonvifDevices$().pipe(takeUntil(someObservaleFires)).subscribe(console.log)\n\n// results\n[ { name: 'Amcrest',\n    hardware: 'IP2M-8200',\n    location: 'china',\n    deviceServiceUri: 'http://192.168.5.191/onvif/device_service',\n    ip: '192.168.5.191',\n    metadataVersion: '1',\n    urn: 'fae40e7f-91e2-489a-afe6-66e19b667952',\n    scopes:\n     [ 'onvif://www.onvif.org/location/country/china',\n       'onvif://www.onvif.org/name/Amcrest',\n       'onvif://www.onvif.org/hardware/IP2M-8200',\n       'onvif://www.onvif.org/Profile/Streaming',\n       'onvif://www.onvif.org/type/Network_Video_Transmitter',\n       'onvif://www.onvif.org/extension/unique_identifier',\n       'onvif://www.onvif.org/Profile/G' ],\n    profiles: [ 'Streaming', 'G' ],\n    xaddrs: [ 'http://192.168.5.191/onvif/device_service' ] },\n  { name: 'IPCAM',\n    hardware: '421FZ',\n    location: 'china',\n    deviceServiceUri: 'http://192.168.5.13:80/onvif/device_service',\n    ip: '192.168.5.13',\n    metadataVersion: '1',\n    urn: '0cbc0d5b-a7a1-47c7-bb60-85c878bb540e',\n    scopes:\n     [ 'onvif://www.onvif.org/Profile/Streaming',\n       'onvif://www.onvif.org/Model/421FZ',\n       'onvif://www.onvif.org/Name/IPCAM',\n       'onvif://www.onvif.org/location/country/china' ],\n    profiles: [ 'Streaming' ],\n    xaddrs: [ 'http://192.168.5.13:80/onvif/device_service' ] } ]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnow-tree%2Fcamera-probe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnow-tree%2Fcamera-probe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnow-tree%2Fcamera-probe/lists"}