NewPipeExtractor/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java

96 lines
3.0 KiB
Java
Raw Normal View History

2017-03-01 18:47:52 +01:00
package org.schabi.newpipe.extractor;
2017-08-11 20:21:49 +02:00
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
2017-03-01 18:47:52 +01:00
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
2017-08-12 17:29:28 +02:00
import org.schabi.newpipe.extractor.kiosk.KioskList;
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
2017-03-01 18:47:52 +01:00
import org.schabi.newpipe.extractor.search.SearchEngine;
import org.schabi.newpipe.extractor.stream.StreamExtractor;
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
2017-03-01 18:47:52 +01:00
import java.util.Collections;
import java.util.List;
2017-03-01 18:47:52 +01:00
public abstract class StreamingService {
public static class ServiceInfo {
private final String name;
private final List<MediaCapability> mediaCapabilities;
2017-08-06 22:20:15 +02:00
public ServiceInfo(String name, List<MediaCapability> mediaCapabilities) {
2017-08-06 22:20:15 +02:00
this.name = name;
this.mediaCapabilities = Collections.unmodifiableList(mediaCapabilities);
}
public String getName() {
return name;
}
public List<MediaCapability> getMediaCapabilities() {
return mediaCapabilities;
}
public enum MediaCapability {
AUDIO, VIDEO, LIVE
2017-08-06 22:20:15 +02:00
}
2017-03-01 18:47:52 +01:00
}
public enum LinkType {
NONE,
STREAM,
2017-08-11 03:23:09 +02:00
CHANNEL,
2017-03-01 18:47:52 +01:00
PLAYLIST
}
2017-08-06 22:20:15 +02:00
private final int serviceId;
private final ServiceInfo serviceInfo;
2017-03-01 18:47:52 +01:00
public StreamingService(int id, String name, List<ServiceInfo.MediaCapability> capabilities) {
2017-08-06 22:20:15 +02:00
this.serviceId = id;
this.serviceInfo = new ServiceInfo(name, capabilities);
2017-08-06 22:20:15 +02:00
}
public final int getServiceId() {
return serviceId;
2017-03-01 18:47:52 +01:00
}
2017-08-06 22:20:15 +02:00
public ServiceInfo getServiceInfo() {
return serviceInfo;
}
@Override
public String toString() {
return serviceId + ":" + serviceInfo.getName();
}
2017-08-06 22:20:15 +02:00
public abstract UrlIdHandler getStreamUrlIdHandler();
2017-08-11 03:23:09 +02:00
public abstract UrlIdHandler getChannelUrlIdHandler();
2017-08-06 22:20:15 +02:00
public abstract UrlIdHandler getPlaylistUrlIdHandler();
2018-02-26 16:19:58 +01:00
2017-08-06 22:20:15 +02:00
public abstract SearchEngine getSearchEngine();
public abstract SuggestionExtractor getSuggestionExtractor();
2018-02-26 16:19:58 +01:00
public abstract StreamExtractor getStreamExtractor(String url);
2017-08-12 21:10:21 +02:00
public abstract KioskList getKioskList() throws ExtractionException;
2018-02-26 16:19:58 +01:00
public abstract ChannelExtractor getChannelExtractor(String url);
public abstract PlaylistExtractor getPlaylistExtractor(String url);
public abstract SubscriptionExtractor getSubscriptionExtractor();
2017-03-01 18:47:52 +01:00
/**
2017-08-11 03:23:09 +02:00
* figure out where the link is pointing to (a channel, video, playlist, etc.)
2017-03-01 18:47:52 +01:00
*/
public final LinkType getLinkTypeByUrl(String url) {
2017-08-06 22:20:15 +02:00
UrlIdHandler sH = getStreamUrlIdHandler();
2017-08-11 03:23:09 +02:00
UrlIdHandler cH = getChannelUrlIdHandler();
2017-08-06 22:20:15 +02:00
UrlIdHandler pH = getPlaylistUrlIdHandler();
2017-03-01 18:47:52 +01:00
if (sH.acceptUrl(url)) {
2017-03-01 18:47:52 +01:00
return LinkType.STREAM;
} else if (cH.acceptUrl(url)) {
2017-08-11 03:23:09 +02:00
return LinkType.CHANNEL;
} else if (pH.acceptUrl(url)) {
return LinkType.PLAYLIST;
2017-03-01 18:47:52 +01:00
} else {
return LinkType.NONE;
}
}
}