diff --git a/components/item-full.js b/components/item-full.js
index 4dfd2f9c..e6b0779b 100644
--- a/components/item-full.js
+++ b/components/item-full.js
@@ -106,8 +106,24 @@ function ItemEmbed ({ item }) {
+
+
+ )
+ }
+
+ if (provider === 'peertube') {
+ return (
+
diff --git a/components/text.js b/components/text.js
index d20d2aef..4be86e54 100644
--- a/components/text.js
+++ b/components/text.js
@@ -281,8 +281,24 @@ export default memo(function Text ({ rel, imgproxyUrls, children, tab, itemId, o
+
+
+ )
+ }
+
+ if (provider === 'peertube') {
+ return (
+
diff --git a/lib/url.js b/lib/url.js
index 6a605853..ac334f0e 100644
--- a/lib/url.js
+++ b/lib/url.js
@@ -120,6 +120,16 @@ export function parseEmbedUrl (href) {
}
}
}
+
+ if (hostname.endsWith('peertube.tv') || hostname.endsWith('bitcointv.com')) {
+ return {
+ provider: 'peertube',
+ id: null,
+ meta: {
+ href: href.replace('/w/', '/videos/embed/')
+ }
+ }
+ }
} catch {
// ignore
}
diff --git a/middleware.js b/middleware.js
index 833711d1..0a5eb1a2 100644
--- a/middleware.js
+++ b/middleware.js
@@ -42,7 +42,7 @@ export function middleware (request) {
// unsafe-inline for styles is not ideal but okay if script-src is using nonces
"style-src 'self' a.stacker.news 'unsafe-inline'",
"manifest-src 'self'",
- 'frame-src www.youtube.com platform.twitter.com rumble.com',
+ 'frame-src www.youtube.com platform.twitter.com rumble.com bitcointv.com peertube.tv',
"connect-src 'self' https: wss:" + devSrc,
// disable dangerous plugins like Flash
"object-src 'none'",