Git Product home page Git Product logo

youtube-viewer's Introduction

icon YouTube viewer

Mozilla Add-on version Mozilla Add-on downloads Mozilla Add-on users Mozilla Add-on stars Donate

A web extension to keep tracking your favorite youtube channels with less hassle.

screenshot

Motivation

This is a fun made project with one simple goal: Discover & practice React. Any help or feedback is welcome 🙏.

Features

  • Track multi channels all in one place
  • Get notifications about new posted videos (no need to have a google account)
  • Save videos to watch later
  • Auto play videos on click
  • Export/import channels list
  • Light/Dark mode
  • (Soon) Open videos in PiP mode

Installation

Get it for Firefox! Get it for Edge! Get it for Chrome!

Or try it as a web application.

How to install?

Todo

  • Notifications for new posted videos (with auto-check every x minutes)
  • Improve caching (videos cache could be saved in the storage which may reduce API quota consumption)
  • Better state management
  • Option to auto-play videos once opened
  • Option to open videos directly in Picture-in-Picture mode
  • Translations
  • Unit tests

Technical

Stack

Scripts

In the project directory, you can run:

npm start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

npm run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

npm run eject

Note: this is a one-way operation. Once you eject, you can’t go back!

If you aren’t satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

npm run package

Note: the web-ext package is required. You can install it using npm install -g web-ext.

Packages the app in a zip file.

Setup your own Youtube API key

Open the .env file in the root directory of the project & put inside your API key like so:

REACT_APP_YOUTUBE_API_KEY=replace_this_with_your_api_key

Save, then start or build the app.

Credits

Icon made by Vectorgraphit and is licensed under Creative Commons Attribution 3.0 Unported License.

License

This project is licensed under the MPL2 license.

youtube-viewer's People

Contributors

abdellahrsmouki avatar axel-dev avatar dependabot[bot] 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

Watchers

 avatar  avatar  avatar  avatar  avatar

youtube-viewer's Issues

Feature request: Channels tags

Add tags for channels with the capability to filter channels by tags on the home page.

Related to #27.

Mockups

  • Adding a channel tag:

channels_tags

Opens a modal where the user can add/edit/remove tags for the current channel.

  • Filtering by tags on the home page:

home_tags_1

home_tags_2

Option to auto clear cache after x days

There is already an option to auto clear cache (each time the main component constructor get called), but it would be more interesting to do that every x days.

Channels archive

Add channels archive (replace hide option) & display archived channels separately (on a separate tab?).

Request: Sort by newest in home page.

This is a feature request,

please allow videos to be sorted by publish time, rather than by their channels.

sometimes, i don't care which channel it is, i just want the newest videos published.

Feature request: Statistics page

It would be interesting to have a statistics page with the following data measures:

  • number cards:
    • total number of viewed videos (+for the current week, +for the current month?)
    • total number of watch later videos (+for the current week, +for the current month?)

💡 For the current week/month, it could be just an indicator for how much the number was incremented/decremented compared to the previous week/month.

  • pie/bar/line charts:
    • pie chart with viewed/watch later videos per channel
    • bar chart with the number of viewed videos per month for the current year
    • ranking of most viewed channels for the current month?

Improve notifications display

Improve notifications display on the web-extension:

  • use image type on Chrome? (not supported on Firefox)
  • include videos titles maybe?
  • set a max number of notifications to show?

[OP] Feature request: Ability to sync videos playing between multiple clients

As described in the title, this feature is quite OP (Over Power) since it will require some considerable work to be implemented.

Below some ideas on how this can be achieved:

  • With an auth system: Add an authentification system to simplify connection/identification between clients?
  • Without an auth system: This could be simply achieved by providing a link that one of the users can share with the other(s), instead of a whole auth system that may not be so useful.

For the syncing part, youtube player API already provides event listeners for the player actions (like play, pause & resume, etc..), so listening to the player events won't be a challenge, the rest would be to use one of the following protocols/technologies to communicate between the clients in real-time:

  • WebSockets (socket.io)
  • WebRTC
  • Implement a custom protocol 👀? (based on a peer to peer architecture? just to avoid the need of a server)

Feature request: Channels filters

Add filters to channels, mostly being able to filter a channel videos by title or a specific condition.

Note: It would be interesting if that could be managed on the API/requests side, but since Youtube API doesn't allow that (filtering results), i guess it should be managed on the front side in the videos renderer.

Open videos in PiP mode

The Picture-in-Picture mode API is available on chrome but not yet on Firefox, so the only thing to do is to wait for now.

