Newpipe Extractor in WASM

aidangrimshaw1 pts1 comments

GitHub - thegrims/newpipe-extractor-wasm · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

thegrims

newpipe-extractor-wasm

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>8 Commits<br>8 Commits

browser-wrapper

browser-wrapper

cors-proxy

cors-proxy

extractor @ 43f8e6e

extractor @ 43f8e6e

.gitignore

.gitignore

.gitmodules

.gitmodules

LICENSE

LICENSE

PLAN.md

PLAN.md

README.md

README.md

View all files

Repository files navigation

newpipe-extractor-wasm

Experiment: compiling NewPipeExtractor<br>to WebAssembly via TeaVM, so it can run in a browser.

See PLAN.md for the full plan and a running status log of what's<br>actually been verified so far.

Layout

extractor/ unmodified clone of TeamNewPipe/NewPipeExtractor (git submodule)<br>browser-wrapper/ Gradle project wrapping the extractor for the browser (TeaVM/wasm-gc)<br>cors-proxy/ Cloudflare Worker relaying requests around the browser's CORS wall

extractor/ is kept untouched to make pulling upstream changes easy — all<br>browser/WASM-specific work happens in browser-wrapper/, including a handful<br>of classes that shadow parts of the extractor's dependency tree that don't<br>compile under TeaVM's wasm-gc backend (Rhino, jsoup's re2j detection, a<br>protobuf message) — see PLAN.md's Step 8 entry for the full list and why.

Current status

A real end-to-end extraction works, in an actual browser. getStreamInfo()<br>pulls live title/duration/uploader data for a real YouTube URL, through<br>cors-proxy, compiled to WebAssembly, running in Chrome. See PLAN.md's status<br>log for the full story — what broke, why, and how each was fixed.

browser-wrapper/webdemo/ has test.mjs (Node-runnable checks for the<br>network-free milestones) and index.html (the full demo, including the real<br>extraction — needs cors-proxy running via wrangler dev alongside it, see<br>below).

Building

Requires JDK 11, 17, and 21 available to Gradle's toolchain resolution (the<br>extractor needs 11, checkstyle needs 21; 17 was used to run Gradle itself).

# extractor (unmodified upstream)<br>cd extractor<br>./gradlew build

# browser-wrapper (WASM build)<br>cd ../browser-wrapper<br>./gradlew buildWasmGC<br>cp build/generated/teavm/wasm-gc/browser-wrapper.wasm* webdemo/<br>cd webdemo && node --experimental-wasm-exnref test.mjs

To try the full demo (including the real extraction) in a browser, run the<br>proxy locally alongside a static server for webdemo/:

cd cors-proxy && npx wrangler dev --port 8787 # no Cloudflare account needed<br>cd browser-wrapper/webdemo && python3 -m http.server 8934<br># open http://localhost:8934/index.html

License

GPL-3.0-or-later — see LICENSE.

NewPipeExtractor (the<br>extractor/ submodule) is itself licensed under GPL-3.0-or-later by<br>NewPipe e.V. This project's compiled WebAssembly output links against and<br>incorporates extractor code, so this repo is licensed under the same terms —<br>that's both a compliance requirement (GPL's copyleft covers combined/derivative<br>works distributed in binary form, and browser-wrapper.wasm is committed here)<br>and the natural choice for a project built directly on top of it.

About<br>No description, website, or topics provided.<br>Resources<br>Readme<br>GPL-3.0 license<br>Activity<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository

Releases

Packages

Contributors

Languages

You can’t perform that action at this time.

browser extractor wasm wrapper cors proxy

Related Articles