GithubHelp home page GithubHelp logo

iv-org / invidious Goto Github PK

View Code? Open in Web Editor NEW
15.0K 172.0 1.7K 23.57 MB

Invidious is an alternative front-end to YouTube

Home Page: https://invidious.io

License: GNU Affero General Public License v3.0

CSS 2.46% Shell 1.10% Crystal 74.82% HTML 13.34% Dockerfile 0.16% Mustache 0.05% JavaScript 7.83% Makefile 0.23%
invidious watch agplv3 youtube video youtube-video libre hacktoberfest

invidious's People

Contributors

138138138 avatar ahohnmyc avatar azhao12345 avatar bbielsa avatar chunkyprogrammer avatar comradekingu avatar diogorac avatar duolabs333 avatar ibicha avatar jonas-w avatar jorgesumle avatar leonklingele avatar mathiusd avatar matthewmcgarvey avatar milotype avatar omarroth avatar perflyst avatar radoslavl avatar rex07 avatar s8321414 avatar saltycrys avatar samantazfox avatar supersandro2000 avatar syeopite avatar thefrenchghosty avatar thtmnisamnstr avatar tolstovka avatar unixfox avatar weblate avatar wesvleuten 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  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

invidious's Issues

Issue with subscribing to a channel

When I subscribe to a channel when using Pale Moon to do so, I get an error stating that the redirect is not able to be completed (or something similar).

Show only unseen videos

Currently, you can define a max number of videos shown in feed. I would like to have an option to only see videos, which I haven't seen yet. If there aren't any, all recent videos should be shown in the feed.

P.S. "Only show latest video from channel" option is not exactly what I need. :-(

Nested playlists

As another follow-up to #16, a user should be able to create more intricate orderings then just flat lists. Linking off to other playlists, looping, nesting several playlists, etc. This would have to be added separately in addition to YouTube's playlists. It would likely be best for this functionality to implement playlists as a graph rather than a flat list.

Add thin mode

Currently, the largest amount of content on the homepage (by byte size) is images, taking up more than 95% of the bandwidth used on the homepage. The site remains more than functional without them, so it should be possible for users to do so by adding an option in /preferences.

Cookie settings

Ability to to save preferred video quality, volume level and always loop via cookies would be nice to have.

Add no unseen notifications note

When the number of videos shown in feed is more than the number of unseen notifications, then this number should not be taken into account to avoid potencial confusion (can be implemented as an option). Or you can just separate new notifications from other videos in feed (probably this is much better option to enable by default).

UPD. I didn't realize that only unseen notifications are shown if there are any. :-)

If there're no unseen notifications, a note about that can be helpful.

Livestream support

It would be nice if it supported the playback of Livestreams. Right now I get a "No compatible source was found for this media" error message when trying to view one.

Grouping subscribtions by date

As you probably know, YouTube sorts your subscribtions by date:

  • Recent ( < 2 days ago)
  • This week
  • This month ( > 1 week ago)

I think it would be nice to implement this feature.

P.S. Each category is separated from each other.

Subtitle Support

Can you please add a possibility to watch videos with subtitles?

Direct link to video files

It should be possible to link directly to videos which would allow users to open them from their favorite video player. Multiple formats preferred (like low res or audio only), but not required.

Embedding support

It would be nice if it could support being embedded in web pages via /embed/videoID.

[Bug] Random embed uses native player with terrible CSS

Only such case I've come across so far. As the title says, random native player with terrible CSS. I'm not using the "raw" param because I don't hate the js player you're using, but for whatever reason this particular embed URL opens in the native player regardless.

The CSS being applied is:

video, #my_video, .video-js, .vjs-default-skin {
    position: fixed;
    right: 0;
    bottom: 0;
    min-width: 100%;
    min-height: 100%;
    width: auto;
    height: auto;
    z-index: -100;
}

It all seems silly, and the vid/player is at least twice the size of the iframe, so obviously off center and cut off.

https://invidio.us/embed/Imxuq01YKpE?version=3&rel=0&autoplay=1

