4b80d737a4
Bandcamp images work with image IDs, which provide different resolutions. Images on Bandcamp are not always squares, and some IDs respect aspect ratios where some others not. The extractor will only use the ones which preserve aspect ratio and will not provide original images, for performance and size purposes. Because of this aspect ratio preservation constraint, only one dimension will be known at a time. The image IDs with their respective dimension used are: - 10: 1200w; - 101: 90h; - 170: 422h; - 171: 646h; - 20: 1024w; - 200: 420h; - 201: 280h; - 202: 140h; - 204: 360h; - 205: 240h; - 206: 180h; - 207: 120h; - 43: 100h; - 44: 200h. (Where w represents the width of the image and h the height of the image) Note that these dimensions are theoretical because if the image size is less than the dimensions of the image ID, it will be not upscaled but kept to its original size. All these resolutions are stored in a private static list of ThumbnailSuffixes in BandcampExtractorHelper, in which the methods to get mutliple images have been added: - getImagesFromImageUrl(String): public method to get images from an image URL; - getImagesFromImageId(long, boolean): public method to get images from an image ID; - getImagesFromImageBaseUrl(String): private utility method to get images from the static list of ThumbnailSuffixes from a given image base URL, containing the path to the image, a "a" letter if it comes from an album, its ID and an underscore. Some existing methods have been also edited: - the documentation of getImageUrl(long, boolean) has been changed to reflect the Bandcamp images findings; - getThumbnailUrlFromSearchResult has been renamed to getImagesFromSearchResult, and a documentation has been added to this method. The method replaceHttpWithHttps of the Utils class has been also used in BandcampExtractorHelper instead of doing manually what the method does. |
||
---|---|---|
.github | ||
checkstyle | ||
extractor | ||
gradle/wrapper | ||
timeago-parser | ||
.gitignore | ||
LICENSE | ||
README.md | ||
build.gradle | ||
gradlew | ||
gradlew.bat | ||
jitpack.yml | ||
settings.gradle |
README.md
NewPipe Extractor
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:
- Add
maven { url 'https://jitpack.io' }
to therepositories
in yourbuild.gradle
. - Add
implementation 'com.github.TeamNewPipe:NewPipeExtractor:INSERT_VERSION_HERE'
to thedependencies
in yourbuild.gradle
. ReplaceINSERT_VERSION_HERE
with the latest release. - 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.schabi.newpipe.extractor.timeago.patterns.** { *; }
-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 26, API desugaring is required. If the minSdk
is below 19, the desugar_jdk_libs_nio
artifact is required, which requires Android Gradle Plugin (AGP) version 7.4.0.
Testing changes
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:
- Add
mavenLocal()
in your projectrepositories
list (usually as the first entry to give priority above the others). - It's recommended that you change the
version
of this library (e.g.LOCAL_SNAPSHOT
). - 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
) - 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 for Android Studio users: After you make changes and run the
install
task, use the menu optionFile → "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
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.