MCPcopy Index your code
hub / github.com/TeamNewPipe/NewPipeExtractor

github.com/TeamNewPipe/NewPipeExtractor @v0.26.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.26.3 ↗ · + Follow
5,814 symbols 15,977 edges 495 files 739 documented · 13% updated 7d agov0.26.3 · 2026-06-09★ 1,905147 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

NewPipe Extractor

CI JIT Pack Badge JDocDocumentation

NewPipe Extractor is a library for extracting things from streaming sites. It is a core component of NewPipe, but could be used independently.

Usage

NewPipe Extractor is available at JitPack's Maven repo.

If you're using Gradle, you could add NewPipe Extractor as a dependency with the following steps:

  1. Add maven { url 'https://jitpack.io' } to the repositories in your build.gradle.
  2. Add implementation 'com.github.teamnewpipe:NewPipeExtractor:INSERT_VERSION_HERE' to the dependencies in your build.gradle. Replace INSERT_VERSION_HERE with the latest release.
  3. If you are using tools to minimize your project, make sure to keep the files below, by e.g. adding the following lines to your proguard file: ```

Rules for NewPipeExtractor

-keep class org.mozilla.javascript. { *; } -keep class org.mozilla.classfile.ClassFileWriter -dontwarn org.mozilla.javascript.tools.


> [!NOTE]
> To use NewPipe Extractor in Android projects with a `minSdk` below 33, [core library desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) with the `desugar_jdk_libs_nio` artifact is required.

### Testing changes

#### Maven Central

NewPipe Extractor's snapshots are available on Maven Central's snapshot repository. These versions
are based on the commit's short hash (for e.g. `git rev-parse --short HEAD`) and are available for
90 days since the date of publication/commit.

```kotlin
repositories {
    maven(url = "https://central.sonatype.com/repository/maven-snapshots/")
}

dependencies {
    implementation("net.newpipe:extractor:${LAST_COMMIT_SHORT_HASH}-SNAPSHOT")
}

Local

To test changes quickly you can build the library locally. A good approach would be to add something like the following to your settings.gradle:

includeBuild('../NewPipeExtractor') {
    dependencySubstitution {
        substitute module('com.github.teamnewpipe:NewPipeExtractor') with project(':extractor')
    }
}

Another approach would be to use the local Maven repository, here's a gist of how to use it:

  1. Add mavenLocal() in your project repositories list (usually as the first entry to give priority above the others).
  2. It's recommended that you change the version of this library (e.g. LOCAL_SNAPSHOT).
  3. Run gradle's ìnstall task to deploy this library to your local repository (using the wrapper, present in the root of this project: ./gradlew install)
  4. Change the dependency version used in your project to match the one you chose in step 2 (implementation 'com.github.teamnewpipe:NewPipeExtractor:LOCAL_SNAPSHOT')

[!TIP] Tip for Android Studio users: After you make changes and run the install task, use the menu option File → "Sync with File System" to refresh the library in your project.

Supported sites

The following sites are currently supported:

  • YouTube
  • SoundCloud
  • media.ccc.de
  • PeerTube (no P2P)
  • Bandcamp

License

GNU GPLv3 Image

NewPipe Extractor is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Extension points exported contracts — how you extend this code

InitNewPipeTest (Interface)
(no doc) [9 implementers]
extractor/src/test/java/org/schabi/newpipe/extractor/InitNewPipeTest.java
BaseListExtractorTest (Interface)
(no doc) [33 implementers]
extractor/src/test/java/org/schabi/newpipe/extractor/services/BaseListExtractorTest.java
BaseExtractorTest (Interface)
(no doc) [38 implementers]
extractor/src/test/java/org/schabi/newpipe/extractor/services/BaseExtractorTest.java
BaseChannelExtractorTest (Interface)
(no doc) [22 implementers]
extractor/src/test/java/org/schabi/newpipe/extractor/services/BaseChannelExtractorTest.java
BasePlaylistExtractorTest (Interface)
(no doc) [12 implementers]
extractor/src/test/java/org/schabi/newpipe/extractor/services/BasePlaylistExtractorTest.java

Core symbols most depended-on inside this repo

getObject
called by 859
extractor/src/main/java/org/schabi/newpipe/extractor/utils/JsonUtils.java
getString
called by 421
extractor/src/main/java/org/schabi/newpipe/extractor/utils/JsonUtils.java
getUrl
called by 285
extractor/src/main/java/org/schabi/newpipe/extractor/InfoItemExtractor.java
getArray
called by 259
extractor/src/main/java/org/schabi/newpipe/extractor/utils/JsonUtils.java
isNullOrEmpty
called by 209
extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java
get
called by 198
extractor/src/main/java/org/schabi/newpipe/extractor/downloader/Downloader.java
getItems
called by 124
extractor/src/main/java/org/schabi/newpipe/extractor/Collector.java
equals
called by 113
extractor/src/main/java/org/schabi/newpipe/extractor/stream/Description.java

Shape

Method 5,110
Class 659
Enum 20
Interface 18
Function 7

Languages

Java100%
TypeScript1%
Kotlin1%

Modules by API surface

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java210 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/search/YoutubeSearchExtractorTest.java154 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractorTest.java153 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamExtractorTest.java134 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorTest.java107 symbols
extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java87 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubePlaylistExtractorTest.java86 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/search/YoutubeMusicSearchExtractorTest.java72 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/DefaultStreamExtractorTest.java71 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudPlaylistExtractorTest.java69 symbols
extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java67 symbols
extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelTabExtractorTest.java64 symbols

For agents

$ claude mcp add NewPipeExtractor \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact