Top Related Projects
Command-line program to download videos from YouTube.com and other video sites
A feature-rich command-line audio/video downloader
yewtube, forked from mps-youtube , is a Terminal based YouTube player and downloader. No Youtube API key required.
A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.
A libre lightweight streaming front-end for Android.
Invidious is an alternative front-end to YouTube
Quick Overview
The youtube-viewer
project is a command-line tool for watching YouTube videos directly from the terminal. It provides a simple and efficient way to browse and play YouTube content without the need for a web browser.
Pros
- Cross-platform Compatibility: The tool is designed to work on various operating systems, including Linux, macOS, and Windows.
- Lightweight and Efficient: The project is lightweight and does not require a heavy dependency on external libraries, making it a fast and efficient solution.
- Customizable Playback: Users can customize the playback experience, such as adjusting the volume, seeking through the video, and controlling the playback speed.
- Offline Viewing: The tool supports downloading YouTube videos for offline viewing, allowing users to watch content without an active internet connection.
Cons
- Limited Video Quality: The tool may not support the highest video quality available on YouTube, as it relies on the capabilities of the underlying media player.
- Dependency on External Tools: The project requires the installation of external tools, such as a media player, which can add complexity to the setup process.
- Potential for Abuse: Like any tool that interacts with YouTube, there is a risk of the
youtube-viewer
being used for purposes that may violate YouTube's terms of service. - Lack of Graphical User Interface: The tool is command-line-based, which may not be preferred by users who are more comfortable with graphical user interfaces.
Code Examples
N/A (This is not a code library)
Getting Started
N/A (This is not a code library)
Competitor Comparisons
Command-line program to download videos from YouTube.com and other video sites
Pros of youtube-dl
- Supports a wide range of video and audio formats, including MP4, WebM, and more.
- Actively maintained with frequent updates and bug fixes.
- Provides a comprehensive set of features and options for downloading and converting media.
Cons of youtube-dl
- Can be more complex to use, especially for beginners, due to its extensive command-line options.
- May require additional dependencies or libraries to be installed, depending on the user's system.
- Focuses primarily on downloading media, while YouTube Viewer provides a more user-friendly interface.
Code Comparison
youtube-dl:
ydl_opts = {
'outtmpl': '%(title)s.%(ext)s',
'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=dQw4w9WgXcQ'])
YouTube Viewer:
from youtube_viewer.viewer import YouTubeViewer
viewer = YouTubeViewer()
viewer.download('https://www.youtube.com/watch?v=dQw4w9WgXcQ')
A feature-rich command-line audio/video downloader
Pros of yt-dlp
- Actively maintained and regularly updated, with a large and engaged community.
- Supports a wide range of video and audio formats, as well as various streaming platforms.
- Provides more features and options compared to trizen/youtube-viewer, such as advanced download options and metadata extraction.
Cons of yt-dlp
- May have a steeper learning curve due to the increased complexity and number of available options.
- Requires more dependencies and may have a larger footprint compared to the simpler trizen/youtube-viewer.
- Might not be as user-friendly for casual users who just want a basic YouTube downloader.
Code Comparison
trizen/youtube-viewer:
def main():
parser = argparse.ArgumentParser(description='YouTube Viewer')
parser.add_argument('url', help='YouTube video URL')
parser.add_argument('-q', '--quality', default='bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
help='Video quality (default: bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best)')
args = parser.parse_args()
yt = YouTube(args.url)
stream = yt.streams.filter(progressive=True).filter(res=args.quality).first()
stream.download()
yt-dlp/yt-dlp:
def main():
parser = argparse.ArgumentParser(description='yt-dlp - a youtube-dl fork')
parser.add_argument('url', nargs='*', help='Video URL(s) to download')
parser.add_argument('-f', '--format', default='bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
help='Video format code')
parser.add_argument('-o', '--output', default='%(title)s.%(ext)s',
help='Output file template')
args = parser.parse_args()
ydl_opts = {
'outtmpl': args.output,
'format': args.format,
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(args.url)
yewtube, forked from mps-youtube , is a Terminal based YouTube player and downloader. No Youtube API key required.
Pros of yewtube
- yewtube provides a more modern and visually appealing user interface compared to youtube-viewer.
- yewtube supports a wider range of features, including playlists, subscriptions, and search history.
- yewtube is actively maintained and has a larger community of contributors.
Cons of yewtube
- yewtube has a higher learning curve and may be more complex for users who prefer a simpler interface.
- yewtube may have more dependencies and a larger codebase, which could impact performance on older or less powerful systems.
- yewtube may not be as customizable as youtube-viewer, which is known for its flexibility.
Code Comparison
youtube-viewer:
def search(self, query):
"""Search for videos on YouTube."""
url = 'https://www.youtube.com/results?search_query={}'.format(quote_plus(query))
response = self.session.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
results = []
for video in soup.find_all('div', {'class': 'yt-lockup-content'}):
title = video.find('a')['title']
url = 'https://www.youtube.com' + video.find('a')['href']
duration = video.find('span', {'class': 'video-time'})
if duration:
duration = duration.text.strip()
results.append({'title': title, 'url': url, 'duration': duration})
return results
yewtube:
async def search(self, query: str) -> List[Video]:
"""Search for videos on YouTube."""
url = f"https://www.youtube.com/results?search_query={quote_plus(query)}"
async with self.session.get(url) as response:
soup = BeautifulSoup(await response.text(), "html.parser")
results = []
for video in soup.find_all("div", {"class": "yt-lockup-content"}):
title = video.find("a")["title"]
url = "https://www.youtube.com" + video.find("a")["href"]
duration = video.find("span", {"class": "video-time"})
if duration:
duration = duration.text.strip()
results.append(Video(title=title, url=url, duration=duration))
return results
A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.
Pros of pytube/pytube
- pytube is a lightweight and fast library for downloading YouTube videos, with a simple and intuitive API.
- The library is actively maintained and has a large community, ensuring regular updates and bug fixes.
- pytube provides a wide range of features, including support for various video formats, playlists, and video metadata retrieval.
Cons of pytube/pytube
- pytube may not be as feature-rich as some other YouTube download libraries, such as trizen/youtube-viewer, which offers more advanced functionality.
- The library's documentation could be more comprehensive, making it potentially more challenging for new users to get started.
Code Comparison
pytube/pytube:
from pytube import YouTube
yt = YouTube("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first().download()
trizen/youtube-viewer:
from youtube_viewer import YouTubeViewer
yt = YouTubeViewer("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
yt.download()
A libre lightweight streaming front-end for Android.
Pros of NewPipe
- NewPipe is a full-featured YouTube client with support for downloading videos, audio, and subtitles.
- NewPipe has a clean and modern user interface designed for mobile devices.
- NewPipe is open-source and available on F-Droid, providing a privacy-focused alternative to the official YouTube app.
Cons of NewPipe
- NewPipe may not have the same level of feature parity as the official YouTube app, particularly for advanced functionality.
- NewPipe's development is community-driven, which can lead to slower updates and bug fixes compared to a commercial product.
- NewPipe's reliance on unofficial YouTube APIs may result in compatibility issues or service disruptions over time.
Code Comparison
YouTube-Viewer:
def get_video_info(self, video_id):
"""
Retrieve video information for the given video ID.
"""
url = f"https://www.youtube.com/watch?v={video_id}"
response = self.session.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# Extract video title, author, and other metadata
title = soup.find("span", {"class": "watch-title"}).text.strip()
author = soup.find("span", {"class": "yt-user-info"}).text.strip()
# Additional metadata extraction...
NewPipe:
private void loadVideo(final String videoUrl) {
final String videoId = Parser.getVideoId(videoUrl);
final StreamInfo streamInfo;
try {
streamInfo = ServiceList.getService(serviceId).getStreamInfo(videoId);
setVideoInfo(streamInfo);
} catch (Exception e) {
ErrorActivity.reportError(this, e, null, null,
ErrorActivity.ErrorInfo.make(UserAction.LOAD_VIDEO, "none", videoUrl, R.string.could_not_load_video));
}
}
Invidious is an alternative front-end to YouTube
Pros of Invidious
- Invidious provides a privacy-focused alternative to the official YouTube website, allowing users to access YouTube content without being tracked by Google.
- Invidious offers a clean and minimalist user interface, which can be more appealing to some users compared to the cluttered design of the official YouTube website.
- Invidious supports a wide range of features, including the ability to download videos, adjust playback speed, and customize the appearance of the website.
Cons of Invidious
- Invidious may not have the same level of feature parity as the official YouTube website, as it is a third-party project.
- Invidious may not be as widely known or used as the official YouTube website, which could make it less convenient for some users.
- Invidious may be subject to more frequent downtime or service disruptions compared to the official YouTube website, as it is a smaller and less-resourced project.
Code Comparison
Here's a brief code comparison between Invidious and YouTube Viewer:
Invidious (Ruby):
get '/api/v1/videos/:id' do
video = Video.find_by(id: params[:id])
if video
json video.as_json(only: [:id, :title, :author, :length_seconds, :published, :thumbnail_url, :view_count])
else
status 404
json error: 'Video not found'
end
end
YouTube Viewer (Perl):
sub get_video_info {
my ($self, $video_id) = @_;
my $url = "https://www.youtube.com/get_video_info?video_id=$video_id";
my $response = $self->ua->get($url);
if ($response->is_success) {
my $info = parse_query_string($response->content);
return $info;
} else {
return undef;
}
}
Both code snippets demonstrate how the respective projects handle the retrieval of video information, but the implementation details differ due to the different programming languages used (Ruby for Invidious, Perl for YouTube Viewer).
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
youtube-viewer
A lightweight application for searching and playing videos from YouTube.
youtube-viewer
- command-line interface to YouTube.
gtk-youtube-viewer
- GTK+ interface to YouTube.
AVAILABILITY
- Alpine Linux:
doas apk add youtube-viewer
- Arch Linux (AUR): https://aur.archlinux.org/packages/gtk-youtube-viewer-git/
- Arch Linux (AUR) (CLI only): https://aur.archlinux.org/packages/youtube-viewer-git/
- Fedora: https://copr.fedorainfracloud.org/coprs/itsuki/Youtube-viewer/
- FreeBSD: https://www.freshports.org/multimedia/gtk-youtube-viewer
- Frugalware: https://frugalware.org/packages/203103
- Gentoo: https://packages.gentoo.org/package/net-misc/youtube-viewer
- OSX:
brew install thekevjames/youtube-viewer/youtube-viewer
- Puppy Linux: https://www.murga-linux.com/puppy/viewtopic.php?t=76835
- Slackware: https://slackbuilds.org/repository/14.2/multimedia/youtube-viewer/
- Solus:
sudo eopkg it youtube-viewer
- Ubuntu/Linux Mint:
sudo add-apt-repository ppa:nilarimogard/webupd8
- Debian/Ubuntu (MPR): Latest stable version https://mpr.makedeb.org/packages/youtube-viewer .Latest dev version https://mpr.makedeb.org/packages/youtube-viewer-git . MPR is like the AUR, but for Debian/Ubuntu. You need to install makedeb first https://www.makedeb.org/ .
- Void Linux:
sudo xbps-install youtube-viewer
INSTALLATION
To install youtube-viewer
, run:
perl Build.PL
sudo ./Build installdeps
sudo ./Build install
To install gtk-youtube-viewer
along with youtube-viewer
, run:
perl Build.PL --gtk
sudo ./Build installdeps
sudo ./Build install
TRY
For trying the latest commit of youtube-viewer
, without installing it, execute the following commands:
cd /tmp
wget https://github.com/trizen/youtube-viewer/archive/master.zip -O youtube-viewer-master.zip
unzip -n youtube-viewer-master.zip
cd youtube-viewer-master/bin
./youtube-viewer
DEPENDENCIES
For youtube-viewer:
For gtk-youtube-viewer:
- Gtk3
- File::ShareDir
- + the dependencies required by youtube-viewer.
Optional dependencies:
- Local cache support: LWP::UserAgent::Cached
- Better STDIN support (+history): Term::ReadLine::Gnu
- Faster JSON deserialization: JSON::XS
- Fixed-width formatting: Unicode::LineBreak or Text::CharWidth
- yt-dlp or youtube-dl.
PACKAGING
To package this application, run the following commands:
perl Build.PL --destdir "/my/package/path" --installdirs vendor [--gtk]
./Build test
./Build install --install_path script=/usr/bin
LOGGING IN
Starting with version 3.7.4, youtube-viewer provides the ~/.config/youtube-viewer/api.json
file, which allows setting an YouTube API key and the client ID/SECRET values:
{
"key": "API_KEY",
"client_id": "CLIENT_ID",
"client_secret": "CLIENT_SECRET"
}
- Prerequisite: you must create a Google Platform project. Following the below steps should prompt you to create one if you do not already have one.
- Enable the YouTube Data v3 API on your project: navigate here and click "Enable" (if you see a blue "Manage" button, it's already enabled).
- Replace
API_KEY
with your YouTube API key. Create a new key here by clicking on "Create Credentials" > "API Key". - Optionally, in order to log in, replace
CLIENT_ID
andCLIENT_SECRET
with your native client ID and client secret values, by creating a new OAuth 2.0 Client ID here: click "Create Credentials" > "OAuth client ID", then select "TV and Limited Input devices" (tutorial -- may be outdated).
The project must have the following scope enabled: https://www.googleapis.com/auth/youtube
Also, in order to log in, grant access to the project in: https://console.cloud.google.com/apis/credentials/consent
PIPE-VIEWER
pipe-viewer is a fork of straw-viewer, which parses the YouTube website directly, and thus it does not require an YouTube API key.
REVIEWS
- [EN] YOUTUBE VIEWER: A COMPLETE YOUTUBE CLIENT FOR LINUX [UBUNTU PPA]
- [EN] YOUTUBE-VIEWER â ALTERNATIVE WAY TO INTERACT WITH YOUTUBE
- [EN] A YouTube CLI for Mac
- [EN] Gtk Youtube Viewer (for lots of pups)
- [ES] Este es el mejor cliente de YouTube para Linux
- [ES] YouTube Viewer: busca, reproduce y descarga vÃdeos de YouTube desde el escritorio
- [HU] GTK Youtube Viewer
- [JP] GTK Youtube Viewer 試ãã¦ã¿ã
- [PT] YouTube Viewer: um completo cliente YouTube para Linux
- [RO] youtube-viewer
- [RU] СÑÑимим и каÑÑим youtube и не ÑолÑко
- [RU] УÑÑановиÑÑ ÐºÐ»Ð¸ÐµÐ½Ñ Youtube Viewer в Linux
- [RU] Youtube Viewer / GTK Youtube Viewer
- [TR] Youtube Viewer Nedir? Nasıl Kurulur? (Ubuntu/Linux Mint)
VIDEO REVIEWS
- [EN] Youtube-Viewer -- Search and Play Youtube Video - Linux CLI
- [EN] youtube-viewer - Watch, Read and Post Youtube Comments - Linux CLI
- [EN] Gentoo in Review - youtube-viewer CLI client
- [EN] GTK Youtube Viewer : A Complete Youtube Desktop Client For Linux Mint
- [EN] GTK-YouTube Viewer for Puppy Linux
SUPPORT AND DOCUMENTATION
After installing, you can find documentation with the following commands:
man youtube-viewer
perldoc WWW::YoutubeViewer
LICENSE AND COPYRIGHT
Copyright (C) 2012-2024 Trizen
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See https://dev.perl.org/licenses/ for more information.
Top Related Projects
Command-line program to download videos from YouTube.com and other video sites
A feature-rich command-line audio/video downloader
yewtube, forked from mps-youtube , is a Terminal based YouTube player and downloader. No Youtube API key required.
A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.
A libre lightweight streaming front-end for Android.
Invidious is an alternative front-end to YouTube
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot