teampiped / piped Goto Github PK
View Code? Open in Web Editor NEWAn alternative privacy-friendly YouTube frontend which is efficient by design.
Home Page: https://piped.video
License: GNU Affero General Public License v3.0
An alternative privacy-friendly YouTube frontend which is efficient by design.
Home Page: https://piped.video
License: GNU Affero General Public License v3.0
Example URL: https://piped.kavin.rocks/watch?v=tlCC1XojRzM
Is it possible to use Piped to replace embedded videos?
Blocked by TeamNewPipe/NewPipeExtractor#461
I'm thinking about MongoDB, but it's not free software according to the FSF. In the worst-case scenario, I would use it.
I'm thinking about using Hibernate which is an ORM, with either Postgres or CockroachDB.
Another idea is to use https://www.scylladb.com/ but it consumes a lot of ram. (2GB for a small environment). It's the fastest NoSQL database if I'm not wrong.
This may very well be an a bug within Firefox, not with Piped.
When changing resolution, videos automatically start playing on Piped, but only with Firefox, Edge had no such issue.
Sometimes (rarely) opening a new page on Piped has the video autoplaying, again only on Firefox.
Both Firefox and Edge (possible via flag) have autoplay for both audio and video blocked.
org.schabi.newpipe.extractor.exceptions.ReCaptchaException: reCaptcha Challenge requested
at me.kavin.piped.utils.DownloaderImpl.execute(DownloaderImpl.java:48)
at org.schabi.newpipe.extractor.downloader.Downloader.get(Downloader.java:70)
at org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonResponse(YoutubeParsingHelper.java:524)
at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.onFetchPage(YoutubeSearchExtractor.java:67)
at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:56)
at org.schabi.newpipe.extractor.search.SearchInfo.getInfo(SearchInfo.java:29)
at me.kavin.piped.utils.ResponseHelper.searchResponse(ResponseHelper.java:215)
at me.kavin.piped.Main.lambda$main$8(Main.java:132)
at me.kavin.piped.Main$$Lambda$112/000000000000000000.apply(Unknown Source)
at reactor.netty.http.server.DefaultHttpServerRoutes$HttpRouteHandler.apply(DefaultHttpServerRoutes.java:132)
at reactor.netty.http.server.DefaultHttpServerRoutes.apply(DefaultHttpServerRoutes.java:98)
at reactor.netty.http.server.DefaultHttpServerRoutes.apply(DefaultHttpServerRoutes.java:38)
at reactor.netty.http.server.HttpServer$HttpServerHandle.onStateChange(HttpServer.java:607)
at reactor.netty.transport.ServerTransport$ChildObserver.onStateChange(ServerTransport.java:453)
at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:510)
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:185)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:836)
I was quite surprised that Piped doesn't yet feature any keyboard shortcuts, so here is the request.
Basic ones are pretty obvious:
Horizontal arrow keys: Moving through the video
Vertical arrow keys: Changing volume
Space/Super (however you'd like to call it): Play/Pause
F: Fullscreen
M: Mute
Others should also chime in with suggestions.
It's the fastest according to https://github.com/the-benchmarker/web-frameworks
And I really like the syntax/style of coding.
Title
It needs to be multi region.
The best solution I've found so far is cloudflare's expensive one and https://www.mysocket.io/ which uses aws's global accelerator, any other solutions would be helpful too ๐
I can't seem to make them look neat.
Requires backend changes.
This will be the first step to getting user accounts and feeds.
Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Got HTML document, expected JSON response (latest url was: "https://www.youtube.com/watch?v=HJiog3Fbur0&pbj=1")
at org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getValidJsonResponseBody(YoutubeParsingHelper.java:643)
at org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonResponse(YoutubeParsingHelper.java:667)
at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:711)
at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:54)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:68)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:64)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:60)
at me.kavin.piped.utils.ResponseHelper.lambda$streamsResponse$1(ResponseHelper.java:63)
at me.kavin.piped.utils.ResponseHelper$$Lambda$530/0x0000000000000000.get(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
... 1 more
Perhaps have a minimum delay of 5/10 minutes?
Additional task: remove timeout at
https://github.com/TeamPiped/Piped-Backend/blob/a2cd2baf2aa361bece822d0b6954774cf3c72ac5/src/main/java/me/kavin/piped/utils/ResponseHelper.java#L81
I need to find some libraries for this.
Video: https://www.youtube.com/watch?v=jX95U1fBM9A
Linus Tech Tips: Touch Me...
On Piped, it only goes up to 1080p (960p), while on NewPipe I can playback or download at up to 2160p (1920p).
Allows us to see where the sponsor segments are.
Title
Not sure why this could be.
Depends on TeamNewPipe/NewPipeExtractor#595
ShakaPlayer supports this already, so that is nice - shaka-project/shaka-player#3145
The video takes more than a screen with the navbar, you should reduce the space (with width css attribute probably)
You guys should collaborate with the ViewTube devs to make a bigger team
In this section, you should be able to:
According to #139 it was already implemented so it's a regression
Currently, they're not centered and I have no idea how to make them.
I usually prefer setting the sponsor segments of the videos I watch, since I do like them (I watch mainly LinusTechTips (and their other channels), Gamers Nexus, and Level1Techs), and occasionally make use of them, so I tried disabling SponsorBlock and the other settings, however my changes do not get saved, and upon leaving the page, they get reverted.
I understand the importance of having a dark theme, and they many people prefer it, however not everyone does, and many (including me) prefer having a light theme (as long as it isn't too blinding).
As soon as you change tab or app the audio stops
Browser: bromite, can't reproduce on firefox
OS: android 9
IPFS pubsub to federate subscriptions across instances.
Similar to how it is on YouTube/Invidious
A new body field was added in NPE.
This will include an instance switcher.
Hello, how can I self-host piped? Is it still too soon to have a docker-compose? I've noticed there's also a dockerized backend version.
Do we want to use router links for YouTube URLs?
Requires backend change.
This needs to be fixed asap.
https://github.com/google/shaka-player
Why?
Downsides:
This needs some work, I think I have an idea on how to do this.
One of the main reasons why I had moved to Invidious (other than the privacy concerns), was Polymer YouTube's atrocious system resource utilization, which is why I tried to hold on as long as possible onto the old polymer-free YouTube.
Back then, I had an i3-540 (nowadays I use an i5-4570 with a Radeon HD6950), and I was able to play 1080p60fps with barely any stutters, however with the polymer theme, anything above 720p30Hz was unpractical.
Additionally, we have a BayTrail Celeron Chromebook (dechromified), that used to be able to play 720p30fps without any stuttering on the old pre-polymer YouTube, however with the polymer YouTube, anything above 240p is unplayable due to the stuttering.
With Invidious, Even 720p60fps/1080p30fps is playable with minimal stuttering, however with Piped, I cannot go above 480p due to the stuttering.
Could something be done about this? Possible a "lite" version of the website (possibly with the Invidious GUI above the Piped backend)?
Required backend changes.
Use the dweb.link gateway for this.
This is just for pull requests.
I have the issues, that some videos do not play. They just show the rotating circle in the player.
Example for video not working: https://piped.kavin.rocks/watch?v=WMweEpGlu_U
Example for video working: https://piped.kavin.rocks/watch?v=u6zsHqdNRQ8
Not sure why, but when I mute a video, I can still hear some sounds intermittently. This happens when I'm watching the video without pausing, but it can also happen shortly after resuming.
Example URL: https://piped.kavin.rocks/watch?v=VkhsFGswWNA
Just needs the manifest rewriting.
Streams:
hey -c 50 -n 500 http://127.0.0.1:8080/streams/6zBfVElmWfw
Summary:
Total: 10.8712 secs
Slowest: 2.7826 secs
Fastest: 0.2908 secs
Average: 1.0226 secs
Requests/sec: 45.9929
Total data: 14749105 bytes
Size/request: 29498 bytes
Response time histogram:
0.291 [1] |
0.540 [15] |โ โ โ
0.789 [111] |โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
1.038 [179] |โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
1.287 [101] |โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
1.537 [44] |โ โ โ โ โ โ โ โ โ โ
1.786 [38] |โ โ โ โ โ โ โ โ
2.035 [9] |โ โ
2.284 [0] |
2.533 [1] |
2.783 [1] |
Latency distribution:
10% in 0.6454 secs
25% in 0.7870 secs
50% in 0.9775 secs
75% in 1.2136 secs
90% in 1.5255 secs
95% in 1.6920 secs
99% in 1.8485 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0003 secs, 0.2908 secs, 2.7826 secs
DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0000 secs
req write: 0.0002 secs, 0.0000 secs, 0.0061 secs
resp wait: 1.0219 secs, 0.2906 secs, 2.7824 secs
resp read: 0.0001 secs, 0.0000 secs, 0.0050 secs
Status code distribution:
[200] 500 responses
Requires backend changes, should be simple though.
There's a webpack plugin, which can be used to improve performance and reduce the size of the further.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.