- Download script
- Install mqtt-wrapper
pip install mqtt-wrapper
- Open OBS Studio
- In OBS Studio add a script (Tools -> Scripts)
- Configure script parameters (my base channel is homeassistant and my sensor name is obs, creating the path homeassistant/sensor/obs)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Database from 'better-sqlite3'; | |
import { createDatabaseClient } from './proxy.ts'; | |
// 1) Create an in-memory DB and your table(s). | |
const db = new Database(':memory:'); | |
db.exec(` | |
CREATE TABLE users ( | |
id TEXT PRIMARY KEY, | |
data JSON | |
); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function debounce(fn, ms, obj){ | |
return Object.assign( function fx(...args){ | |
const now = Date.now(); | |
if(now - fx.lastCall > ms){ | |
fx.lastCall = now; | |
return fx.fn.call(fx.obj,...args); | |
} | |
if(fx.timeout) clearTimeout(fx.timeout); | |
fx.timeout = setTimeout(()=>fx(...args), fx.lastCall + ms - now); | |
}, { fn, obj, lastCall: 0, timeout: null }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** @format */ | |
const path = require('path'); | |
const fs = require('fs'); | |
const https = require('https'); | |
const http = require('http'); | |
const cheerio = require('cheerio'); | |
const os = require('os'); | |
// Configuration |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// for modern browsers | |
const svgToDataUrl = svg => `data:image/svg+xml;utf8,${svg.replace(/[#%]/g,s=>'%'+s.charCodeAt(0))}`; | |
// for old browsers | |
const svgToDataUrl = svg => `data:image/svg+xml;utf8,${svg.replace(/[<>#%{}"\s]/g,s=>'%'+s.charCodeAt(0))}`; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Debug mode | |
const DEBUG = true; | |
const log = (...args) => { | |
if (DEBUG) console.log(...args); | |
} | |
// regular expression to parse numbers | |
const rxNumberStr = '[+-]?(?:(?:[0-9]+\\.[0-9]+)|(?:\\.[0-9]+)|(?:[0-9]+))(?:[eE][+-]?[0-9]+)?'; | |
// regular expression to parse next lemma from d attribute of <path> | |
const rxDLemmaStr = `[MmLlHhVvCcSsQqTtAaZz]|${rxNumberStr}`; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// calculate week number for date | |
function calcWN(y, m, d) { | |
let J = gc2jd(y, m, d); | |
let d4 = (J + 31741 - J % 7) % 146097 % 36524 % 1461; | |
let L = 0 | d4 / 1460; | |
let d1 = (d4 - L) % 365 + L; | |
return (0 | d1 / 7) + 1; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Find all elements with openned ShadowRoots | |
* | |
* @param {Node} e - An element that we should search for ShadowRoots within. | |
* @returns {Array<Element>} Array of Elements that holds ShadowRoot | |
*/ | |
const findRoots = (e = document.documentElement) => | |
[e,...e.querySelectorAll('*')] | |
.filter(e => e.shadowRoot) | |
.flatMap(e => [e, ...findRoots(e.shadowRoot)]); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const color_distance = ([ L1, a1, b1 ], [ L2, a2, b2 ] ) => Math.hypot( L1 - L2, a1 - a2, b1 - b2 ); | |
const linear = x => x >= 0.04045 ? ((x + 0.055) / (1 + 0.055)) ** 2.4 : x / 12.92; | |
const gamma = x => x >= 0.0031308 ? 1.055 * x ** (1 / 2.4) - 0.055 : 12.92 * x; | |
const clamp = x => Math.min ( 255, Math.max ( 0, x ) ); | |
const multiply = (a, b) => |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Matrices multiply | |
const multiply = (a, b) => a.map((_, r) => b[0].map((_, c) => a[r].reduce((s,_,i) => s + a[r][i] * b[i][c], 0))); |
NewerOlder