Or maybe implement a custom PiP mode, using custom windows? like in the Enhancer for YouTube extension. But this may require extra-work and it might be dropped out later when the API will be available, so it looks like a waste of time, don't you think so? 🤔

Feature request: Videos Playlist

  • Add a videos playlist (in the sidebar menu) & allow the user to fill/clear the playlist, inspired by w2g.
  • Play videos in the right order inside a modal (can use youtube video player API to handle that).
  • Add a blog post/wiki about the feature.

Mockups

playlist

Channels disappearance

This happens when attempting to double-click or fastly reopen the popup from the browser toolbar icon. The channels list is totally cleared/deleted & the popup looks like its first use.

The bug only occurs on Firefox for now. It might be related to the storage data gathering promise in the main/App component.

Feature request: Snooze mode

Description

Implementing a snooze mode can be interesting in case the user wants to disable the auto-check for recent videos for a period of time.

Implementation details

  • Should be able to activate the snooze mode by right clicking on the extension icon?
  • The webextension icon should be grayed when the snooze mode is activated.
  • Should be able to auto disable the snooze mode later (on next browser launch for example?).
  • The snooze mode would only benefit the web-extension (the web app is not concerned).

Simple suggestion

Okay Firstly I used to use the following addon
https://github.com/XrXr/YoutubeSubscriptionChecker
Brilliant thing select the channel Like yours comes up on the left new channels in the screen great but a ransomware javascript page screwed my machine and the youtubesubscriptionchecker was taken off the addons site so unfortunately, I have tried I managed to get the addon on my firefox but could never get it to work again I think the database was missing so no database the project couldn't add the channels

SORRY OFF-TOPIC

I have seen your addon am using it it appears to be Reasonable youtubesubscriptionchecker had one thing I think or more features than yours, that yours could benefit from

That addon had a number place on the icon when a youtube video was discovered.
I would suggest the same thing.

But with that you have the following on the left all , today's videos, recent videos, watch later. I would suggest adding an icon or something to a newly added video on the right-hand side anything at all to show it's a new unseen video.

what i notice at the moment there is no indication of a new video on the addon icon so I have to check if there is a new video..... Or No timer when hovering over the counter on the icon so i would know when the next checking for a video in addon will occur.
That one is needed just nice to know
If you put an icon with a number of new videos found on it similar to a youtube subscription checker.
Speaking along those lines also with the ability to play a notification sound so you know that a video has arrived as well as a number of the new videos in the addon.... those two things are the main things I have seen that are lacking in the addon apart from that I wish and its because I used youtube subscription checker for so long ..... I wish that when adding videos it was a full-page, not the addon part itself... See I tried adding a channel from the shortcuts area copy the name from the link to paste it
and as you would expect I had to right-click on the bookmark copy the id of the channel name then go over to the addon and then click the search WAIT FOR A BILLION YEARS for the icon to come up or hope the exact name I copied when I click the button was the actual channel. Might be my internet a bit slow..... Anyway if it were a full-screen page you could go between a page and that page or from a bookmark on the page and copy something without leaving the browsers page of the options of the addon and paste the information into a search making it faster than clicking off clicking on the addon

All of that aside you have a good enough addon that I am going to use it thank you for that I appreciate it

Either way, I miss that addon lol... but yours could do with a visual number on the icon so you don't have to check all the time to see if there is a new video that has uploaded a few new video addons had that feature one of the latest for live streaming is Nowstreaming a twitch one shows 0 and if a stream goes live shows 1 or 2, etc.
an audio notification and a notification on the new video in the addon so it shows up clear that it's a NEW video...

But these are only suggestions Go your own way and remember Its a good addon as it is suggestions are only that and Thank you for listening to them

Nicely done.... If I had a bit more coding under my belt I would program my own but I'm too lazy to learn. Thank you for making the addon at least you don't HAVE TO BE LOGGED INTO YOUTUBE with your addon so stupid to have to be logged in to see a new video from a YouTuber

Your environment

Firefox latest version
not sure about anything else
windows 10 16 gigs ram 4.1ghz 8 core
stupid graphics card 730 GeForce SUPPORT ENDING THIS YEAR :-(

  • which browser and its version
    Firefox 89.0.1 well won't be when I restart I'm not sure what it will be then sorry.

Well, I appreciate your time as I said I hope to see a few more improvements whatever they may be.

Refactor channel selection

Switching between channels can be done through routes for each selection/channel instead of filtering videos cache state by the current selected channel.

Settings export/import

It would be nice to have the ability to import & export settings (same as channel list).

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.