{"id":28305304,"url":"https://github.com/royshil/obs-urlsource","last_synced_at":"2025-07-02T06:05:32.271Z","repository":{"id":184621086,"uuid":"671073684","full_name":"royshil/obs-urlsource","owner":"royshil","description":"OBS plugin to fetch data from a URL or file, connect to an API or AI service, parse responses and display text, image or audio on scene","archived":false,"fork":false,"pushed_at":"2024-12-19T16:35:32.000Z","size":481,"stargazers_count":222,"open_issues_count":24,"forks_count":28,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-06-24T16:17:21.618Z","etag":null,"topics":["api","http","live-streaming","livestream","obs","obs-plugin","obs-studio","obs-studio-plugin","plugin","real-time-data","url"],"latest_commit_sha":null,"homepage":"https://obsproject.com/forum/resources/url-api-source-fetch-live-data-and-display-it-on-screen.1756/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/royshil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["royshil"]}},"created_at":"2023-07-26T13:33:07.000Z","updated_at":"2025-06-22T11:49:00.000Z","dependencies_parsed_at":"2023-07-29T10:53:03.547Z","dependency_job_id":"23a381af-0e40-485f-b283-708bf2f9c37d","html_url":"https://github.com/royshil/obs-urlsource","commit_stats":{"total_commits":182,"total_committers":6,"mean_commits":"30.333333333333332","dds":0.07692307692307687,"last_synced_commit":"b162f12073a243355c6d968fcc799e8cc56e651c"},"previous_names":["royshil/obs-urlsource","occ-ai/obs-urlsource","locaal-ai/obs-urlsource","obs-ai/obs-urlsource"],"tags_count":28,"template":false,"template_full_name":"obsproject/obs-plugintemplate","purl":"pkg:github/royshil/obs-urlsource","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-urlsource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-urlsource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-urlsource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-urlsource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/royshil","download_url":"https://codeload.github.com/royshil/obs-urlsource/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-urlsource/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261860137,"owners_count":23220866,"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","http","live-streaming","livestream","obs","obs-plugin","obs-studio","obs-studio-plugin","plugin","real-time-data","url"],"created_at":"2025-05-24T02:04:12.535Z","updated_at":"2025-07-02T06:05:32.261Z","avatar_url":"https://github.com/royshil.png","language":"C++","readme":"# ⚠️ Stalled ⚠️ This project is not under active development\n\n## URL/API Source - Connect Anything to OBS\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub](https://img.shields.io/github/license/locaal-ai/obs-urlsource)](https://github.com/locaal-ai/obs-urlsource/blob/main/LICENSE)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/locaal-ai/obs-urlsource/push.yaml)](https://github.com/locaal-ai/obs-urlsource/actions/workflows/push.yaml)\n[![Total downloads](https://img.shields.io/github/downloads/locaal-ai/obs-urlsource/total)](https://github.com/locaal-ai/obs-urlsource/releases)\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/locaal-ai/obs-urlsource)](https://github.com/locaal-ai/obs-urlsource/releases)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\nDownload\u003c/br\u003e\n\u003ca href=\"https://github.com/locaal-ai/obs-urlsource/releases/download/0.3.7/obs-urlsource-0.3.7-windows-x64-Installer.exe\"\u003e\u003cimg src=\"https://img.shields.io/badge/Windows-0078D6?style=for-the-badge\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/locaal-ai/obs-urlsource/releases/download/0.3.7/obs-urlsource-0.3.7-macos-universal.pkg\"\u003e\u003cimg src=\"https://img.shields.io/badge/Mac-000000?style=for-the-badge\u0026logo=Apple\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/locaal-ai/obs-urlsource/releases/download/0.3.7/obs-urlsource-0.3.7-x86_64-linux-gnu.deb\"\u003e\u003cimg src=\"https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black\"/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## Introduction\n\nThe URL/API Source is a plugin for [OBS Studio](https://obsproject.com) that allows fetcing data from a URL, API endpoint or file and displays it as text, image or even audio. \n\n### Usage Tutorials\nWatch quick tutorials on how to use and setup the URL/API source on your OBS scene.\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://youtu.be/E_UMNIfgR5w\" target=\"_blank\"\u003e\n    \u003cimg width=\"27%\" src=\"https://github-production-user-asset-6210df.s3.amazonaws.com/441170/258666347-327a632f-62f3-4365-af8e-6bb91f5a56ef.jpeg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://youtu.be/hwHgNcPJEfM\" target=\"_blank\"\u003e\n    \u003cimg width=\"27%\" src=\"https://github-production-user-asset-6210df.s3.amazonaws.com/441170/271332973-a482c56a-6c21-494b-b8a4-95216210ab58.jpeg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://youtu.be/kgAOCijJ51Q\" target=\"_blank\"\u003e\n    \u003cimg width=\"27%\" src=\"https://github-production-user-asset-6210df.s3.amazonaws.com/441170/280917569-fba369e7-b91f-4e76-90ff-09e8cbb75ffc.jpeg\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nAdditional things to do with URL/API source to upgrade your content:\n\n- [HTML live website Scraping (18 min)](https://youtu.be/kgAOCijJ51Q)\n- [Use ChatGPT](https://youtu.be/4BTmoKr0YMw)\n- [Live Narration of your content with GPT](https://youtu.be/2wJ72DcgBew)\n- [Text-to-Speech with Coqui](https://youtu.be/kltJbg9hH4s)\n- [Live data from Google Sheets with API](https://www.youtube.com/watch?v=Y4ND9Y7IUJE)\n- [Send captions to YouTube API](https://www.youtube.com/watch?v=E7HKbO6CP_c)\n- [Get VSCode live data with API](https://www.youtube.com/watch?v=GqaIbSZe69o)\n- [Translate with DeepL API](https://youtu.be/ryWBIEmVka4)\n\n#### Inspiration\nOut of ideas on what to do with URL/API Source? Here's a repo with 1,000s of public APIs https://github.com/public-apis/public-apis\n\n### Dynamic Templating\nThe URL source supports both input and output templating using the [Inja](https://github.com/pantor/inja) engine.\n\nOutput templates include `{{output}}` in case of a singular extraction from the response or `{{output1}},{{output2}},...` in case of multiple extracted value. In addition the `{{body}}` variable contains the entire body of the response in case of JSON. Advanced output templating functions can be achieved through [Inja](https://github.com/pantor/inja) like looping over arrays, etc.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"50%\" src=\"https://github.com/locaal-ai/obs-urlsource/assets/441170/2b7a4ceb-3c38-4afd-82b3-675c0fa8c5fe\" /\u003e\n\u003c/div\u003e\n\nThe input template works for the URL (querystring or REST path) or the POST body\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"50%\" src=\"https://github.com/locaal-ai/obs-urlsource/assets/441170/ae6b9e04-ff5a-441b-a94c-427b1e7c76b3\" /\u003e\n\u003c/div\u003e\n\nUse the `{{input}}` variable to insert the output from a Text source. Inja advanced templates are available too.\nA special function `strftime` is available for formatting the current time using conventions from C++ STL ([strftime](https://en.cppreference.com/w/cpp/chrono/c/strftime)), as well as `urlencode` which is useful for dynamic input in the querystring.\n\n#### HTML Subset\n\nThe internal template renderer supports HTML4 and CSS with a [reduced subset of feautures](https://doc.qt.io/qt-6/richtext-html-subset.html).\nIt is quite powerful and can render tables and apply various styling to the text.\n\nImage render is supported with the `\u003cimg /\u003e` tag, and external URLs are supported as well. For example `\u003cimg src=\"{{output}}\" /\u003e` could be used to dynamically render an image URL coming from the response.\n\n\n### Code Walkthrough\nWatch an explanation of the major parts of the code and how they work together.\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://youtu.be/TiluUg1LxcQ\" target=\"_blank\"\u003e\n    \u003cimg width=\"50%\" src=\"https://github-production-user-asset-6210df.s3.amazonaws.com/441170/258929032-08f74e90-0260-41db-8674-94bd630855f8.jpeg\" /\u003e\n  \u003c/a\u003e\u003cbr/\u003e\n  https://youtu.be/TiluUg1LxcQ\n\u003c/div\u003e\n\nFeatures:\n- HTTP request types: GET, POST\n- Request headers (for e.g. API Key or Auth token)\n- Request body for POST\n- Multiple dynamic inputs from several Text or Image sources (base64)\n- Output parsing: JSON (JSONPointer \u0026 JSONPath), XML/HTML (XPath \u0026 XQuery), Key-Value, Regex and CSS selectors\n- Update timer for live updating data\n- Test of the request to find the right parsing\n- Output styling (font, color, etc.) and formatting (via regex post processing)\n- Output Image (via image URL or image data on the response)\n- Output text to external Text Source and audio to external Media Source\n- Output to multiple sources with one request (Output Mapping)\n- Multi-value (array, union) parsed output capture, object unpacking (via Inja)\n- Dynamic input aggregations (time-based, \"empty\"-based)\n- Websocket support\n\nComing soon:\n- Authentication (Basic, Digest, OAuth)\n- More parsing options (CSV, etc.)\n- More request types (HTTP PUT / DELETE / PATCH, and GraphQL)\n- More output formats (Markdown, slim, reStructured, HAML, etc.)\n\nCheck out our other plugins:\n- [Background Removal](https://github.com/locaal-ai/obs-backgroundremoval) removes background from webcam without a green screen.\n- [Detect](https://github.com/locaal-ai/obs-detect) will find and track \u003e80 types of objects in any source that provides an image in real-time\n- [LocalVocal](https://github.com/locaal-ai/obs-localvocal) speech AI assistant plugin for real-time, local transcription (captions), translation and more language functions\n- [Polyglot](https://github.com/locaal-ai/obs-polyglot) translation AI plugin for real-time, local translation to hunderds of languages\n- 🚧 Experimental 🚧 [CleanStream](https://github.com/locaal-ai/obs-cleanstream) for real-time filler word (uh,um) and profanity removal from live audio stream\n\nIf you like this work, which is given to you completely free of charge, please consider supporting it on GitHub: https://github.com/sponsors/royshil\n\n## Download\nCheck out the [latest releases](https://github.com/locaal-ai/obs-urlsource/releases) for downloads and install instructions.\n\n\n## Building\n\nThe plugin was built and tested on Mac OSX  (Intel \u0026 Apple silicon), Windows and Linux.\n\nStart by cloning this repo to a directory of your choice.\n\n### Getting Submodules\nBefore compiling, you need to fetch all the submodules. After cloning the repository, run the following command in the root directory of the project:\n\n```sh\ngit submodule update --init --recursive\n```\n\nThis will initialize and fetch all the necessary submodules for the project.\n\n### Mac OSX\n\nUsing the CI pipeline scripts, locally you would just call the zsh script. By default this builds a universal binary for both Intel and Apple Silicon. To build for a specific architecture please see `.github/scripts/.build.zsh` for the `-arch` options.\n\n```sh\n$ ./.github/scripts/build-macos -c Release\n```\n\n#### Install\nThe above script should succeed and the plugin files (e.g. `obs-urlsource.plugin`) will reside in the `./release/Release` folder off of the root. Copy the `.plugin` file to the OBS directory e.g. `~/Library/Application Support/obs-studio/plugins`.\n\nTo get `.pkg` installer file, run for example\n```sh\n$ ./.github/scripts/package-macos -c Release\n```\n(Note that maybe the outputs will be in the `Release` folder and not the `install` folder like `pakage-macos` expects, so you will need to rename the folder from `build_x86_64/Release` to `build_x86_64/install`)\n\n### Linux (Ubuntu)\n\nUse the CI scripts again\n```sh\n$ ./.github/scripts/build-linux.sh\n```\n\nCopy the results to the standard OBS folders on Ubuntu\n```sh\n$ sudo cp -R release/RelWithDebInfo/lib/* /usr/lib/x86_64-linux-gnu/\n$ sudo cp -R release/RelWithDebInfo/share/* /usr/share/\n```\nNote: The official [OBS plugins guide](https://obsproject.com/kb/plugins-guide) recommends adding plugins to the `~/.config/obs-studio/plugins` folder.\n\n### Windows\n\nUse the CI scripts again, for example:\n\n```powershell\n\u003e .github/scripts/Build-Windows.ps1 -Target x64 -CMakeGenerator \"Visual Studio 17 2022\"\n```\n\nThe build should exist in the `./release` folder off the root. You can manually install the files in the OBS directory.\n","funding_links":["https://github.com/sponsors/royshil"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyshil%2Fobs-urlsource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froyshil%2Fobs-urlsource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyshil%2Fobs-urlsource/lists"}