Code Monkey home page Code Monkey logo

freetube's Introduction

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 (10 and later), Mac (macOS 10.15 and later) & Linux thanks to Electron.

Download FreeTube

Build status Translation status


ScreenshotsHow does it work?FeaturesDownload LinksContributingLocalizationContactDonateLicense

WebsiteBlogDocumentationFAQDiscussions


Note

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.

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!

Screenshots

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.

Important

Using a VPN or Tor is highly recommended to hide your IP while using FreeTube.

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
  • Connect to an externally setup proxy such as Tor
  • View and search your local subscriptions, history, and saved videos
  • Organize your subscriptions into "Profiles" to create a more focused feed
  • Export & import subscriptions
  • Youtube Trending
  • Youtube Chapters
  • Most popular videos page based on the set Invidious instance
  • SponsorBlock
  • Open videos from your browser directly into FreeTube (with extension)
  • Watch videos using an external player
  • Full Theme support
  • Make a screenshot of a video
  • Multiple windows
  • Mini Player (Picture-in-Picture)
  • Keyboard shortcuts
  • Option to show only family friendly content
  • Show/hide functionality or elements within the app using the distraction free settings
  • View channel community posts
  • View most age restricted videos

Browser Extension

FreeTube is supported by the Privacy Redirect and LibRedirect extensions, which will allow you to open YouTube links into FreeTube.

Important

You must enable the option within the advanced settings of the extension for it to work.

Note

This extension does not work on Linux portable builds!

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

Download Links

Official Downloads

Caution

FreeTube is only supported on Windows 10 and later, macOS 10.15 and above, and various Linux distributions. Installing it on unsupported systems may result in unexpected issues.

Automated Builds (Nightly / Weekly)

Warning

Use these builds at your own risk. These are pre-release versions and are only intended for people that want to test changes early and are willing to accept that things could break from one build to another.

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.

Important

You will need to have a GitHub account to download these builds.

Unofficial Downloads

Warning

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. Make sure u always try an official download before reporting your issue to us!

Contributing

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

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.

Important

Please follow the Contribution Guidelines before sending your pull request.

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 ask it on our Discussions page. Alternatively, you can email us at [email protected] or you can join our Matrix Community.

Important

Don't forget to check out the rules before joining.

Donate

If you enjoy using FreeTube, you're welcome to leave a donation using the following methods.

  • FreeTube on Liberapay

  • Bitcoin Address: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS

  • Monero Address: 48WyAPdjwc6VokeXACxSZCFeKEXBiYPV6GjfvBsfg4CrUJ95LLCQSfpM9pvNKy5GE5H4hNaw99P8RZyzmaU9kb1pD7kzhCB

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.

Tip

If you are using the Invidious API then we recommend that you donate to the instance that you use. You can also donate to the Invidious team or the Local API developer.

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.

freetube's People

Contributors

70h avatar absidue avatar chunkyprogrammer avatar cloudrac3r avatar comradekingu avatar dennis1248 avatar dependabot[bot] avatar dragibusnoir avatar efb4f5ff-1298-471a-8973-3d47447115dc avatar fjuro avatar gilgusmaximus avatar ihorhordiichuk avatar jasonhenriquez avatar kyotaro avatar mapi68 avatar marmadilemanteater avatar milotype avatar oersen avatar ovari avatar pikachuexe avatar prestonn avatar rddim avatar rex07 avatar s8321414 avatar sandyran avatar svallinn avatar sveinki avatar weblate avatar yarons avatar zakret 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

freetube's Issues

Remove npm install lines in shell config file

I'm building FreeTube from source code, and I founded that npm install installs a few lines on (either ~/.bashrc with bash, ~/.zshrc with zsh or ~/.config/fish/config.fish with fish shell):

#tabtab source for electron-forge package
#uninstall by removing these lines or running tabtab uninstall electron-forge
[ -f /home/namkhai/.apps/FreeTube/node_modules/tabtab/.completions/electron-forge.fish ]; and . > /home/namkhai/.apps/FreeTube/node_modules/tabtab/.completions/electron-forge.fish

I'm trying to write a PKGBUILD to build a package for Arch Linux, and I don't know how to run tabtab uninstall electron-forge
Can anyone help me please? If there's need of more info, tell me

Enhancement: Dynamic Subscription Lists

This is related to #1

Currently the subscription list is static. It appears to be in alphabetical order. It would be nice if the list was sorted based on the most recently updated channels. This will be extremely useful for users having a large number of subscriptions.

untitled_page

Open youtube channels links

The app lacks a feature to manually open custom youtube links. I think there is should be a possibility to paste your own youtube link into the app.

Version 1.2 API issue - Private Key Not saved

I just noticed this today. Previously I was using my own API key. Then I installed 1.2 on top of the older version. After upgrading my API Key is not there any more and any change doesn't actually save. The issue makes it impossible to use the application right now. I assume your API's have hit their limit?

Local playlists

Can you please add a possibility to sort saved video by groups? It can be useful to create local playlists (sort of).

