⭐ Please give a star if you find this project useful!
This repository contains multiple related projects:
SharpGrabber
is a .NET Standard library for scraping top media providers and grabbing high quality video, audio and information.SharpGrabber.Converter
is a .NET Standard library based onffmpeg
shared 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.Desktop
A cross-platform desktop application which utilizes both mentioned libraries to expose their functionality to desktop end-users.
For Developers
The SharpGrabber
package defines abstractions only. The actual grabbers have their own packages and should be installed separately.
SharpGrabber - Core Package
Install-Package SharpGrabber -Version 2.0.1
It's an optional package to work with media files. Using this package, you can easily concatenate video segments, or mux audio and video channels.
It uses ffmpeg
shared libraries underneath.
Install-Package SharpGrabber.Converter -Version 1.0
Adds support to download high-quality videos from YouTube, even if they are served as separate video and audio files only.
The high-quality output is possible thanks to the SharpGrabber.Converter
library.
Install-Package SharpGrabber.YouTube -Version 1.1
Install-Package SharpGrabber.Vimeo -Version 1.0
Warning: This grabber is not guaranteed to work. It works only for clients that Instagram allows anonymous access to public content.
Install-Package SharpGrabber.Instagram -Version 0.1
This package adds the capability to parse M3U8 playlist files - including master playlists - and download video segments.
With the help of the SharpGrabber.Converter
package, segments may be joined together.
This package also supports AES-128
decryption.
Install-Package SharpGrabber.Hls -Version 1.0
Adult - PornHub
, xnxx
, and xvideos
Install-Package SharpGrabber.Adult -Version 1.0.1
var grabber = GrabberBuilder.New()
.UseDefaultServices()
.AddYouTube()
.AddVimeo()
.Build();
This will result in the creation of a "multi-grabber".
What grabbers you can "add" depends on what packages you've installed. In this example, we have installed YouTube and Vimeo packages.
var result = await grabber.GrabAsync(new Uri("https://www.youtube.com/watch?v=LTseTg48568"));
No matter what website the URI refers to, the multi-grabber will detect the provider and put the right grabber to use.
var info = result.Resource<GrabbedInfo>();
Console.WriteLine("Time Length: {0}", info.Length);
var images = result.Resources<GrabbedImage>();
var videos = result.Resources<GrabbedMedia>();
ATTENTION! Beware of the breaking changes since v2.0 that requires you to update your code. The good news is no functionality has been removed, so with a minor refactoring, you should be good to go! I strongly recommend that you upgrade, v2 has a much cleaner structure and code.
- It uses every package mentioned above and supports all of the mentioned providers!
- Displays information and downloads videos, audios, images etc.
- Merges YouTube separated audio and video streams into complete media files. It can join HLS segments as well!
Requirements of the cross-platform desktop application to run and operate correctly:
- .NET Core 3.1
- Shared libraries of ffmpeg copied into
ffmpeg
directory alongside app executable files for media manipulation support.- On Windows, you may download the latest BtbN ffmpeg build.
- On any OS check out the official website.
Download the latest binaries from the releases page.
You are most welcome to contribute!
- 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 and other contributors
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.