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

112 lines
3.0 KiB
Java
Raw Permalink Normal View History

package org.schabi.newpipe.extractor;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
2018-05-13 21:28:51 +02:00
import java.io.Serializable;
2017-08-06 22:20:15 +02:00
import java.util.ArrayList;
2017-11-11 02:55:56 +01:00
import java.util.Collection;
import java.util.List;
public abstract class Info implements Serializable {
private final int serviceId;
/**
* Id of this Info object <br>
* e.g. Youtube: https://www.youtube.com/watch?v=RER5qCTzZ7 &gt; RER5qCTzZ7
*/
private final String id;
/**
* Different than the {@link #originalUrl} in the sense that it <i>may</i> be set as a cleaned
* url.
*
* @see LinkHandler#getUrl()
2018-05-13 21:28:51 +02:00
* @see Extractor#getOriginalUrl()
*/
private final String url;
/**
* The url used to start the extraction of this {@link Info} object.
*
* @see Extractor#getOriginalUrl()
*/
2018-12-23 21:52:40 +01:00
private String originalUrl;
private final String name;
private final List<Throwable> errors = new ArrayList<>();
2017-08-11 20:21:49 +02:00
public void addError(final Throwable throwable) {
2017-11-11 02:55:56 +01:00
this.errors.add(throwable);
}
public void addAllErrors(final Collection<Throwable> throwables) {
this.errors.addAll(throwables);
2017-11-11 02:55:56 +01:00
}
public Info(final int serviceId,
final String id,
final String url,
final String originalUrl,
final String name) {
this.serviceId = serviceId;
2017-11-11 02:55:56 +01:00
this.id = id;
this.url = url;
this.originalUrl = originalUrl;
2017-11-11 02:55:56 +01:00
this.name = name;
}
public Info(final int serviceId, final LinkHandler linkHandler, final String name) {
2018-05-13 21:28:51 +02:00
this(serviceId,
linkHandler.getId(),
linkHandler.getUrl(),
linkHandler.getOriginalUrl(),
2018-05-13 21:28:51 +02:00
name);
}
2017-08-11 20:21:49 +02:00
@Override
public String toString() {
final String ifDifferentString
= url.equals(originalUrl) ? "" : " (originalUrl=\"" + originalUrl + "\")";
return getClass().getSimpleName() + "[url=\"" + url + "\"" + ifDifferentString
+ ", name=\"" + name + "\"]";
2017-08-11 20:21:49 +02:00
}
2017-11-11 02:55:56 +01:00
2018-12-23 21:52:40 +01:00
// if you use an api and want to handle the website url
// overriding original url is essential
public void setOriginalUrl(final String originalUrl) {
this.originalUrl = originalUrl;
2018-12-23 21:52:40 +01:00
}
2017-11-11 02:55:56 +01:00
public int getServiceId() {
return serviceId;
2017-11-11 02:55:56 +01:00
}
public StreamingService getService() {
try {
return NewPipe.getService(serviceId);
} catch (final ExtractionException e) {
// this should be unreachable, as serviceId certainly refers to a valid service
throw new RuntimeException("Info object has invalid service id", e);
}
}
2017-11-11 02:55:56 +01:00
public String getId() {
return id;
}
public String getUrl() {
return url;
}
public String getOriginalUrl() {
return originalUrl;
}
2017-11-11 02:55:56 +01:00
public String getName() {
return name;
}
public List<Throwable> getErrors() {
return errors;
}
}