Oops, it's a duplicate of more complex #25.

Feature request: Proxy support

Sorry about the barrage of issues, I wanted to get ideas down before I forget!

Is there a way to set a proxy for FreeTube so that, for example, a user can define a local SOCKS5 proxy to connect with the Tor Browser? I think this would be great from a privacy POV. Thanks!

Enhanced playback controls

It would be nice if we had the ability to:

  • Pause/start a video by clicking on the spacebar of the keyboard
  • Double clicking a video should make the video go fullscreen.

I know these are minor but I'm putting them here because they will improve usability.

Enhancement: Improved Search Options

Right now, the search function is simple and it works. However, it is very limited.

It would be nice to be able to further filter searches... for example:

  • Date filters (today, yesterday, month, year, etc)
  • Duration
  • Video Quality
  • Sort by date
  • Sort By Relevance
  • Sort By Rating
  • Sort By View Count

In terms of UX, it would be nice if you could go back to previous searches (classic back button functionality). I find it frustrating that I cannot do that.

Feature Request: Load custom CSS theme

While this could be done by altering file from source or by simply packaging common system colour schemes, that would too much work for most users/add a lot of unnecessary bloat. A simple function to load a file would be quite nice.

Memory hungry causing it to crash

I tried to play a really long video. As seen in the image below. The amount of memory the program was using started to increase steadily as the video was played. It only stopped after the OS slowed down because it started running out of memory and closed the program. It took only a few minutes for before using all memory available.

I did notice that RAM increase when watching several 10 minutes videos but it would go down from time to time. Between 200MB to 400MB.

Is this a limit/problem to electron?

I'm using Ubuntu 17.10
Kernel 4.13.0-36

Task manager

video is not playing

Hi, thank you for developing this application. I am on Ubuntu 16.04 platform. I cloned the repo and did npm i, finally launched the application with npm start, I also entered youtube api it lists the video thumbnails when I type in the search box but it fails to play videos when I click the thumbnail, I get a blank window where it should be playing the video.

Infinitely loading after attempting to import xml subscription list

I'm sure that you didn't intend for people to use the xml subscription lists that you can export from Youtube, but on a lark I decided to manually specify my personal xml file on the import function, got a "Import was successful" message, restarted as requested, and then was stuck on an infinitely loading page.

freetube_error

Deleted the app out of the Local and Roaming folders and reinstalled. This is most likely not intended usage by you, but I figured I would bring it up anyway.

Subtitle support

Can you please add support for subtitles?
Thanks for such a great app!

Hide the top bar on fullsceen video

When passing the video on fullscreen mode, the bottom bar disapears in a few seconds but the topbar (with menus) persists.

screenshot

Nice job btw ;)

Enhancement: Playlists in result page (search)

It would be very appreciated if playlists can be added in the result page when I search for a specific content.

In the version I tested (Release 0.1.3 Beta), I can just get videos in my result page, even if I tried to get a specific playlist.

Just try with those keywords: touhou ost. Youtube returns videos and playlist as requested. FreeTube just returned videos.

Feature Request: Add count notification to subscriptions

It would be nice to see an unwatched number notification when scrolling through my subscription (on the left panel) list. A typical bubble icon would work perfectly.

This is a really nice app. Keep up the great work. It may replace minitube for me :)

Notifications

Would be nice to have a notification about new video from subscribed channels.

Enhancement: Ability to select region

Currently there's no way to select the region. This results in the "Most Popular" category to not be very relevant (esp., language).

I'm sure this is already on your to-do list but I'm putting here because it's kind of important.

P.S. Can you tell me which region the application is coded for by default? I've looked at the Most Popular list and compared it to YouTube's popular category and it totally doesn't match (tried multiple regions).

Improved Navigation Needed

I've been using Freetube extensively over the weekend (I've been sick so I had a lot of time). One of the most frustrating things for me has been the lack of navigation (esp., go back).

It would be great if users could have a 'back' button (or keyboard shortcut to do this).

Use Cases:

  • User Opens "Most Popular" list of videos. The user scrolls down through the list and clicks a video, after watching the video, the user clicks on the back button which takes him back to the "Most Popular" list to the point in the list he was looking.
  • User does a search. Scrolls through the results and then watches the video. After clicking on the back button it takes him back to his search query to the point in the list he was viewing.

Readme dishonesty

FreeTube is an Open Source Desktop YouTube player built with privacy in mind.

Bundled with a proprietary, obfuscated JavaScript script by Google. You don't feel like mentioning this?

[FreeTube] uses the HookTube API to grab the raw video files and play them in a basic HTML5 video player, preventing YouTube from tracking that video.

Directly retrieving a video from Google does not prevent Google from tracking what you watch. It improves you privacy as it gets rid of proprietary JS but they can still track your IP address and User-Agent.

If you are so serious about privacy you should also mention that if you use FreeTube, HookTube can also track what videos you are watching and that they don't even have a privacy policy.

Use local youtube-dl instance

