Skip to content

Commit 43b54cc

Browse files
authored
Merge pull request #145 from yausername/peertube
Basic PeerTube support (without P2P)
2 parents b6d3252 + 00c2368 commit 43b54cc

46 files changed

Lines changed: 2889 additions & 51 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package org.schabi.newpipe.extractor;
22

3+
import java.io.IOException;
4+
5+
import javax.annotation.Nonnull;
6+
import javax.annotation.Nullable;
7+
38
import org.schabi.newpipe.extractor.downloader.Downloader;
49
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
510
import org.schabi.newpipe.extractor.exceptions.ParsingException;
@@ -8,11 +13,6 @@
813
import org.schabi.newpipe.extractor.localization.Localization;
914
import org.schabi.newpipe.extractor.localization.TimeAgoParser;
1015

11-
import javax.annotation.Nonnull;
12-
import javax.annotation.Nullable;
13-
import java.io.IOException;
14-
import java.io.Serializable;
15-
1616
public abstract class Extractor{
1717
/**
1818
* {@link StreamingService} currently related to this extractor.<br>
@@ -93,6 +93,11 @@ public String getOriginalUrl() throws ParsingException {
9393
public String getUrl() throws ParsingException {
9494
return linkHandler.getUrl();
9595
}
96+
97+
@Nonnull
98+
public String getBaseUrl() throws ParsingException {
99+
return linkHandler.getBaseUrl();
100+
}
96101

97102
@Nonnull
98103
public StreamingService getService() {

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,13 @@ public static MediaFormat getFormatById(int id) {
126126
return null;
127127
}
128128

129+
public static MediaFormat getFromSuffix(String suffix) {
130+
for (MediaFormat vf: values()) {
131+
if (vf.suffix.equals(suffix)) return vf;
132+
}
133+
return null;
134+
}
135+
129136
/**
130137
* Get the name of the format
131138
* @return the name of the format
@@ -149,4 +156,5 @@ public String getSuffix() {
149156
public String getMimeType() {
150157
return mimeType;
151158
}
159+
152160
}

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package org.schabi.newpipe.extractor;
22

3+
import java.util.Arrays;
4+
import java.util.Collections;
5+
import java.util.List;
6+
37
import org.schabi.newpipe.extractor.services.media_ccc.MediaCCCService;
8+
import org.schabi.newpipe.extractor.services.peertube.PeertubeService;
49
import org.schabi.newpipe.extractor.services.soundcloud.SoundcloudService;
510
import org.schabi.newpipe.extractor.services.youtube.YoutubeService;
611

7-
import java.util.List;
8-
9-
import static java.util.Arrays.asList;
10-
import static java.util.Collections.unmodifiableList;
11-
1212
/*
1313
* Copyright (C) Christian Schabesberger 2018 <chris.schabesberger@mailbox.org>
1414
* ServiceList.java is part of NewPipe.
@@ -38,16 +38,18 @@ private ServiceList() {
3838
public static final YoutubeService YouTube;
3939
public static final SoundcloudService SoundCloud;
4040
public static final MediaCCCService MediaCCC;
41+
public static final PeertubeService PeerTube;
4142

4243
/**
4344
* When creating a new service, put this service in the end of this list,
4445
* and give it the next free id.
4546
*/
46-
private static final List<StreamingService> SERVICES = unmodifiableList(
47-
asList(
47+
private static final List<StreamingService> SERVICES = Collections.unmodifiableList(
48+
Arrays.asList(
4849
YouTube = new YoutubeService(0),
4950
SoundCloud = new SoundcloudService(1),
50-
MediaCCC = new MediaCCCService(2)
51+
MediaCCC = new MediaCCCService(2),
52+
PeerTube = new PeertubeService(3)
5153
));
5254

5355
/**

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
package org.schabi.newpipe.extractor;
22

3+
import java.util.Collections;
4+
import java.util.List;
5+
36
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
47
import org.schabi.newpipe.extractor.comments.CommentsExtractor;
58
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
69
import org.schabi.newpipe.extractor.exceptions.ParsingException;
710
import org.schabi.newpipe.extractor.kiosk.KioskList;
8-
import org.schabi.newpipe.extractor.linkhandler.*;
11+
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
12+
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
13+
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
14+
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
15+
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
16+
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
917
import org.schabi.newpipe.extractor.localization.ContentCountry;
1018
import org.schabi.newpipe.extractor.localization.Localization;
1119
import org.schabi.newpipe.extractor.localization.TimeAgoParser;
@@ -16,9 +24,6 @@
1624
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
1725
import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
1826

19-
import java.util.Collections;
20-
import java.util.List;
21-
2227
/*
2328
* Copyright (C) Christian Schabesberger 2018 <chris.schabesberger@mailbox.org>
2429
* StreamingService.java is part of NewPipe.
@@ -44,6 +49,7 @@ public abstract class StreamingService {
4449
*/
4550
public static class ServiceInfo {
4651
private final String name;
52+
4753
private final List<MediaCapability> mediaCapabilities;
4854

4955
/**
@@ -59,7 +65,7 @@ public ServiceInfo(String name, List<MediaCapability> mediaCapabilities) {
5965
public String getName() {
6066
return name;
6167
}
62-
68+
6369
public List<MediaCapability> getMediaCapabilities() {
6470
return mediaCapabilities;
6571
}
@@ -110,6 +116,8 @@ public ServiceInfo getServiceInfo() {
110116
public String toString() {
111117
return serviceId + ":" + serviceInfo.getName();
112118
}
119+
120+
public abstract String getBaseUrl();
113121

114122
/*//////////////////////////////////////////////////////////////////////////
115123
// Url Id handler
@@ -250,7 +258,7 @@ public CommentsExtractor getCommentsExtractor(String url) throws ExtractionExcep
250258
}
251259
return getCommentsExtractor(llhf.fromUrl(url));
252260
}
253-
261+
254262
/*//////////////////////////////////////////////////////////////////////////
255263
// Utils
256264
//////////////////////////////////////////////////////////////////////////*/

extractor/src/main/java/org/schabi/newpipe/extractor/kiosk/KioskList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public KioskExtractor getExtractorByUrl(String url, String nextPageUrl, Localiza
118118
for(Map.Entry<String, KioskEntry> e : kioskList.entrySet()) {
119119
KioskEntry ke = e.getValue();
120120
if(ke.handlerFactory.acceptUrl(url)) {
121-
return getExtractorById(e.getKey(), nextPageUrl, localization);
121+
return getExtractorById(ke.handlerFactory.getId(url), nextPageUrl, localization);
122122
}
123123
}
124124
throw new ExtractionException("Could not find a kiosk that fits to the url: " + url);

extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/LinkHandler.java

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

33
import java.io.Serializable;
44

5+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
6+
import org.schabi.newpipe.extractor.utils.Utils;
7+
58
public class LinkHandler implements Serializable {
69
protected final String originalUrl;
710
protected final String url;
@@ -28,4 +31,8 @@ public String getUrl() {
2831
public String getId() {
2932
return id;
3033
}
34+
35+
public String getBaseUrl() throws ParsingException {
36+
return Utils.getBaseUrl(url);
37+
}
3138
}

extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/LinkHandlerFactory.java

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

33
import org.schabi.newpipe.extractor.exceptions.FoundAdException;
44
import org.schabi.newpipe.extractor.exceptions.ParsingException;
5+
import org.schabi.newpipe.extractor.utils.Utils;
56

67
/*
78
* Created by Christian Schabesberger on 26.07.16.
@@ -33,26 +34,41 @@ public abstract class LinkHandlerFactory {
3334
public abstract String getUrl(String id) throws ParsingException;
3435
public abstract boolean onAcceptUrl(final String url) throws ParsingException;
3536

37+
public String getUrl(String id, String baseUrl) throws ParsingException{
38+
return getUrl(id);
39+
}
40+
3641
///////////////////////////////////
3742
// Logic
3843
///////////////////////////////////
3944

4045
public LinkHandler fromUrl(String url) throws ParsingException {
46+
final String baseUrl = Utils.getBaseUrl(url);
47+
return fromUrl(url, baseUrl);
48+
}
49+
50+
public LinkHandler fromUrl(String url, String baseUrl) throws ParsingException {
4151
if(url == null) throw new IllegalArgumentException("url can not be null");
4252
if(!acceptUrl(url)) {
4353
throw new ParsingException("Malformed unacceptable url: " + url);
4454
}
4555

4656
final String id = getId(url);
47-
return new LinkHandler(url, getUrl(id), id);
57+
return new LinkHandler(url, getUrl(id,baseUrl), id);
4858
}
49-
59+
5060
public LinkHandler fromId(String id) throws ParsingException {
5161
if(id == null) throw new IllegalArgumentException("id can not be null");
5262
final String url = getUrl(id);
5363
return new LinkHandler(url, url, id);
5464
}
5565

66+
public LinkHandler fromId(String id, String baseUrl) throws ParsingException {
67+
if(id == null) throw new IllegalArgumentException("id can not be null");
68+
final String url = getUrl(id, baseUrl);
69+
return new LinkHandler(url, url, id);
70+
}
71+
5672
/**
5773
* When a VIEW_ACTION is caught this function will test if the url delivered within the calling
5874
* Intent was meant to be watched with this Service.
@@ -65,4 +81,5 @@ public boolean acceptUrl(final String url) throws ParsingException {
6581
throw fe;
6682
}
6783
}
84+
6885
}

extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/ListLinkHandlerFactory.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package org.schabi.newpipe.extractor.linkhandler;
22

3-
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4-
53
import java.util.ArrayList;
64
import java.util.List;
75

6+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
7+
import org.schabi.newpipe.extractor.utils.Utils;
8+
89
public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
910

1011
///////////////////////////////////
@@ -14,32 +15,53 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
1415
public List<String> getContentFilter(String url) throws ParsingException { return new ArrayList<>(0);}
1516
public String getSortFilter(String url) throws ParsingException {return ""; }
1617
public abstract String getUrl(String id, List<String> contentFilter, String sortFilter) throws ParsingException;
18+
19+
public String getUrl(String id, List<String> contentFilter, String sortFilter, String baseUrl) throws ParsingException {
20+
return getUrl(id, contentFilter, sortFilter);
21+
}
1722

1823
///////////////////////////////////
1924
// Logic
2025
///////////////////////////////////
21-
22-
26+
2327
@Override
2428
public ListLinkHandler fromUrl(String url) throws ParsingException {
29+
String baseUrl = Utils.getBaseUrl(url);
30+
return fromUrl(url, baseUrl);
31+
}
32+
33+
@Override
34+
public ListLinkHandler fromUrl(String url, String baseUrl) throws ParsingException {
2535
if(url == null) throw new IllegalArgumentException("url may not be null");
2636

27-
return new ListLinkHandler(super.fromUrl(url), getContentFilter(url), getSortFilter(url));
37+
return new ListLinkHandler(super.fromUrl(url, baseUrl), getContentFilter(url), getSortFilter(url));
2838
}
2939

3040
@Override
3141
public ListLinkHandler fromId(String id) throws ParsingException {
3242
return new ListLinkHandler(super.fromId(id), new ArrayList<String>(0), "");
3343
}
44+
45+
@Override
46+
public ListLinkHandler fromId(String id, String baseUrl) throws ParsingException {
47+
return new ListLinkHandler(super.fromId(id, baseUrl), new ArrayList<String>(0), "");
48+
}
3449

3550
public ListLinkHandler fromQuery(String id,
3651
List<String> contentFilters,
3752
String sortFilter) throws ParsingException {
3853
final String url = getUrl(id, contentFilters, sortFilter);
3954
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
4055
}
56+
57+
public ListLinkHandler fromQuery(String id,
58+
List<String> contentFilters,
59+
String sortFilter, String baseUrl) throws ParsingException {
60+
final String url = getUrl(id, contentFilters, sortFilter, baseUrl);
61+
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
62+
}
4163

42-
64+
4365
/**
4466
* For makeing ListLinkHandlerFactory compatible with LinkHandlerFactory we need to override this,
4567
* however it should not be overridden by the actual implementation.
@@ -50,6 +72,11 @@ public String getUrl(String id) throws ParsingException {
5072
return getUrl(id, new ArrayList<String>(0), "");
5173
}
5274

75+
@Override
76+
public String getUrl(String id, String baseUrl) throws ParsingException {
77+
return getUrl(id, new ArrayList<String>(0), "", baseUrl);
78+
}
79+
5380
/**
5481
* Will returns content filter the corresponding extractor can handle like "channels", "videos", "music", etc.
5582
*

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,4 +116,9 @@ public CommentsExtractor getCommentsExtractor(ListLinkHandler linkHandler)
116116
return null;
117117
}
118118

119+
@Override
120+
public String getBaseUrl() {
121+
return "https://media.ccc.de";
122+
}
123+
119124
}

0 commit comments

Comments
 (0)