Skip to content

Commit 599a91c

Browse files
committed
[PeerTube] Support /w/ short video links
1 parent 4f60225 commit 599a91c

2 files changed

Lines changed: 29 additions & 13 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@
99
public class PeertubeStreamLinkHandlerFactory extends LinkHandlerFactory {
1010

1111
private static final PeertubeStreamLinkHandlerFactory instance = new PeertubeStreamLinkHandlerFactory();
12-
private static final String ID_PATTERN = "/videos/(watch/|embed/)?([^/?&#]*)";
12+
private static final String ID_PATTERN = "(/w/|(/videos/(watch/|embed/)?))([^/?&#]*)";
1313
public static final String VIDEO_API_ENDPOINT = "/api/v1/videos/";
14+
15+
// From PeerTube 3.3.0, the default path is /w/.
16+
// We still use /videos/watch/ for compatibility reasons:
17+
// /videos/watch/ is still accepted by >=3.3.0 but /w/ isn't by <3.3.0
1418
private static final String VIDEO_PATH = "/videos/watch/";
1519

1620
private PeertubeStreamLinkHandlerFactory() {
@@ -32,7 +36,7 @@ public String getUrl(String id, String baseUrl) {
3236

3337
@Override
3438
public String getId(String url) throws ParsingException, IllegalArgumentException {
35-
return Parser.matchGroup(ID_PATTERN, url, 2);
39+
return Parser.matchGroup(ID_PATTERN, url, 4);
3640
}
3741

3842
@Override

extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamLinkHandlerFactoryTest.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class PeertubeStreamLinkHandlerFactoryTest {
1919

2020
@BeforeClass
2121
public static void setUp() {
22-
PeerTube.setInstance(new PeertubeInstance("https://peertube.mastodon.host", "PeerTube on Mastodon.host"));
22+
PeerTube.setInstance(new PeertubeInstance("https://framatube.org", "Framatube"));
2323
linkHandler = PeertubeStreamLinkHandlerFactory.getInstance();
2424
NewPipe.init(DownloaderTestImpl.getInstance());
2525
}
@@ -30,30 +30,42 @@ public void getId() throws Exception {
3030
linkHandler.fromUrl("https://peertube.mastodon.host/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60").getId());
3131
assertEquals("986aac60-1263-4f73-9ce5-36b18225cb60",
3232
linkHandler.fromUrl("https://peertube.mastodon.host/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60?fsdafs=fsafa").getId());
33-
assertEquals("9c9de5e8-0a1e-484a-b099-e80766180a6d",
34-
linkHandler.fromUrl("https://framatube.org/videos/embed/9c9de5e8-0a1e-484a-b099-e80766180a6d").getId());
3533
assertEquals("986aac60-1263-4f73-9ce5-36b18225cb60",
3634
linkHandler.fromUrl("https://peertube.mastodon.host/api/v1/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60").getId());
3735
assertEquals("986aac60-1263-4f73-9ce5-36b18225cb60",
3836
linkHandler.fromUrl("https://peertube.mastodon.host/api/v1/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60?fsdafs=fsafa").getId());
37+
38+
assertEquals("9c9de5e8-0a1e-484a-b099-e80766180a6d",
39+
linkHandler.fromUrl("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d").getId());
40+
assertEquals("9c9de5e8-0a1e-484a-b099-e80766180a6d",
41+
linkHandler.fromUrl("https://framatube.org/videos/embed/9c9de5e8-0a1e-484a-b099-e80766180a6d").getId());
42+
assertEquals("9c9de5e8-0a1e-484a-b099-e80766180a6d",
43+
linkHandler.fromUrl("https://framatube.org/w/9c9de5e8-0a1e-484a-b099-e80766180a6d").getId());
3944
}
4045

4146
@Test
4247
public void getUrl() throws Exception {
43-
assertEquals("https://peertube.mastodon.host/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60",
44-
linkHandler.fromId("986aac60-1263-4f73-9ce5-36b18225cb60").getUrl());
45-
assertEquals("https://peertube.mastodon.host/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60",
46-
linkHandler.fromUrl("https://peertube.mastodon.host/api/v1/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60").getUrl());
47-
assertEquals("https://peertube.mastodon.host/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60",
48-
linkHandler.fromUrl("https://peertube.mastodon.host/videos/embed/986aac60-1263-4f73-9ce5-36b18225cb60").getUrl());
48+
assertEquals("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d",
49+
linkHandler.fromId("9c9de5e8-0a1e-484a-b099-e80766180a6d").getUrl());
50+
assertEquals("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d",
51+
linkHandler.fromUrl("https://framatube.org/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d").getUrl());
52+
assertEquals("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d",
53+
linkHandler.fromUrl("https://framatube.org/videos/embed/9c9de5e8-0a1e-484a-b099-e80766180a6d").getUrl());
54+
assertEquals("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d",
55+
linkHandler.fromUrl("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d").getUrl());
56+
assertEquals("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d",
57+
linkHandler.fromUrl("https://framatube.org/w/9c9de5e8-0a1e-484a-b099-e80766180a6d").getUrl());
4958
}
5059

5160

5261
@Test
5362
public void testAcceptUrl() throws ParsingException {
5463
assertTrue(linkHandler.acceptUrl("https://peertube.mastodon.host/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60"));
5564
assertTrue(linkHandler.acceptUrl("https://peertube.mastodon.host/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60?fsdafs=fsafa"));
65+
66+
assertTrue(linkHandler.acceptUrl("https://framatube.org/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d"));
5667
assertTrue(linkHandler.acceptUrl("https://framatube.org/videos/embed/9c9de5e8-0a1e-484a-b099-e80766180a6d"));
57-
assertTrue(linkHandler.acceptUrl("https://peertube.mastodon.host/api/v1/videos/watch/986aac60-1263-4f73-9ce5-36b18225cb60?fsdafs=fsafa"));
68+
assertTrue(linkHandler.acceptUrl("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d"));
69+
assertTrue(linkHandler.acceptUrl("https://framatube.org/w/9c9de5e8-0a1e-484a-b099-e80766180a6d"));
5870
}
59-
}
71+
}

0 commit comments

Comments
 (0)