Skip to content

Commit 1d553dc

Browse files
absurdlylongusernameStypox
authored andcommitted
Add logging functionality to extractor and add some logging
Add StreamingServiceId enum to map service id to name for logging
1 parent a5e59ce commit 1d553dc

7 files changed

Lines changed: 114 additions & 1 deletion

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/Extractor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.schabi.newpipe.extractor.localization.ContentCountry;
88
import org.schabi.newpipe.extractor.localization.Localization;
99
import org.schabi.newpipe.extractor.localization.TimeAgoParser;
10+
import org.schabi.newpipe.extractor.utils.ExtractorLogger;
1011

1112
import javax.annotation.Nonnull;
1213
import javax.annotation.Nullable;
@@ -15,6 +16,8 @@
1516
import java.util.Objects;
1617

1718
public abstract class Extractor {
19+
private final String TAG = getClass().getSimpleName() + "@" + hashCode();
20+
1821
/**
1922
* {@link StreamingService} currently related to this extractor.<br>
2023
* Useful for getting other things from a service (like the url handlers for
@@ -54,7 +57,9 @@ public LinkHandler getLinkHandler() {
5457
* @throws ExtractionException if the pages content is not understood
5558
*/
5659
public void fetchPage() throws IOException, ExtractionException {
60+
ExtractorLogger.d(TAG, "base fetchPage called");
5761
if (pageFetched) {
62+
ExtractorLogger.d(TAG, "Page already fetched");
5863
return;
5964
}
6065
onFetchPage(downloader);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
44
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
5+
import org.schabi.newpipe.extractor.utils.ExtractorLogger;
56

67
import java.io.Serializable;
78
import java.util.ArrayList;
@@ -10,6 +11,7 @@
1011

1112
public abstract class Info implements Serializable {
1213

14+
private static final String TAG = "Info";
1315
private final int serviceId;
1416
/**
1517
* Id of this Info object <br>
@@ -52,6 +54,7 @@ public Info(final int serviceId,
5254
this.url = url;
5355
this.originalUrl = originalUrl;
5456
this.name = name;
57+
ExtractorLogger.d(TAG, "Base Created " + this);
5558
}
5659

5760
public Info(final int serviceId, final LinkHandler linkHandler, final String name) {

extractor/src/main/java/org/schabi/newpipe/extractor/NewPipe.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
2525
import org.schabi.newpipe.extractor.localization.ContentCountry;
2626
import org.schabi.newpipe.extractor.localization.Localization;
27+
import org.schabi.newpipe.extractor.utils.ExtractorLogger;
2728

2829
import java.util.List;
2930

@@ -34,6 +35,7 @@
3435
* Provides access to streaming services supported by NewPipe.
3536
*/
3637
public final class NewPipe {
38+
private static final String TAG = NewPipe.class.getSimpleName();
3739
private static Downloader downloader;
3840
private static Localization preferredLocalization;
3941
private static ContentCountry preferredContentCountry;
@@ -42,15 +44,19 @@ private NewPipe() {
4244
}
4345

4446
public static void init(final Downloader d) {
47+
ExtractorLogger.d(TAG, "Default init called");
4548
init(d, Localization.DEFAULT);
4649
}
4750

4851
public static void init(final Downloader d, final Localization l) {
52+
ExtractorLogger.d(TAG, "Default init called with localization");
4953
init(d, l, l.getCountryCode().isEmpty()
5054
? ContentCountry.DEFAULT : new ContentCountry(l.getCountryCode()));
5155
}
5256

5357
public static void init(final Downloader d, final Localization l, final ContentCountry c) {
58+
ExtractorLogger.d(TAG, "Initializing with downloader: "
59+
+ d.getClass().getSimpleName() + ", " + l + ", " + c);
5460
downloader = d;
5561
preferredLocalization = l;
5662
preferredContentCountry = c;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.schabi.newpipe.extractor;
2+
3+
import java.util.Objects;
4+
5+
public enum StreamingServiceId {
6+
NO_SERVICE_ID,
7+
YOUTUBE,
8+
SOUNDCLOUD,
9+
MEDIACCC,
10+
PEERTUBE,
11+
BANDCAMP;
12+
13+
14+
private static final StreamingServiceId[] VALUES = values();
15+
16+
public static String nameFromId(final int serviceId) {
17+
try {
18+
return VALUES[Objects.checkIndex(serviceId + 1, VALUES.length)].name();
19+
} catch (final IndexOutOfBoundsException e) {
20+
throw new IllegalArgumentException("Invalid serviceId: " + serviceId, e);
21+
}
22+
}
23+
}

extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@
2626
import org.schabi.newpipe.extractor.MetaInfo;
2727
import org.schabi.newpipe.extractor.NewPipe;
2828
import org.schabi.newpipe.extractor.StreamingService;
29+
import org.schabi.newpipe.extractor.StreamingServiceId;
2930
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
3031
import org.schabi.newpipe.extractor.exceptions.ContentNotSupportedException;
3132
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
3233
import org.schabi.newpipe.extractor.localization.DateWrapper;
3334
import org.schabi.newpipe.extractor.utils.ExtractorHelper;
35+
import org.schabi.newpipe.extractor.utils.ExtractorLogger;
3436

3537
import java.io.IOException;
3638
import java.util.List;
@@ -44,7 +46,7 @@
4446
* Info object for opened contents, i.e. the content ready to play.
4547
*/
4648
public class StreamInfo extends Info {
47-
49+
private static final String TAG = StreamInfo.class.getSimpleName();
4850
public static class StreamExtractException extends ExtractionException {
4951
StreamExtractException(final String message) {
5052
super(message);
@@ -61,19 +63,37 @@ public StreamInfo(final int serviceId,
6163
super(serviceId, id, url, originalUrl, name);
6264
this.streamType = streamType;
6365
this.ageLimit = ageLimit;
66+
ExtractorLogger.d(TAG, "Created " + this);
67+
68+
}
69+
70+
@Override
71+
public String toString() {
72+
return TAG + "[" +
73+
"serviceId=" + getServiceId() +
74+
", url='" + getUrl() + '\'' +
75+
", originalUrl='" + getOriginalUrl() + '\'' +
76+
", id='" + getId() + '\'' +
77+
", name='" + getName() + '\'' +
78+
", streamType=" + streamType +
79+
", ageLimit=" + ageLimit +
80+
']';
6481
}
6582

6683
public static StreamInfo getInfo(final String url) throws IOException, ExtractionException {
84+
ExtractorLogger.d(TAG, "getInfo(" + url + ")");
6785
return getInfo(NewPipe.getServiceByUrl(url), url);
6886
}
6987

7088
public static StreamInfo getInfo(@Nonnull final StreamingService service,
7189
final String url) throws IOException, ExtractionException {
90+
ExtractorLogger.d(TAG, "getInfo(" + service.getClass().getSimpleName() + ", " + url + ")");
7291
return getInfo(service.getStreamExtractor(url));
7392
}
7493

7594
public static StreamInfo getInfo(@Nonnull final StreamExtractor extractor)
7695
throws ExtractionException, IOException {
96+
ExtractorLogger.d(TAG, "getInfo(" + extractor.getClass().getSimpleName() + ")");
7797
extractor.fetchPage();
7898
final StreamInfo streamInfo;
7999
try {
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package org.schabi.newpipe.extractor.utils;
2+
3+
public final class ExtractorLogger {
4+
5+
private ExtractorLogger() { }
6+
7+
private static Logger logger = new ConsoleLogger();
8+
9+
public static void setLogger(final Logger customLogger) {
10+
logger = customLogger;
11+
}
12+
13+
public static void d(final String tag, final String msg) {
14+
logger.debug(tag, msg);
15+
}
16+
17+
public static void w(final String tag, final String msg) {
18+
logger.warn(tag, msg);
19+
}
20+
21+
public static void e(final String tag, final String msg) {
22+
logger.error(tag, msg);
23+
}
24+
25+
public static void e(final String tag, final String msg, final Throwable t) {
26+
logger.error(tag, msg, t);
27+
}
28+
29+
// default logger that prints to stdout
30+
private static final class ConsoleLogger implements Logger {
31+
public void debug(final String tag, final String msg) {
32+
System.out.println("[DEBUG][" + tag + "] " + msg);
33+
}
34+
35+
public void warn(final String tag, final String msg) {
36+
System.out.println("[WARN ][" + tag + "] " + msg);
37+
}
38+
39+
public void error(final String tag, final String msg) {
40+
System.err.println("[ERROR][" + tag + "] " + msg);
41+
}
42+
43+
public void error(final String tag, final String msg, final Throwable t) {
44+
System.err.println("[ERROR][" + tag + "] " + msg);
45+
t.printStackTrace(System.err);
46+
}
47+
}
48+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.schabi.newpipe.extractor.utils;
2+
3+
public interface Logger {
4+
void debug(String tag, String message);
5+
void warn(String tag, String message);
6+
void error(String tag, String message);
7+
void error(String tag, String message, Throwable t);
8+
}

0 commit comments

Comments
 (0)