Same link you can inspect opened inline by clicking play icon expando button in the OP:

https://old.reddit.com/r/kpop/comments/93pp92/loona_favorite_mv_teaser/

[feature] Show only new videos

When you click on notification icon with 3 new videos (for example), you should see only those 3 videos even if the number of unseen videos is much more. When there are no new videos, then only unseen videos are shown (depending on the user settings).

Related to recently fixed #40 (thanks!).

Make likes of a comment more easier to understand

It took me a bit to understand that the number shown next to the user's name is the number of likes. I think adding a symbol (such as a thumbs up) would help tell the viewer that its the amount of likes the comment has received.

[feature] Copy video link

Can you please add a possibility to copy a link of the currently playing video using invidious's video player?

It's useful for embeded videos. Probably, you can add "Share this video" button or something to copy a link to youtube.com and/or invidio.us.

Add big picture mode

It'd be very useful to have an enlarged resolution, similar to how Hooktube does it, which can be toggled on and off in every video page.

Autoplay videos when they are loaded

It would be nice if it could do that for ones that aren't embedded (or just have them all play when loaded and offer the ability to stop the auto-play by adding &autoplay=0 or ?autoplay=0 to the end of the URL).

Add RSS feed for subscriptions

Similar to how Github's user feeds work: create a private token, and then serve a user's subscriptions in Atom format. Should support max_results and page, similar to the regular subscription feed.

Dark theme

It would be nice for the site to have a dark theme option

Annotations support

It would be nice if the player it uses supported Annotations (such as the ones that appear in the corner and the clickable boxes).

Login to google account without two-factor authentication

Pretty much every other website/program uses a pop-up to log in to Google account, why is Invidious doesn't do that? I absolutely hate two-factor authentication because I just don't really use my phone, and google blocks log-ins from suspicious locations anyways.

