{"id":42926363,"url":"https://github.com/coderefinery/obs-cr","last_synced_at":"2026-01-30T18:09:54.542Z","repository":{"id":226504093,"uuid":"768859316","full_name":"coderefinery/obs-cr","owner":"coderefinery","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-27T08:00:42.000Z","size":375,"stargazers_count":1,"open_issues_count":8,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-11-30T01:47:53.211Z","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/coderefinery.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-07T21:39:01.000Z","updated_at":"2025-11-27T08:00:46.000Z","dependencies_parsed_at":"2024-03-22T10:58:32.431Z","dependency_job_id":"37eb905c-1a8f-47b1-b9ee-ca7f1d4e325c","html_url":"https://github.com/coderefinery/obs-cr","commit_stats":null,"previous_names":["coderefinery/obs-coderefinery-control","coderefinery/obs-cr"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/coderefinery/obs-cr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderefinery%2Fobs-cr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderefinery%2Fobs-cr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderefinery%2Fobs-cr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderefinery%2Fobs-cr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coderefinery","download_url":"https://codeload.github.com/coderefinery/obs-cr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderefinery%2Fobs-cr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28917035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T16:37:38.804Z","status":"ssl_error","status_checked_at":"2026-01-30T16:37:37.878Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-01-30T18:09:51.766Z","updated_at":"2026-01-30T18:09:54.530Z","avatar_url":"https://github.com/coderefinery.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Control panel for CodeRefinery livestream teaching\n\nThis provides control panels for OBS, optimized for automation useful\nfor the CodeRefinery teaching style.  Since 2025, this is all done by\nthe web and there is no local installation.  The main entry point is\n`web/index.html`.\n\nThe usage of these is taught as part of CodeRefinery instructor\ntraining, unfortunately there aren't good examples here.\n\nThe general architecture is that it uses OBS as the main\nsynchorization server.  There are three main operations: get\npersistent value, set persistent value, and watch for changes of\npersistent value (with a callback).  Together, this allows us to build\nalmost anything.  (Some values are managed the same way but the\nbackend but control other controls, such as scene selection or\nvolume).\n\n## OLD - Local app installation\n\n\n### Local install\n\nCreate a virtual environment.  Note that obsws-python unfortunately\nrequires Python 3.9+.  On Linux with pip, sound output requires a\ncompiler, libasound2-dev, and python3-dev (on other platforms, a\npre-built package has what you need).\n\n```\n$ pip install https://github.com/coderefinery/obs-cr/archive/master.zip\n```\n\n\n\n## Cheatsheet\n\nCommands for copying and pasting\n\n* `python obs_cr/headless.py localhost:4445 PASSWORD --no-sound --resolution-command=zoomw -v --broadcaster --notes-window='Notes - CodeRefinery.*March 2025.*Privat()e'`\n\n* `python3 obs_cr/websocket_proxy.py --ssl-domain=DOMAIN` - finds\n  certs made by acme.sh in `~/.acme.sh/`.\n\n* Linux, Firefox: `obs-cr-control localhost:4445 TOKEN --notes-window='^TTT4HPC 07/05/2024.*Privat()e' --resolution-command=\"xdotool search --onlyvisible --name '^Zoom$' windowsize WIDTH HEIGHT;\" --broadcaster`\n\n\n## Status\n\nIn development, not recommended for general use unless you want to go\ninto the code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderefinery%2Fobs-cr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderefinery%2Fobs-cr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderefinery%2Fobs-cr/lists"}