Go to file
constraintAutomaton 6caa5da46c
Search option in watch history and favorite playlist (#1942)
* transition duration of 0.5s added to watched videos

* small code reformating

* extra white spaces deleted

* typo in the word transition corrected

* original whitespaces respected

* transition added when hovering end

* video stat components started and properties chosen

* ft-video-stats integraded into the video player for dev and debugging

* using a timer to get video stats and a method to update the statistic every second

* getting statistic from vhs and adaptativeFormat

* frame drop capture

* stats capture in the form of event

* useless comment deleted

* stats render with a for loop in the template

* stats correctly displayed

* overlay stats added

* video stats component deleted

* video stats component deleted inside template video player

* video stats component fully deleted

* modal solution working need more styling and code messy

* lint

* modal working with stats

* keyboard shortcut for stats

* lint fix

* network state is now a string

* new line deleted

* useless whitespace deleted

* package-lock.json remove and ignore

* keyboard shortcut restricted to up arrow

* stats overlay made larger

* align to left corner

* useless formatting of string deleted

* renaming of variable formatedStrats for formattedStats

* keyboard shortcut made into a variable

* lint-fix

* key change for i

* label translated

* whitespace added for gitignore

* lock file not ignored

* videoId stat deleted

* ft-video-player.js, en-US.yaml, fr-FR.yaml: changing percentage stats display

changing the display for percentage stats for the format 'x%' instead of 'xx.xx'

* ft-video-player.js, en-US.yaml, fr-FR.yaml: network state video statistic deleted

* ft-video-player.js: made stats modal background color darker

* ft-video-player.js, en-US.yaml, fr-FR.yaml: video id are now related to the one of youtube

* ft-video-player.js, en-US.yaml, fr-FR.yaml: stats displayed made closet to the youtube implementation

the name are capitalized, the order of display is changed and fps is combined with viewport

* lint-fix

* en-US.yaml, fr-FR.yaml: network state possibilities deleted because not used

* package.json.lock: deleted

* ft-video-player.js: formated_stats renamed for formatted_stats

* lock file deleted

* index.js, ft-video-player.js: handling of right click context menu

via electon ipc bus an event is send to tell the vue component to show the stats modal

* ft-video-player.js, index.js: renaming of video stats display event and definition of it as a variable

* index.js, en-US.yaml: inconsistant capitalization of video statistics label solved

* index.js: pluralized video stats

* ft-video-player.js: fix right click undefined this.player

change the arrow function inside the closure for a function with a bind to this

* ft-video-player.js: handling of the case when this.player is not defined

the property this.stats.display.activated as been added and manage when the to show the stats. In this way in the runtime (it is still refered in the run time but it is capture in an event loop) with dont have to refer to this.player so when it is not defined it doesnt affect the behavior.

* lint fix

* src/renderer/components/ft-video-player/ft-video-player.js: modal.close move into the display event of the statistic context

* lint fix

* src/renderer/components/ft-video-player/ft-video-player.js, static/locales/en-US.yaml, static/locales/fr-FR.yaml: better capitalization of the stats labels

* static/locales/en-US.yaml: fps capitalized

* static/locales/fr-FR.yaml, static/locales/en-US.yaml: capitalized label

* src/renderer/views/History/History.js, src/renderer/store/datastores.js, src/renderer/store/modules/history.js: search history function added and indexing of history database

* npm fix

* src/renderer/views/History/History.js, src/renderer/store/modules/history.js: regex used to handle text search since their is no text indexing

* src/renderer/views/History/History.js, src/renderer/views/History/History.vue: search bar added but not adapted for history search use case

* src/renderer/views/History/History.js, src/renderer/views/History/History.vue: search bar added but not adapted for history search use case

* src/renderer/views/History/History.js, src/renderer/store/modules/history.js, src/renderer/views/History/History.vue: search history working but order do not remain the same depending on search

* src/renderer/views/History/History.js, src/renderer/store/modules/history.js, src/renderer/views/History/History.vue: search history working but order do not remain the same depending on search

* src/renderer/views/History/History.js: loading added when query is empty to order the history

* src/renderer/views/History/History.vue, src/renderer/views/History/History.js, static/locales/en-US.yaml, static/locales/fr-FR.yaml: translation added

* src/renderer/components/ft-list-video/ft-list-video.js, src/renderer/views/History/History.vue, src/renderer/views/History/History.js: fix the bad history reconstruction problem by adding an update hook to ft-list-video component

* lint fix

* src/datastores/handlers/base.js, src/datastores/handlers/electron.js, src/datastores/handlers/web.js, src/datastores/index.js, src/renderer/store/modules/history.js, src/renderer/views/History/History.js, src/constants.js: history adapted to the new db

* src/renderer/store/modules/history.js: print statement deleted

* src/renderer/views/History/History.js, static/locales/en-US.yaml, static/locales/fr-FR.yaml: search history place holder renamed

* search playlists backend

* search bar added into the frontend, search method of playlist deleted because the document are the playlist and not the videos

* src/renderer/store/modules/playlists.js: commment typo resolved

* placeholder name of search bar only defined into the .vue file instead of in the .js file

* src/renderer/components/ft-list-video/ft-list-video.js: fix the mecanism to modify a video card to reflect the current data

* src/renderer/views/History/History.js: doesn't load when query is empty

* src/renderer/components/ft-list-video/ft-list-video.js: fix problem date disapearing

* video id query deleted from search in history and playlist
2022-01-18 00:03:54 -05:00
.github fix auto add labels (#1989) 2022-01-08 09:23:22 -05:00
.vscode Revert unintended merged code from "Update package-lock.json" 2021-05-10 05:59:48 +01:00
_icons Added Dracula Theme (#1727) 2021-09-22 18:26:14 -04:00
_scripts Fix watching video in development (#1668) 2021-09-23 07:04:00 +00:00
src Search option in watch history and favorite playlist (#1942) 2022-01-18 00:03:54 -05:00
static Search option in watch history and favorite playlist (#1942) 2022-01-18 00:03:54 -05:00
.babelrc Push Latest Code to Repository 2020-02-16 13:30:00 -05:00
.editorconfig Use the Unix file ending 2020-06-03 21:19:27 -04:00
.eslintignore Push Latest Code to Repository 2020-02-16 13:30:00 -05:00
.eslintrc.js Update .eslintrc.js 2021-03-02 22:55:10 -05:00
.gitignore Fix issue with videos not loading when running in dev mode 2021-07-17 20:24:26 -04:00
.prettierrc Check for and remove all trailing commas 2020-08-04 22:18:39 -04:00
.whitesource Push Latest Code to Repository 2020-02-16 13:30:00 -05:00
CONTRIBUTING.md Update CONTRIBUTING.md (#1622) 2021-08-28 21:36:08 +00:00
LICENSE Replace License with AGPLv3 version 2020-04-13 20:50:02 -04:00
README.md Update README.md (#1657) 2021-09-14 10:03:24 +08:00
package.json Bump node-forge from 0.10.0 to 1.0.0 (#1987) 2022-01-08 11:36:52 -05:00
tsconfig.json Push Latest Code to Repository 2020-02-16 13:30:00 -05:00
yarn.lock Bump follow-redirects from 1.14.3 to 1.14.7 (#2011) 2022-01-17 03:42:04 -05:00

README.md

FreeTube is an open source desktop YouTube player built with privacy in mind. Use YouTube without advertisements and prevent Google from tracking you with their cookies and JavaScript. Available for Windows, Mac & Linux thanks to Electron.

Please note that FreeTube is currently in Beta. While it should work well for most users, there are still bugs and missing features that need to be addressed.

Download FreeTube

Browser Extension

FreeTube is supported by the Privacy Redirect extension, which will allow you to open YouTube links into FreeTube. You must enable the option within the advanced settings for it to work.

Download Privacy Redirect for Firefox or Google Chrome.

If you have issues with the extension working with FreeTube, please create an issue in this repository instead of the extension repository.

How does it work?

FreeTube uses a built in extractor to grab and serve data / videos. The Invidious API can also optionally be used. FreeTube does not use any official APIs to obtain data. While YouTube can still see your video requests, it can no longer track you using cookies or JavaScript. Your subscriptions and history are stored locally on your computer and never sent out. Using a VPN or Tor is highly recommended to hide your IP while using FreeTube.

Go to FreeTube's Documentation if you'd like to know more about how to operate FreeTube and its features.

Screenshots

Features

  • Watch videos without ads
  • Use YouTube without Google tracking you using cookies and JavaScript
  • Two extractor APIs to choose from (Built in or Invidious)
  • Subscribe to channels without an account
  • Local subscriptions, history, and saved videos
  • Organize your subscriptions into "Profiles" to create a more focused feed
  • Export & import subscriptions
  • Open videos from your browser directly into FreeTube (with extension)
  • Mini Player
  • Full Theme support

Official Downloads

GitHub Releases

FreeTube Website

Flatpak on Flathub: Download Source

Unofficial Downloads

These builds are maintained by the community. While they should be safe, download at your own risk. There may be issues with using these versus the official builds. Any issues specific with these builds should be sent to their respective maintainer.

Arch User Repository (AUR): Download

Chocolatey: Download

Windows Portable: Download Source

Automated Builds (Nightly / Weekly)

Builds are automatically created from changes to our development branch via GitHub Actions.

The first build with a green check mark is the latest build. You will need to have a GitHub account to download these builds.

Contributing

If you have an idea or if you found a bug, please submit a GitHub issue so that we can track it. Please search the existing issues before submitting to prevent duplicates.

If you like to get your hands dirty and want to contribute, we would love to have your help. Send a pull request and someone will review your code. Please follow the Contribution Guidelines before sending your pull request.

Thank you very much to the People and Projects that make FreeTube possible!

Localization

Translation status

We are actively looking for translations! We use Weblate to make it easy for translators to get involved. Click on the badge above to learn how to get involved.

For the Linux Flatpak, the desktop entry comment string can be translated at our Flatpak repository.

Contact

If you ever have any questions, feel free to make an issue here on GitHub. Alternatively, you can email me at FreeTubeApp@protonmail.com or you can join our Matrix Community. Don't forget to check out the rules before joining.

You can also stay up to date by reading the FreeTube Blog. View the welcome blog.

Donate

FreeTube on Liberapay

Bitcoin Address: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS

Monero Address: 48WyAPdjwc6VokeXACxSZCFeKEXBiYPV6GjfvBsfg4CrUJ95LLCQSfpM9pvNKy5GE5H4hNaw99P8RZyzmaU9kb1pD7kzhCB

If you enjoy using FreeTube, you're welcome to leave a donation using the following methods. While your donations are much appreciated, only donate if you really want to. Donations are used for keeping the website up and running and eventual code signing costs.

License

GNU AGPLv3 Image

FreeTube is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.