dertuxmalwieder / Yaydl
Licence: other
yet another youtube down loader (Git mirror)
Stars: ✭ 45
Programming Languages
rust
11053 projects
Projects that are alternatives of or similar to Yaydl
Pylivestream
Pure Python FFmpeg-based live video / audio streaming to YouTube, Facebook, Periscope, Twitch, and more
Stars: ✭ 442 (+882.22%)
Mutual labels: vimeo, youtube
Lightgallery
A customizable, modular, responsive, lightbox gallery plugin.
Stars: ✭ 4,829 (+10631.11%)
Mutual labels: vimeo, youtube
React Player
A React component for playing a variety of URLs, including file paths, YouTube, Facebook, Twitch, SoundCloud, Streamable, Vimeo, Wistia and DailyMotion
Stars: ✭ 5,931 (+13080%)
Mutual labels: vimeo, youtube
Firedm
python open source (Internet Download Manager) with multi-connections, high speed engine, based on python, LibCurl, and youtube_dl https://github.com/firedm/FireDM
Stars: ✭ 977 (+2071.11%)
Mutual labels: download, youtube
Ytmdl Web V2
Web version of ytmdl. Allows downloading songs with metadata embedded from various sources like itunes, gaana, LastFM etc.
Stars: ✭ 398 (+784.44%)
Mutual labels: download, youtube
Lightgallery.js
Full featured JavaScript image & video gallery. No dependencies
Stars: ✭ 5,168 (+11384.44%)
Mutual labels: vimeo, youtube
php-video-url-parser
A Simple and efficient PHP Video URL Parser that provides you thumbnails and embed codes for various video streaming websites
Stars: ✭ 57 (+26.67%)
Mutual labels: youtube, vimeo
Podsync
Turn YouTube or Vimeo channels, users, or playlists into podcast feeds
Stars: ✭ 657 (+1360%)
Mutual labels: vimeo, youtube
Bigpicture
Lightweight JavaScript image / video viewer. Supports Youtube, Vimeo, etc.
Stars: ✭ 722 (+1504.44%)
Mutual labels: vimeo, youtube
Raspberrycast
📺 Transform your Raspberry Pi into a streaming device. Videos can be sent from mobile devices or computers (Chrome extension).
Stars: ✭ 726 (+1513.33%)
Mutual labels: vimeo, youtube
Plyr
A simple HTML5, YouTube and Vimeo player
Stars: ✭ 20,859 (+46253.33%)
Mutual labels: vimeo, youtube
Embera
A Oembed consumer library, that gives you information about urls. It helps you replace urls to youtube or vimeo for example, with their html embed code. It has advanced features like offline support, responsive embeds and caching support.
Stars: ✭ 268 (+495.56%)
Mutual labels: vimeo, youtube
Rssbox
📰 I consume the world via RSS feeds, and this is my attempt to keep it that way.
Stars: ✭ 492 (+993.33%)
Mutual labels: vimeo, youtube
Richtextview
iOS Text View (UIView) that Properly Displays LaTeX, HTML, Markdown, and YouTube/Vimeo Links
Stars: ✭ 953 (+2017.78%)
Mutual labels: vimeo, youtube
SharpGrabber
Download from YouTube, Vimeo, PornHub, HLS (M3U8 files) with .NET and JavaScript, Library and desktop app for downloading high quality media
Stars: ✭ 138 (+206.67%)
Mutual labels: youtube, vimeo
Superembed.js
Fluid width for YouTube, Vimeo, Vine, VideoPress, DailyMotion, and more embedded videos.
Stars: ✭ 615 (+1266.67%)
Mutual labels: vimeo, youtube
yaydl
yet another youtube (and more) down loader
% yaydl "https://www.youtube.com/watch?v=jNQXAC9IVRw"
How? What? Why?
% yaydl --help
Features
- Can download videos.
- Can optionally keep only the audio part of them.
- Could convert the resulting file to something else (requires
ffmpeg
). - Comes as a single binary (once compiled) - take it everywhere on your thumbdrive, no Python cruft required.
Currently supported sites
- YouTube.com
- Vimeo.com
- VOE.sx
There is an easy way to add more supported sites, see below for details.
Non-features
The list of features is deliberately kept short:
- No output quality choice.
yaydl
assumes that you have a large hard drive and your internet connection is good enough, or else you would stream, not download. - No complex filters. This is a downloading tool.
- No image file support. Videos only.
Missing features (patches are welcome)
-
yaydl
currently ignores video meta data (except the title) unless they are a part of the video file. - Playlists are not supported yet.
How to install
From the source code
Install Rust (e.g. with rustup), then:
using Fossil:
% fossil clone https://code.rosaelefanten.org/yaydl yaydl.fossil
% mkdir yaydl ; cd yaydl ; fossil open ../yaydl.fossil
% cargo build --release
using Git:
% git clone https://github.com/dertuxmalwieder/yaydl
% cd yaydl
% cargo build --release
From Cargo
% cargo install yaydl
From your package manager
pkgsrc
(with pkg_add
):
% pkg_add yaydl
pkgsrc
(with pkgin
):
% pkgin install yaydl
Other package managers:
- Nobody has provided any other packages for
yaydl
yet. You can help!
How to contribute code
- Read and agree to the Code of
ConductMerit. - Implicitly agree to the LICENSE. Nobody reads those. I don't either.
- Find out if anyone has filed a GitHub Issue or even sent a Pull Request yet. Act accordingly.
- Send me a patch, either via e-mail (
yaydl at tuxproject dot de
), on the IRC or as a GitHub Pull Request. Note that GitHub only provides a mirror, so you'd double my work if you choose the latter. :-)
If you do that well (and regularly) enough, I'll probably grant you commit access to the upstream Fossil repository.
Add support for new sites
- Implement
definitions::SiteDefinition
ashandlers/<YourSite>.rs
. - Push the new handler to the inventory:
inventory::submit! { &YourSiteHandler as &dyn SiteDefinition }
- Add the new module to
handlers.rs
. - Optionally, add new requirements to
Cargo.toml
. - Send me a patch, preferably with an example. (I cannot know all sites.)
Minimal example that does nothing
// handlers/noop.rs
use anyhow::Result;
use crate::definitions::SiteDefinition;
struct NoopExampleHandler;
impl SiteDefinition for NoopExampleHandler {
fn can_handle_url<'a>(&'a self, url: &'a str) -> bool {
// Return true here, if <url> can be covered by this handler.
// Note that yaydl will skip all other handlers then.
true
}
fn does_video_exist<'a>(&'a self, url: &'a str) -> Result<bool> {
// Return true here, if the video exists.
false
}
fn find_video_title<'a>(&'a self, url: &'a str) -> Result<String> {
// Return the video title from <url> here.
Ok("".to_string())
}
fn find_video_direct_url<'a>(&'a self, url: &'a str, onlyaudio: bool) -> Result<String> {
// Return the direct download URL of the video (or its audio version) here.
Ok("".to_string())
}
fn find_video_file_extension<'a>(&'a self, url: &'a str, onlyaudio: bool) -> Result<String> {
// Return the designated file extension of the video (or audio) file here.
Ok("mp4".to_string())
}
fn display_name<'a>(&'a self) -> String {
// For cosmetics, this is the display name of this handler.
"NoopExample"
}
}
// Push the site definition to the list of known handlers:
inventory::submit! {
&NoopExampleHandler as &dyn SiteDefinition
}
Fix some bugs or add new features
- Do so.
- Send me a patch.
Donations
Writing this software and keeping it available is eating some of the time which most people would spend with their friends. Naturally, I absolutely accept financial compensation.
- PayPal: GebtmireuerGeld
- Liberapay: Cthulhux
Thank you.
Contact
- Twitter: @tux0r
- IRC:
irc.freenode.net/yaydl
- Matrix: @Cthulhux:matrix.org
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].