{"id":19956417,"url":"https://github.com/drudge/node-tidbyt","last_synced_at":"2025-05-03T20:32:05.251Z","repository":{"id":41416044,"uuid":"439975891","full_name":"drudge/node-tidbyt","owner":"drudge","description":"Unofficial API client for the Tidbyt API. Use this client to control Tidbyt devices and integrate with other services.","archived":false,"fork":false,"pushed_at":"2022-11-12T14:53:47.000Z","size":38,"stargazers_count":28,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-02T21:59:38.203Z","etag":null,"topics":["api","pixlet","rest-client","tidbyt"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/drudge.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":"2021-12-19T21:53:09.000Z","updated_at":"2024-10-02T01:09:49.000Z","dependencies_parsed_at":"2022-09-26T16:21:57.082Z","dependency_job_id":null,"html_url":"https://github.com/drudge/node-tidbyt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drudge%2Fnode-tidbyt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drudge%2Fnode-tidbyt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drudge%2Fnode-tidbyt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drudge%2Fnode-tidbyt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drudge","download_url":"https://codeload.github.com/drudge/node-tidbyt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252252994,"owners_count":21718768,"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":["api","pixlet","rest-client","tidbyt"],"created_at":"2024-11-13T01:34:13.318Z","updated_at":"2025-05-03T20:32:00.230Z","avatar_url":"https://github.com/drudge.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Tidbyt Client for Node.js\n==========================\n\nUnofficial API client for the [Tidbyt API](https://tidbyt.dev/docs/tidbyt-api). Use this client to control Tidbyt devices and integrate with other services.\n\n\n## Installation\n\nYou can install the package with [npm](https://www.npmjs.org):\n\n```bash\n\u003e npm install tidbyt\n```\n\n## Usage\n\n```js\nconst Tidbyt = require('tidbyt')\n\nasync function main() {\n    const deviceId = process.argv[2]\n    const tidbyt = new Tidbyt(process.env.TIDBYT_API_TOKEN)\n\n    // get our requested device\n    const device = await tidbyt.devices.get(deviceId)\n    const { displayName, lastSeen } = device\n\n    console.log(displayName, `Last Seen: (${lastSeen})`)\n\n    // get a list of officially available apps\n    // return as map so we can lookup app name/descriptions by id\n    const apps = await tidbyt.apps.list({ asMap: true })\n\n    // get the list of installations for this device\n    const installations = await device.installations.list()\n\n    for (const { id, appID } of installations) {\n        const {\n            name = 'Custom',\n            description = `Unlike a regular Tidbyt app, this \"installation\" was pushed to ${displayName} via Tidbyt's API.`,\n        } = apps.get(appID) || {}\n\n        console.log(``)\n        console.log(`  ${name} - ${id}`)\n        console.log(`      ${description}`)\n    }\n}\nmain()\n```\n## Classes\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"#TidbytDevice\"\u003eTidbytDevice\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#Tidbyt\"\u003eTidbyt\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003c/dl\u003e\n\n\u003ca name=\"TidbytDevice\"\u003e\u003c/a\u003e\n\n## TidbytDevice\n**Kind**: global class  \n**Scope**: Tidbyt  \n\n* [TidbytDevice](#TidbytDevice)\n    * [new TidbytDevice(options, client)](#new_TidbytDevice_new)\n    * [.installations](#TidbytDevice+installations) : \u003ccode\u003eobject\u003c/code\u003e\n        * [.list()](#TidbytDevice+installations+list) ⇒ \u003ccode\u003ePromise.\u0026lt;Array.\u0026lt;TidbytDeviceInstallation\u0026gt;\u0026gt;\u003c/code\u003e\n        * [.update(installationID, image)](#TidbytDevice+installations+update) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\n        * [.delete(installationID)](#TidbytDevice+installations+delete) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\n    * [.update(updates)](#TidbytDevice+update) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\n    * [.push(image, options)](#TidbytDevice+push) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\n\n\u003ca name=\"new_TidbytDevice_new\"\u003e\u003c/a\u003e\n\n### new TidbytDevice(options, client)\nConstruct a TidbytDevice with provided options.\n\nA valid `client` is required to use any methods.\n\nAvailable options:\n\n     - `id`: the device id\n\n     - `lastSeen`: the last time the device was seen\n\n     - `brightness`: the brightness of the device from 0-100\n\n     - `displayName`: the display name of the device\n\n     - `autoDim`: whether the device is auto dimming at night\n\n\n| Param | Type |\n| --- | --- |\n| options | \u003ccode\u003eObject\u003c/code\u003e | \n| client | \u003ccode\u003eTidByt\u003c/code\u003e | \n\n\u003ca name=\"TidbytDevice+installations\"\u003e\u003c/a\u003e\n\n### tidbytDevice.installations : \u003ccode\u003eobject\u003c/code\u003e\n**Kind**: instance property of [\u003ccode\u003eTidbytDevice\u003c/code\u003e](#TidbytDevice)  \n\n* [.installations](#TidbytDevice+installations) : \u003ccode\u003eobject\u003c/code\u003e\n    * [.list()](#TidbytDevice+installations+list) ⇒ \u003ccode\u003ePromise.\u0026lt;Array.\u0026lt;TidbytDeviceInstallation\u0026gt;\u0026gt;\u003c/code\u003e\n    * [.update(installationID, image)](#TidbytDevice+installations+update) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\n    * [.delete(installationID)](#TidbytDevice+installations+delete) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\n\n\u003ca name=\"TidbytDevice+installations+list\"\u003e\u003c/a\u003e\n\n#### installations.list() ⇒ \u003ccode\u003ePromise.\u0026lt;Array.\u0026lt;TidbytDeviceInstallation\u0026gt;\u0026gt;\u003c/code\u003e\nReturn a list of installations on the device from the Tidbyt API.\n\n**Kind**: instance method of [\u003ccode\u003einstallations\u003c/code\u003e](#TidbytDevice+installations)  \n\u003ca name=\"TidbytDevice+installations+update\"\u003e\u003c/a\u003e\n\n#### installations.update(installationID, image) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\nUpdate an existing installation with a new image.\n\nThrows if not client is intialized.\n\n**Kind**: instance method of [\u003ccode\u003einstallations\u003c/code\u003e](#TidbytDevice+installations)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| installationID | \u003ccode\u003eString\u003c/code\u003e | Optional installation ID to create/update |\n| image | \u003ccode\u003eBuffer\u003c/code\u003e | Buffer containing the images to push |\n\n\u003ca name=\"TidbytDevice+installations+delete\"\u003e\u003c/a\u003e\n\n#### installations.delete(installationID) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\nDelete an existing installation from the device.\n\nThrows if not client is intialized.\n\n**Kind**: instance method of [\u003ccode\u003einstallations\u003c/code\u003e](#TidbytDevice+installations)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| installationID | \u003ccode\u003eString\u003c/code\u003e | Optional installation ID to create/update |\n\n\u003ca name=\"TidbytDevice+update\"\u003e\u003c/a\u003e\n\n### tidbytDevice.update(updates) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\nUpdate a device with the provided values.\n\nThrows if not client is intialized.\n\nAvailable fields:\n\n     - `autoDim`: whether the device is auto dimming at night\n\n     - `brightness`: the brightness of the device from 0-100\n\n     - `displayName`: the display name of the device\n\n**Kind**: instance method of [\u003ccode\u003eTidbytDevice\u003c/code\u003e](#TidbytDevice)  \n\n| Param | Type |\n| --- | --- |\n| updates | \u003ccode\u003eObject\u003c/code\u003e | \n\n\u003ca name=\"TidbytDevice+push\"\u003e\u003c/a\u003e\n\n### tidbytDevice.push(image, options) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\nPush a new installation to the device.\n\nThrows if not client is intialized.\n\n\nAvailable options:\n\n`installationID`: Installation ID to create/update\n\n`background`: Whether the installation should not interrupt the rotation\n\n**Kind**: instance method of [\u003ccode\u003eTidbytDevice\u003c/code\u003e](#TidbytDevice)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| image | \u003ccode\u003eBuffer\u003c/code\u003e | Buffer containing the images to push |\n| options | \u003ccode\u003eObject\u003c/code\u003e |  |\n\n\u003ca name=\"Tidbyt\"\u003e\u003c/a\u003e\n\n## Tidbyt\n**Kind**: global class  \n\n* [Tidbyt](#Tidbyt)\n    * [new Tidbyt(apiToken, version)](#new_Tidbyt_new)\n    * [.apps](#Tidbyt+apps) : \u003ccode\u003eobject\u003c/code\u003e\n        * [.list(options)](#Tidbyt+apps+list) ⇒ \u003ccode\u003ePromise.\u0026lt;(Array.\u0026lt;Object\u0026gt;\\|Map)\u0026gt;\u003c/code\u003e\n    * [.devices](#Tidbyt+devices) : \u003ccode\u003eobject\u003c/code\u003e\n        * [.get(deviceId)](#Tidbyt+devices+get) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\n        * [.update(deviceId, updates)](#Tidbyt+devices+update) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\n        * [.push(deviceId, image, [options])](#Tidbyt+devices+push) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\n    * [.request(path, method, body, headers, raw, encoding)](#Tidbyt+request) ⇒ \u003ccode\u003ePromise.\u0026lt;(Object\\|Buffer)\u0026gt;\u003c/code\u003e\n\n\u003ca name=\"new_Tidbyt_new\"\u003e\u003c/a\u003e\n\n### new Tidbyt(apiToken, version)\nConstruct a Tidbyt with provided options.\n\nAvailable options:\n\n     - `apiToken`: the API token\n\n     - `apiVersion`: the API version. Defaults to `v0`\n\n\n| Param | Type | Default |\n| --- | --- | --- |\n| apiToken | \u003ccode\u003eString\u003c/code\u003e |  | \n| version | \u003ccode\u003eString\u003c/code\u003e | \u003ccode\u003e\u0026#x27;v0\u0026#x27;\u003c/code\u003e | \n\n\u003ca name=\"Tidbyt+apps\"\u003e\u003c/a\u003e\n\n### tidbyt.apps : \u003ccode\u003eobject\u003c/code\u003e\n**Kind**: instance property of [\u003ccode\u003eTidbyt\u003c/code\u003e](#Tidbyt)  \n\u003ca name=\"Tidbyt+apps+list\"\u003e\u003c/a\u003e\n\n#### apps.list(options) ⇒ \u003ccode\u003ePromise.\u0026lt;(Array.\u0026lt;Object\u0026gt;\\|Map)\u0026gt;\u003c/code\u003e\nReturn a list of available apps from the Tidbyt API.\n\nAvailable options:\n\n     - `asMap`: Defaults to false. If true, returns a map of app ids to app objects instead of an array of app objects.\n\n**Kind**: instance method of [\u003ccode\u003eapps\u003c/code\u003e](#Tidbyt+apps)  \n\n| Param | Type |\n| --- | --- |\n| options | \u003ccode\u003eObject\u003c/code\u003e | \n\n\u003ca name=\"Tidbyt+devices\"\u003e\u003c/a\u003e\n\n### tidbyt.devices : \u003ccode\u003eobject\u003c/code\u003e\n**Kind**: instance property of [\u003ccode\u003eTidbyt\u003c/code\u003e](#Tidbyt)  \n\n* [.devices](#Tidbyt+devices) : \u003ccode\u003eobject\u003c/code\u003e\n    * [.get(deviceId)](#Tidbyt+devices+get) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\n    * [.update(deviceId, updates)](#Tidbyt+devices+update) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\n    * [.push(deviceId, image, [options])](#Tidbyt+devices+push) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\n\n\u003ca name=\"Tidbyt+devices+get\"\u003e\u003c/a\u003e\n\n#### devices.get(deviceId) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\nGet a device by id from the Tidbyt API.\n\n**Kind**: instance method of [\u003ccode\u003edevices\u003c/code\u003e](#Tidbyt+devices)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| deviceId | \u003ccode\u003eString\u003c/code\u003e | The device id |\n\n\u003ca name=\"Tidbyt+devices+update\"\u003e\u003c/a\u003e\n\n#### devices.update(deviceId, updates) ⇒ [\u003ccode\u003ePromise.\u0026lt;TidbytDevice\u0026gt;\u003c/code\u003e](#TidbytDevice)\nUpdate a device with the provided values by ID.\n\nAvailable updates:\n\n     - `autoDim`: whether the device is auto dimming at night\n\n     - `brightness`: the brightness of the device from 0-100\n\n     - `displayName`: the display name of the device\n\n**Kind**: instance method of [\u003ccode\u003edevices\u003c/code\u003e](#Tidbyt+devices)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| deviceId | \u003ccode\u003eString\u003c/code\u003e | The device id |\n| updates | \u003ccode\u003eObject\u003c/code\u003e |  |\n\n\u003ca name=\"Tidbyt+devices+push\"\u003e\u003c/a\u003e\n\n#### devices.push(deviceId, image, [options]) ⇒ \u003ccode\u003ePromise.\u0026lt;Object\u0026gt;\u003c/code\u003e\nPush a new installation to a device by ID.\n\nThrows if not client is intialized.\n\nAvailable options:\n\n`installationID`: Installation ID to create/update\n\n`background`: Whether the installation should not interrupt the rotation\n\n**Kind**: instance method of [\u003ccode\u003edevices\u003c/code\u003e](#Tidbyt+devices)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| deviceId | \u003ccode\u003eString\u003c/code\u003e | The device id |\n| image | \u003ccode\u003eBuffer\u003c/code\u003e | Buffer containing the images to push |\n| [options] | \u003ccode\u003eObject\u003c/code\u003e | Push options |\n\n\u003ca name=\"Tidbyt+request\"\u003e\u003c/a\u003e\n\n### tidbyt.request(path, method, body, headers, raw, encoding) ⇒ \u003ccode\u003ePromise.\u0026lt;(Object\\|Buffer)\u0026gt;\u003c/code\u003e\nSend a request to the Tidbyt API.\n\n**Kind**: instance method of [\u003ccode\u003eTidbyt\u003c/code\u003e](#Tidbyt)  \n\n| Param | Type | Default |\n| --- | --- | --- |\n| path | \u003ccode\u003eString\u003c/code\u003e |  | \n| method | \u003ccode\u003eString\u003c/code\u003e | \u003ccode\u003e\u0026#x27;GET\u0026#x27;\u003c/code\u003e | \n| body | \u003ccode\u003eObject\u003c/code\u003e | \u003ccode\u003e\u003c/code\u003e | \n| headers | \u003ccode\u003eObject\u003c/code\u003e | \u003ccode\u003e{}\u003c/code\u003e | \n| raw | \u003ccode\u003eBoolean\u003c/code\u003e |  | \n| encoding | \u003ccode\u003eString\u003c/code\u003e |  | \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrudge%2Fnode-tidbyt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrudge%2Fnode-tidbyt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrudge%2Fnode-tidbyt/lists"}