Relying on a youtube-dl-api-server is bad for privacy, makes the app depend on an unnecessary server and only lets the user watch videos which are not restricted in the country in which the server is located (issue #34). While using a local youtube-dl instance would add a dependency, it would solve all of these problems.

/*
 * Detect youtube-dl by trying to run it.
 * @param {function} error - Function called on error with message.
 * @param {function} success - Function called on success with youtube-dl version.
 *
 * @return {Void}
 */
function detectYoutubeDl(error, success){
  const { spawn } = require( 'child_process' );
  const cmd = spawn( 'false', [ '--version' ] );
  let output = '';
  let notInPath = false;
  cmd.on('error', err => {
    notInPath = true;
  });
  cmd.stdout.on( 'data', data => {
    output += data.toString();
  });
  cmd.on( 'close', code => {
    if (notInPath){
      error('youtube-dl not in PATH')
    } else if (code != 0){
      error(`youtube-dl exited with non-zero exit code (${code})`)
    } else {
      success(output)
    }
  });
}

detectYoutubeDl(
  message => {
    console.log(`Error: ${message}`)
  },
  version => {
    console.log(`Detected youtube-dl: ${version}`)
  }
);

Feature Request: Playlist / infinite playback

Hey,

thank you for your great work! This piece of software was the last thing missing from ungoogleling my life. It works very well, I am just missing a way to play playlists or the infinite playback from youtube, so you can just let it run in the background and use it as an alternative music player.

Thank you already, keep going 👍

ARM builds?

Could ARM binaries be released?

These could be quite useful for Plasma Mobile, UBports, and postmarketOS.

Cursor is not hidden during video playback

Small papercut here.

On Linux (Ubuntu 18.04) when I fullscreen a video, I would expect the cursor to auto-hide. This is not the case though as the cursor just sits on top of the video. It kind of annoying and distracting.

Can someone test this on Windows or Mac?

add support for generic linux distros

I use an arch based distro which does not provide the dpkg-deb application. If I attempt to run "npm run make:linux" then it always ends with a file not found error due to dpkg-deb. Could you modify your package.json file to provide the following changes?

  • Change the make:linux command to support all linux distros by only building the package into the out folder and leaving it unpackaged. That way each distro can package it in their own way (e.g., with a PKGBUILD).
  • Add make:deb or make:rpm commands so that existing users can continue to create a deb or rpm package if they are using a compatible distro.
  • Add electron, electron-packager and yarn to dev dependencies. I receive an error if yarn isn't installed and electron-packager is needed to support the make:linux command below.
"make:deb": "electron-forge make --platform=linux",
"make:linux": "electron-packager . freetube --platform linux --arch x64 --out out/"

"devDependencies": {
    "electron-forge": "^5.1.1",
    "electron-prebuilt-compile": "1.8.2",
    "electron-winstaller": "^2.6.4",
    "electron-packager": "^11.1.0",
    "electron": "^1.8.3",
    "yarn": "^1.5.1"
},

Feature request: Use tags to organise/filter subscriptions and saved videos

Hello,

First of all, a huge thank you for creating such an useful and important program. This will greatly help protect a YouTube viewer's privacy.

I was going to suggest a playlists feature. However, I realised that a more flexible approach is to allow tagging of saved videos and filtering those videos based on tags.

The user can also tag their subscriptions and search for/filter their subscriptions based on tag.

What do you think?

Implement youtube-dl API

Looks like swack over at HookTube has changed his API slightly. I do not know if this is a response of FreeTube using it or not, but I 100% respect his decision if he doesn't want me to use his API.

Regardless of his decision, I have decided to switch over to the youtube-dl-api-server so that I can have more control over the API calls. This is being implemented immediately and I hope to have it ready by the end of the day.

Feature request: Select video/audio streams to download and mux

Hello again,

A super useful feature would be to show the available video and audio streams for a video, and allow downloading them and muxing them together (such as you often need to do when downloading DASH streams) within the FreeTube interface. Is this possible? Thanks!

Enhancement: Put video in mini-player back into main window

Hello again,

In order to keep a video playing while doing other things (searching, subscribing, etc.), I move the playing video into the mini-player first. However, AFAIK there's no way to put the mini-player video back into the main window once I've navigated away from it in the main window? If so, I think being able to do so would be a big improvement.

Feature Request: Add Transition Animation on Sidebar Toggle

This app looks like it's going by loose Material Design guidelines. Maybe I'm completely misreading it, but that seems to me to be the attempt.

One of MG's guidelines is that the transition should guide the eye from the old view to the new one.

So if I click the hamburger menu bar, it would be great if we had a transition animation between the before:

before

and the after

after

Maybe something like the bar sliding out from the left-hand side of the screen moving towards the right.

Feature Request: Variable Playback Speed

I love FreeTube! It's working great for me so far.

The only request I have is for a variable playback speed - some of the people talk way too slowly in some of the videos I like to watch.

so awesome love this

its a great program love it .. one thing that you can try to implement is external players like vlc and mpv also notifications but the app is great great jobb

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.