Overview
The ServiceList class provides access to all streaming services supported by NewPipe Extractor. It contains static instances of each service and a method to retrieve all services as a list.
This class is used internally by NewPipe to provide service lookup functionality.
Supported Services
YouTube
YouTube service instance.
Static instance with service ID 0
StreamingService youtube = ServiceList.YouTube;
System.out.println("Service: " + youtube.getServiceInfo().getName());
System.out.println("ID: " + youtube.getServiceId()); // 0
SoundCloud
SoundCloud service instance.
Static instance with service ID 1
StreamingService soundcloud = ServiceList.SoundCloud;
System.out.println("Service: " + soundcloud.getServiceInfo().getName());
System.out.println("ID: " + soundcloud.getServiceId()); // 1
Media.ccc.de service instance.
Static instance with service ID 2
StreamingService mediaCCC = ServiceList.MediaCCC;
System.out.println("Service: " + mediaCCC.getServiceInfo().getName());
System.out.println("ID: " + mediaCCC.getServiceId()); // 2
PeerTube
PeerTube service instance.
Static instance with service ID 3
StreamingService peertube = ServiceList.PeerTube;
System.out.println("Service: " + peertube.getServiceInfo().getName());
System.out.println("ID: " + peertube.getServiceId()); // 3
Bandcamp
Bandcamp service instance.
Static instance with service ID 4
StreamingService bandcamp = ServiceList.Bandcamp;
System.out.println("Service: " + bandcamp.getServiceInfo().getName());
System.out.println("ID: " + bandcamp.getServiceId()); // 4
Methods
all()
Get all supported streaming services.
An unmodifiable list of all supported services
List<StreamingService> allServices = ServiceList.all();
for (StreamingService service : allServices) {
System.out.println("ID: " + service.getServiceId());
System.out.println("Name: " + service.getServiceInfo().getName());
System.out.println("Base URL: " + service.getBaseUrl());
System.out.println("Capabilities: " +
service.getServiceInfo().getMediaCapabilities());
System.out.println("---");
}
Service IDs
Each service has a unique ID assigned:
| Service | ID |
|---|
| YouTube | 0 |
| SoundCloud | 1 |
| MediaCCC | 2 |
| PeerTube | 3 |
| Bandcamp | 4 |
Usage Examples
Iterate Through All Services
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.extractor.StreamingService;
public class ListAllServices {
public static void main(String[] args) {
List<StreamingService> services = ServiceList.all();
System.out.println("Available services: " + services.size());
for (StreamingService service : services) {
System.out.println("\n" + service.getServiceInfo().getName());
System.out.println(" ID: " + service.getServiceId());
System.out.println(" URL: " + service.getBaseUrl());
// Check capabilities
Set<StreamingService.ServiceInfo.MediaCapability> caps =
service.getServiceInfo().getMediaCapabilities();
System.out.print(" Capabilities: ");
if (caps.contains(StreamingService.ServiceInfo.MediaCapability.VIDEO)) {
System.out.print("VIDEO ");
}
if (caps.contains(StreamingService.ServiceInfo.MediaCapability.AUDIO)) {
System.out.print("AUDIO ");
}
if (caps.contains(StreamingService.ServiceInfo.MediaCapability.LIVE)) {
System.out.print("LIVE ");
}
if (caps.contains(StreamingService.ServiceInfo.MediaCapability.COMMENTS)) {
System.out.print("COMMENTS");
}
System.out.println();
}
}
}
Direct Service Access
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.stream.StreamExtractor;
public class DirectServiceAccess {
public static void main(String[] args) throws Exception {
// Initialize NewPipe
NewPipe.init(new DownloaderTestImpl());
// Access YouTube directly
StreamExtractor extractor = ServiceList.YouTube.getStreamExtractor(
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
);
extractor.fetchPage();
System.out.println("YouTube video: " + extractor.getName());
// Access SoundCloud directly
SearchExtractor search = ServiceList.SoundCloud.getSearchExtractor("music");
search.fetchPage();
System.out.println("SoundCloud results: " +
search.getInitialPage().getItems().size());
}
}
Check Service Capabilities
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability;
public class CheckCapabilities {
public static void main(String[] args) {
// Check which services support comments
for (StreamingService service : ServiceList.all()) {
Set<MediaCapability> caps =
service.getServiceInfo().getMediaCapabilities();
if (caps.contains(MediaCapability.COMMENTS)) {
System.out.println(service.getServiceInfo().getName() +
" supports comments");
}
}
// Check which services support live streaming
for (StreamingService service : ServiceList.all()) {
Set<MediaCapability> caps =
service.getServiceInfo().getMediaCapabilities();
if (caps.contains(MediaCapability.LIVE)) {
System.out.println(service.getServiceInfo().getName() +
" supports live streaming");
}
}
}
}
Find Service by Name
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.extractor.StreamingService;
public class FindServiceByName {
public static StreamingService findService(String name) {
return ServiceList.all().stream()
.filter(s -> s.getServiceInfo().getName().equalsIgnoreCase(name))
.findFirst()
.orElse(null);
}
public static void main(String[] args) {
StreamingService youtube = findService("YouTube");
if (youtube != null) {
System.out.println("Found: " + youtube.getServiceInfo().getName());
System.out.println("ID: " + youtube.getServiceId());
}
}
}
Notes
- The list returned by
all() is unmodifiable
- Service instances are created at class initialization and reused
- When adding new services, they should be appended to the list with the next sequential ID
- Service IDs must be unique and should not change once assigned
Integration with NewPipe
The ServiceList class is primarily used through the NewPipe class:
// Instead of using ServiceList directly:
List<StreamingService> services = ServiceList.all();
// It's recommended to use NewPipe methods:
List<StreamingService> services = NewPipe.getServices();
StreamingService youtube = NewPipe.getService(0);
StreamingService soundcloud = NewPipe.getService("SoundCloud");
However, direct access to ServiceList constants can be useful when you know exactly which service you need:
// Direct access when you know the service
StreamExtractor extractor = ServiceList.YouTube.getStreamExtractor(url);
// vs using NewPipe (requires exception handling)
StreamingService service = NewPipe.getService("YouTube");
StreamExtractor extractor = service.getStreamExtractor(url);