(The site other than this is great though, but until this gets fixed I won't really be able to use it properly)

Allow user to subscribe to playlist

As a follow-up to #16, a user should be able to subscribe to playlist changes. Playlist subscriptions should share the same feed as channel subscriptions.

Wondering about any implications of this.

A suggestion for its design

The white space on both sides should be used by the site. A suggestion on how to use the space is to move the related videos displayed below the video to the right-hand side (and add a Related Videos header).

Separate account system

Right now, a user needs to have a Google account in order to access significant functionality of the site: dark mode, subscriptions/notifications, and player preferences (see #9).

A user should be able to create a new account so that they can access this functionality.

1080p and other video support

Users should be able to freely choose between all available video resolutions, and not just those that have bundled audio.

Example video: https://invidio.us/watch?v=x47Ins_rkgk

VideoJS provides ways to add extra tracks, and all formats are served via adaptive_fmts in /get_video_info.

Maybe utilize &bitrate= and &resolution= options (for audio and video, respectively) if &quality= is not present?

Arch Linux error on starting dev server

Followed every step of the README.

Output:

🤖  Your SentryBot is vigilant. beep-boop...
🤖  watching file: ./src/invidious/helpers.cr
🤖  watching file: ./src/invidious.cr
🤖  watching file: ./src/invidious/views/search.ecr
🤖  watching file: ./src/invidious/views/subscription_manager.ecr
🤖  watching file: ./src/invidious/views/subscriptions.ecr
🤖  watching file: ./src/invidious/views/index.ecr
🤖  watching file: ./src/invidious/views/watch.ecr
🤖  watching file: ./src/invidious/views/login.ecr
🤖  watching file: ./src/invidious/views/channel.ecr
🤖  watching file: ./src/invidious/views/layout.ecr
🤖  watching file: ./src/invidious/views/error.ecr
🤖  watching file: ./src/invidious/views/components/subscription_video.ecr
🤖  watching file: ./src/invidious/views/components/video.ecr
🤖  watching file: ./src/invidious/views/preferences.ecr
🤖  watching file: ./src/invidious/views/embed.ecr
🤖  compiling invidious...
🤖  starting invidious...
[development] Kemal is ready to lead at http://0.0.0.0:3000
Unhandled exception in spawn:
Unsupported HTTP version: ��XL3��������&��]|>����� (Exception)
  from /usr/lib/crystal/http/client/response.cr:126:5 in 'from_io?'
  from /usr/lib/crystal/http/client.cr:499:5 in 'exec_internal_single'
  from /usr/lib/crystal/http/client.cr:485:5 in 'exec_internal'
  from /usr/lib/crystal/http/client.cr:481:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:591:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:329:3 in 'get'
  from src/invidious/helpers.cr:238:12 in '->'
  from /usr/lib/crystal/fiber.cr:255:3 in 'run'
  from /usr/lib/crystal/fiber.cr:29:34 in '->'
  from ???
Unhandled exception in spawn:
SSL_read: error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac (OpenSSL::SSL::Error)
  from /usr/lib/crystal/openssl/ssl/socket.cr:102:9 in 'unbuffered_read'
  from /usr/lib/crystal/io/buffered.cr:215:5 in 'fill_buffer'
  from /usr/lib/crystal/io/buffered.cr:89:7 in 'peek'
  from /usr/lib/crystal/http/content.cr:106:14 in 'peek'
  from /usr/lib/crystal/flate/reader.cr:66:17 in 'read'
  from /usr/lib/crystal/gzip/reader.cr:85:7 in 'read'
  from /usr/lib/crystal/io/encoding.cr:76:45 in 'read'
  from /usr/lib/crystal/io.cr:561:11 in 'gets_to_end'
  from /usr/lib/crystal/http/client/response.cr:73:15 in 'consume_body_io'
  from /usr/lib/crystal/http/client/response.cr:97:9 in 'from_io?'
  from /usr/lib/crystal/http/client.cr:499:5 in 'exec_internal_single'
  from /usr/lib/crystal/http/client.cr:485:5 in 'exec_internal'
  from /usr/lib/crystal/http/client.cr:481:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:591:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:329:3 in 'get'
  from src/invidious/helpers.cr:231:12 in '->'
  from /usr/lib/crystal/fiber.cr:255:3 in 'run'
  from /usr/lib/crystal/fiber.cr:29:34 in '->'
  from ???
Unhandled exception in spawn:
SSL_read: error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac (OpenSSL::SSL::Error)
  from /usr/lib/crystal/openssl/ssl/socket.cr:102:9 in 'unbuffered_read'
  from /usr/lib/crystal/io/buffered.cr:215:5 in 'fill_buffer'
  from /usr/lib/crystal/io/buffered.cr:89:7 in 'peek'
  from /usr/lib/crystal/io.cr:645:37 in 'gets'
  from /usr/lib/crystal/io.cr:604:5 in 'gets'
  from /usr/lib/crystal/http/client/response.cr:119:12 in 'from_io?'
  from /usr/lib/crystal/http/client.cr:499:5 in 'exec_internal_single'
  from /usr/lib/crystal/http/client.cr:485:5 in 'exec_internal'
  from /usr/lib/crystal/http/client.cr:481:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:591:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:329:3 in 'get'
  from src/invidious/helpers.cr:238:12 in '->'
  from /usr/lib/crystal/fiber.cr:255:3 in 'run'
  from /usr/lib/crystal/fiber.cr:29:34 in '->'
  from ???
Unhandled exception in spawn:
Invalid HTTP chunked content: invalid chunk size (IO::Error)
  from /usr/lib/crystal/http/content.cr:162:31 in 'read_chunk_size'
  from /usr/lib/crystal/http/content.cr:136:7 in 'next_chunk'
  from /usr/lib/crystal/http/content.cr:104:7 in 'peek'
  from /usr/lib/crystal/flate/reader.cr:66:17 in 'read'
  from /usr/lib/crystal/gzip/reader.cr:85:7 in 'read'
  from /usr/lib/crystal/io/encoding.cr:76:45 in 'read'
  from /usr/lib/crystal/io.cr:561:11 in 'gets_to_end'
  from /usr/lib/crystal/http/client/response.cr:73:15 in 'consume_body_io'
  from /usr/lib/crystal/http/client/response.cr:97:9 in 'from_io?'
  from /usr/lib/crystal/http/client.cr:499:5 in 'exec_internal_single'
  from /usr/lib/crystal/http/client.cr:485:5 in 'exec_internal'
  from /usr/lib/crystal/http/client.cr:481:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:591:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:329:3 in 'get'
  from src/invidious/helpers.cr:231:12 in '->'
  from /usr/lib/crystal/fiber.cr:255:3 in 'run'
  from /usr/lib/crystal/fiber.cr:29:34 in '->'
  from ???
Unhandled exception in spawn:
Invalid HTTP response (Exception)
  from /usr/lib/crystal/http/client/response.cr:0:5 in 'from_io?'
  from /usr/lib/crystal/http/client.cr:499:5 in 'exec_internal_single'
  from /usr/lib/crystal/http/client.cr:485:5 in 'exec_internal'
  from /usr/lib/crystal/http/client.cr:481:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:591:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:329:3 in 'get'
  from src/invidious/helpers.cr:238:12 in '->'
  from /usr/lib/crystal/fiber.cr:255:3 in 'run'
  from /usr/lib/crystal/fiber.cr:29:34 in '->'
  from ???
Unhandled exception in spawn:
Invalid HTTP response (Exception)
  from /usr/lib/crystal/http/client/response.cr:0:5 in 'from_io?'
  from /usr/lib/crystal/http/client.cr:499:5 in 'exec_internal_single'
  from /usr/lib/crystal/http/client.cr:485:5 in 'exec_internal'
  from /usr/lib/crystal/http/client.cr:481:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:591:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:329:3 in 'get'
  from src/invidious/helpers.cr:238:12 in '->'
  from /usr/lib/crystal/fiber.cr:255:3 in 'run'
  from /usr/lib/crystal/fiber.cr:29:34 in '->'
  from ???
Unhandled exception in spawn:
SSL_read: error:1408F10B:SSL routines:ssl3_get_record:wrong version number (OpenSSL::SSL::Error)
  from /usr/lib/crystal/openssl/ssl/socket.cr:102:9 in 'unbuffered_read'
  from /usr/lib/crystal/io/buffered.cr:215:5 in 'fill_buffer'
  from /usr/lib/crystal/io/buffered.cr:89:7 in 'peek'
  from /usr/lib/crystal/io.cr:645:37 in 'gets'
  from /usr/lib/crystal/io.cr:604:5 in 'gets'
  from /usr/lib/crystal/io.cr:827:5 in 'read_line:chomp'
  from /usr/lib/crystal/http/content.cr:154:7 in 'read_chunk_size'
  from /usr/lib/crystal/http/content.cr:136:7 in 'next_chunk'
  from /usr/lib/crystal/http/content.cr:104:7 in 'peek'
  from /usr/lib/crystal/flate/reader.cr:66:17 in 'read'
  from /usr/lib/crystal/gzip/reader.cr:85:7 in 'read'
  from /usr/lib/crystal/io/encoding.cr:76:45 in 'read'
  from /usr/lib/crystal/io.cr:561:11 in 'gets_to_end'
  from /usr/lib/crystal/http/client/response.cr:73:15 in 'consume_body_io'
  from /usr/lib/crystal/http/client/response.cr:97:9 in 'from_io?'
  from /usr/lib/crystal/http/client.cr:499:5 in 'exec_internal_single'
  from /usr/lib/crystal/http/client.cr:485:5 in 'exec_internal'
  from /usr/lib/crystal/http/client.cr:481:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:591:5 in 'exec'
  from /usr/lib/crystal/http/client.cr:329:3 in 'get'
  from src/invidious/helpers.cr:231:12 in '->'
  from /usr/lib/crystal/fiber.cr:255:3 in 'run'
  from /usr/lib/crystal/fiber.cr:29:34 in '->'
  from ???
Invalid memory access (signal 11) at address 0x0
[0x5639cceeeaa6] *CallStack::print_backtrace:Int32 +118
[0x5639cce4a89b] __crystal_sigfault_handler +75
[0x7f0c40e1aa80] ???
[0x7f0c4025532f] ???
[0x7f0c4025667a] __libc_malloc +522
[0x7f0c41d32743] ???
[0x7f0c41d30bdf] ???
[0x7f0c41d394d2] ???
[0x7f0c41d3423e] ???
[0x7f0c41d319d4] ???
[0x7f0c41d37adb] ???
[0x7f0c41d41c65] SSL_read +53
[0x5639ccf9adf2] *OpenSSL::SSL::Socket+ +130
[0x5639ccf9accc] *OpenSSL::SSL::Socket+ +76
[0x5639ccf9ac11] *OpenSSL::SSL::Socket+ +49
[0x5639ccf922b8] *IO+ +1096
[0x5639ccf9490e] *IO+ +238
[0x5639ccf947eb] *IO+ +75
[0x5639ccfa1d41] *HTTP::ChunkedContent#read_chunk_size:Int32 +33
[0x5639ccfa0e17] *HTTP::ChunkedContent#next_chunk:(Bool | Nil) +135
[0x5639ccfa056c] *HTTP::ChunkedContent#peek:(Slice(UInt8) | Nil) +28
[0x5639ccfb162f] *Flate::Reader#read<Slice(UInt8)>:Int32 +543
[0x5639ccfb0043] *Gzip::Reader#read<Slice(UInt8)>:Int32 +227
[0x5639ccf4c2db] *IO::Decoder#read<IO+>:Nil +891
[0x5639ccf94f5d] *IO+ +125
[0x5639cd077fad] *HTTP::Client::Response#consume_body_io:Nil +125
[0x5639cd077efe] *HTTP::Client::Response::from_io?<(OpenSSL::SSL::Socket+ | TCPSocket+), Bool, Bool>:(HTTP::Client::Response | Nil) +2270
[0x5639cd074520] *HTTP::Client#exec_internal_single<HTTP::Request>:(HTTP::Client::Response | Nil) +80
[0x5639cd0742d0] *HTTP::Client#exec_internal<HTTP::Request>:HTTP::Client::Response +32
[0x5639cd0742a6] *HTTP::Client#exec<HTTP::Request>:HTTP::Client::Response +6
[0x5639cd074006] *HTTP::Client#exec<String, String, Nil, Nil>:HTTP::Client::Response +22
[0x5639cd073fe7] *HTTP::Client#get<String>:HTTP::Client::Response +39
[0x5639cce801a1] ~procProc(Nil) +161
[0x5639ccf1f5fe] *Fiber#run:(IO::FileDescriptor | Nil) +174
[0x5639cce49f66] ~proc2Proc(Fiber, (IO::FileDescriptor | Nil)) +6
[0x0] ???

503 error

I just noticed that all pages on invidio.us are showing that error.

Search Subscriptions Only

One of the features desperately needed on youtube is the ability to search videos of all of your own subscriptions.

E.g., I'm subscribed to Channel A and Channel B. If I search my subs for "asdf", I should get all of the videos from Channel A and Channel B that match that search.

Use case: I often will find a game that intrigues me, and want to search for LPs of that game. Before I find a new channel to watch it on, I want to know if any of my existing subs has published content from that game before.

Comment Support

It would be nice if it could display the comments of a video below its description.

Videos missing from subscription feed

Recent videos seem to be missing from the subscriptions feed in Invidious, while they are present on Youtube's subscription feed.

Youtube:
Youtube

Invidious: (First 4 youtube videos missing)
Invidious

Add option for user to import/export their data.

For folks who want to run their own instance, they should be able to export subscriptions, preferences, etc and upload to their own instance. Should also be able to migrate subscriptions/preferences e.g. from Google to Invidious account, and vice versa.

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.