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.