Giter Club home page Giter Club logo

piped's People

Contributors

70h avatar aashif-m avatar atilluf avatar bnyro avatar comradekingu avatar dependabot[bot] avatar firemasterk avatar fjuro avatar flipflop97 avatar get100percent avatar github-actions[bot] avatar joaooliva avatar jorgesumle avatar kskarthik avatar linerly avatar matthaiks avatar milotype avatar moisout avatar oersen avatar privacytime101 avatar qaz-6 avatar renovate[bot] avatar rex07 avatar rickym7 avatar rramiachraf avatar secularsteve avatar shjosan avatar thecashewtrader avatar weblate avatar yarons avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

piped's Issues

Deciding on the Database to use

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.

Autoplay Preference for player

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.

QUIC

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)

[Feature Request] Keyboard Shortcuts

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.

Videos unplayable on iOS

Videos are unplayable on iOS. Tested on iPhone X. Also the design is a bit off at the top, both in portrait and landscape layouts.

9DBF0F9C-21F3-4643-9845-F87148A8397A

Login Page

This will be the first step to getting user accounts and feeds.

Captcha solved response can be invalidated early

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

Just an idea

You guys should collaborate with the ViewTube devs to make a bigger team

Piped logo concept

I thought it would be cool for Piped to have a nice logo. Maybe you already have something in mind but I designed this as a concept logo. I can send you the .psd (Photoshop) and .svg if you like it or want to modify it.

Don't worry if you don't like it, I enjoy making these.

Settings Not Being Saved

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.

Light Theme

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).

Search Box

Similar to how it is on YouTube/Invidious

How to self-host

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.

Consider shaka player

https://github.com/google/shaka-player

Why?

  • support ttml captions (videojs has a broken plugin for it)
  • support vp9/webm mse muxing (videojs doesn't)
  • more actively updated
  • Dash streams work
  • Should be easier to fix issues
  • Can be loaded asynchronously w/o errors

Downsides:

  • No in video thumbnail preview: shaka-project/shaka-player#559 - there is an active PR
    (Videojs has a plugin that uses vtt)
  • We need to see if it will work with single page apps (I don't want to recreate the player every time)

Website Resource Utilization of User's Client PC

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)?

Benchmarking

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

Comments

Requires backend changes, should be simple though.

Evaluate closure compiler

There's a webpack plugin, which can be used to improve performance and reduce the size of the further.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.