⭐ Please support us by starring the project if you find it useful.
This project consists of several connected sub-projects:
SharpGrabberis a .NET Standard library for crawling into top media provider websites such as YouTube, Vimeo etc. in order to grab information and return direct links of the audio/video files. HLS and M3U8 files are also supported.SharpGrabber.Converteris a .NET Standard library based onffmpegshared libraries to join audio and video streams. This is particularly useful when grabbing high quality YouTube media that might be separated into audio and video files. It is also used for merging HLS stream segments.SharpGrabber.DesktopA cross-platform desktop application which utilizes both mentioned libraries to expose their functionality to desktop end-users.
The following providers are currently supported with the option to easily add more or even override part of grabbing algorithm with your own code.
- YouTube
- Vimeo
- Any HLS service (M3U8 playlists)
M3U8 files are now supported - including master playlists.
- The
SharpGrabberlibrary can parse and grab information from the playlists. - The
SharpGrabber.Converterlibrary can concatenate the segment files usingffmpegshared libraries. - AES-128 decryption is supported.
- Grabs useful information about media such as length, title, author and many more.
- Deciphers secure YouTube videos optionally.
- Extracts direct links to all available qualities.
- Extracts images and thumbnails.
- Supports asynchronous operations.
- Displays information obtained by the
SharpGrabberlibrary and downloads the resolved direct links. - Uses
SharpGrabber.Converterto merge YouTube separated audio and video streams into complete media files.
Download binaries from the releases page.
Include SharpGrabber library in your own .NET projects.
Install via NuGet
Install-Package SharpGrabber -Version 1.5.0
var grabber = new YouTubeGrabber();
var result = await grabber.GrabAsync(new Uri("<URL of a YouTube video>"));
IList<IGrabbed> grabbedResources = result.Resources;
var grabber = MultiGrabber.CreateDefault();
var result = await grabber.GrabAsync(new Uri("<Target Link>"));
IList<IGrabbed> grabbedResources = result.Resources;
Requirements of the cross-platform desktop application to run and operate correctly:
- .NET Core 3.1
- Shared libraries of ffmpeg copied into
ffmpegdirectory alongside app executable files for media conversion support.- On Windows, you may download the latest BtbN ffmpeg build.
- On any OS check out the official website.
Download binaries from the releases page.
Your contributions are much appreciated!
- Support for more media providers such as DailyMotion, Instagram, Facebook, Twitch etc.
- Accelerate downloads in the desktop app (like a download manager)
Copyright © 2021 Javid Shoaei
This project is licensed under the GNU Lesser General Public License (LGPL) version 3.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
