Giter Club home page Giter Club logo

invidious's Introduction

Invidious logo

Invidious

License: AGPLv3 Build Status GitHub commits GitHub issues GitHub pull requests Translation Status Awesome Humane Tech

An open source alternative front-end to YouTube

Website  •  Instances list  •  FAQ  •  Documentation  •  Contribute  •  Donate

Chat with us:
Matrix Libera.chat (IRC)
Fediverse: @invidious@social.tchncs.de
E-mail

Screenshots

Player Preferences Subscriptions

Features

User features

  • Lightweight
  • No ads
  • No tracking
  • No JavaScript required
  • Light/Dark themes
  • Customizable homepage
  • Subscriptions independent from Google
  • Notifications for all subscribed channels
  • Audio-only mode (with background play on mobile)
  • Support for Reddit comments
  • Available in many languages, thanks to our translators

Data import/export

  • Import subscriptions from YouTube, NewPipe and Freetube
  • Import watch history from YouTube and NewPipe
  • Export subscriptions to NewPipe and Freetube
  • Import/Export Invidious user data

Technical features

  • Embedded video support
  • Developer API
  • Does not use official YouTube APIs
  • No Contributor License Agreement (CLA)

Quick start

Using invidious:

Hosting invidious:

Documentation

The full documentation can be accessed online at https://docs.invidious.io/

The documentation's source code is available in this repository: https://github.com/iv-org/documentation

Extensions

We highly recommend the use of Privacy Redirect, a browser extension that automatically redirects Youtube URLs to any Invidious instance and replaces embedded youtube videos on other websites with invidious.

The documentation contains a list of browser extensions that we recommended to use along with Invidious.

You can read more here: https://docs.invidious.io/applications/

Contribute

Code

  1. Fork it ( https://github.com/iv-org/invidious/fork ).
  2. Create your feature branch (git checkout -b my-new-feature).
  3. Stage your files (git add .).
  4. Commit your changes (git commit -am 'Add some feature').
  5. Push to the branch (git push origin my-new-feature).
  6. Create a new pull request ( https://github.com/iv-org/invidious/compare ).

Translations

We use Weblate to manage Invidious translations.

You can suggest new translations and/or correction here: https://hosted.weblate.org/engage/invidious/.

Creating an account is not required, but recommended, especially if you want to contribute regularly. Weblate also allows you to log-in with major SSO providers like Github, Gitlab, BitBucket, Google, ...

Projects using Invidious

A list of projects and extensions for or utilizing Invidious can be found in the documentation: https://docs.invidious.io/applications/

Liability

We take no responsibility for the use of our tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate use of Invidious, such as illegal downloading. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

  1. Limitation of Liability.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

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 rex07 avatar s8321414 avatar saltycrys avatar samantazfox avatar supersandro2000 avatar svallinn 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

Embedding support

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

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.

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

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

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

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.

[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/

503 error

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

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)

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.

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.

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

Dark theme

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

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.

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

Comment Support

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

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

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.

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.

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?

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.

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.

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.

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. :-(

Cookie settings

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

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.

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

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

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.

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.