{"id":23887093,"url":"https://github.com/dotnettools/sharpgrabber","last_synced_at":"2025-05-16T11:06:16.091Z","repository":{"id":40505153,"uuid":"217912511","full_name":"dotnettools/SharpGrabber","owner":"dotnettools","description":"Download from YouTube, Vimeo, HLS (M3U8 files) and more with .NET and JavaScript - Library and desktop app for downloading high quality media","archived":false,"fork":false,"pushed_at":"2024-03-22T06:15:01.000Z","size":1514,"stargazers_count":334,"open_issues_count":20,"forks_count":45,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-05-16T11:06:05.126Z","etag":null,"topics":["blackwidow","cross-platform","ecmascript","ffmpeg","high-quality","hls","instagram","javascript","m3u8","media-converter","net-core","net-standard","pornhub","video","vimeo","xnxx","xvideos","youtube","youtube-dl"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dotnettools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-27T20:28:45.000Z","updated_at":"2025-05-13T15:57:36.000Z","dependencies_parsed_at":"2024-01-16T09:57:13.845Z","dependency_job_id":"69a9694e-7acd-4bb3-bb52-6681b4b8091a","html_url":"https://github.com/dotnettools/SharpGrabber","commit_stats":{"total_commits":298,"total_committers":3,"mean_commits":99.33333333333333,"dds":0.006711409395973145,"last_synced_commit":"b8877cfe58eebe7d273b1587d5efa13af02a519c"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnettools%2FSharpGrabber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnettools%2FSharpGrabber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnettools%2FSharpGrabber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnettools%2FSharpGrabber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dotnettools","download_url":"https://codeload.github.com/dotnettools/SharpGrabber/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518383,"owners_count":22084374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blackwidow","cross-platform","ecmascript","ffmpeg","high-quality","hls","instagram","javascript","m3u8","media-converter","net-core","net-standard","pornhub","video","vimeo","xnxx","xvideos","youtube","youtube-dl"],"created_at":"2025-01-04T07:29:32.341Z","updated_at":"2025-05-16T11:06:11.076Z","avatar_url":"https://github.com/dotnettools.png","language":"C#","readme":"\u003cimg src=\"./assets/icon.png\" alt=\"SharpGrabber\" width=\"64\" /\u003e\n\n# SharpGrabber\n\n[![GitHub](https://img.shields.io/github/license/dotnettools/SharpGrabber)](https://github.com/dotnettools/SharpGrabber/blob/master/LICENSE)\n[![NuGet download count](https://img.shields.io/nuget/dt/SharpGrabber)](https://www.nuget.org/packages/SharpGrabber)\n[![Build](https://github.com/dotnettools/SharpGrabber/actions/workflows/build.yml/badge.svg?branch=master\u0026event=push)](https://github.com/dotnettools/SharpGrabber/actions/workflows/build.yml)\n\nThis repository contains multiple related projects:\n- \u003ca href=\"#how-to-use\"\u003e`SharpGrabber`\u003c/a\u003e is a *.NET Standard* library for scraping top media providers and grabbing high quality video, audio and information.\n- \u003ca href=\"#how-to-use\"\u003e`SharpGrabber.Converter`\u003c/a\u003e is a *.NET Standard* library based on `ffmpeg` 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.\n- \u003ca href=\"#introducing-blackwidow\"\u003e`SharpGrabber.BlackWidow`\u003c/a\u003e is a *.NET Standard* library for grabbing with JavaScript, which has many advantages over using scattered NuGet packages.\n- \u003ca href=\"#sharpgrabberdesktop\"\u003e`SharpGrabber.Desktop`\u003c/a\u003e A cross-platform desktop application which utilizes all three libraries mentioned above to expose their functionality to desktop end-users.\n\n# How to Use\n[Go to Documentation](https://github.com/dotnettools/SharpGrabber/wiki)\n\n\u003cdetails\u003e\n    \u003csummary\u003e\n        Quick Start\n    \u003c/summary\u003e\n    \n## Package Installation\nThe `SharpGrabber` package defines abstractions only. The actual grabbers have their own packages and should be installed separately.\n\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber/\"\u003eSharpGrabber\u003c/a\u003e - Core Package\n    Install-Package SharpGrabber -Version 2.1.1\n\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber.Converter/\"\u003eSharpGrabber.Converter\u003c/a\u003e\nIt's an optional package to work with media files. Using this package, you can easily concatenate video segments, or mux audio and video channels.\nIt uses `ffmpeg` shared libraries underneath.\n\n    Install-Package SharpGrabber.Converter -Version 1.1\n\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber.Hls/\"\u003eHLS - M3U8 playlists\u003c/a\u003e\nThis package adds the capability to parse M3U8 playlist files - including master playlists - and download video segments.\nWith the help of the `SharpGrabber.Converter` package, segments may be joined together.\nThis package also supports `AES-128` decryption.\n\n    Install-Package SharpGrabber.Hls -Version 1.3\n\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber.YouTube/\"\u003eYouTube\u003c/a\u003e\nAdds support to download high-quality videos from YouTube, even if they are served as separate video and audio files only.\nThe high-quality output is possible thanks to the `SharpGrabber.Converter` library.\n\n    Install-Package SharpGrabber.YouTube -Version 1.5\n\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber.Vimeo/\"\u003eVimeo\u003c/a\u003e\n    Install-Package SharpGrabber.Vimeo -Version 1.0\n\t\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber.Odysee/\"\u003eOdysee\u003c/a\u003e\n    Install-Package SharpGrabber.Odysee -Version 1.0.1\n\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber.Instagram/\"\u003eInstagram\u003c/a\u003e\nWarning: This grabber is not guaranteed to work. It works only for clients that Instagram allows anonymous access to public content.\n\n    Install-Package SharpGrabber.Instagram -Version 0.1\n\n### \u003ca href=\"https://www.nuget.org/packages/SharpGrabber.Adult/\"\u003eAdult\u003c/a\u003e - `PornHub`, `xnxx`, and `xvideos`\n\n    Install-Package SharpGrabber.Adult -Version 1.0.2\n\n## Quick Start\n### 1. Start with building a Grabber\n\n```csharp\nvar grabber = GrabberBuilder.New()\n\t.UseDefaultServices()\n\t.AddYouTube()\n\t.AddVimeo()\n\t.Build();\n```\n    \nThis will result in the creation of a \"multi-grabber\".\n\nWhat grabbers you can \"add\" depends on what packages you've installed. In this example, we have installed YouTube and Vimeo packages.\n\n### 2. Grab from a URI\n\n```csharp\nvar result = await grabber.GrabAsync(new Uri(\"https://www.youtube.com/watch?v=LTseTg48568\"));\n```\n\nNo matter what website the URI refers to, the multi-grabber will detect the provider and put the right grabber to use.\n\n### 3. Process the Result\n\n```csharp\nvar info = result.Resource\u003cGrabbedInfo\u003e();\nConsole.WriteLine(\"Time Length: {0}\", info.Length);\nvar images = result.Resources\u003cGrabbedImage\u003e();\nvar videos = result.Resources\u003cGrabbedMedia\u003e();\n```\n\n## Upgrade From 1.x to 2.x\nATTENTION! Beware of the breaking changes since v2.0 that requires you to update your code.\nThe good news is no functionality has been removed, so with a minor refactoring, you should be good to go!\nI strongly recommend that you upgrade, v2 has a much cleaner structure and code.\n\n\u003c/details\u003e\n        \n## SharpGrabber.Desktop\n### Version 4.8\n- Grabs from every source supported by the official grabbers i.e. grabbers implemented in this Git repository.\n- Displays information and downloads videos, audios, images etc.\n- Merges YouTube separated audio and video streams into complete media files; as well as joining HLS segments!\n- BlackWidow integrated\n\nRequirements of the cross-platform desktop application to run and operate correctly: \n - .NET Core 3.1\n - **Shared libraries** of *ffmpeg* copied into the `ffmpeg` directory alongside the application executable files for media manipulation support.\n   - On Windows, you may download the latest \u003ca href=\"https://github.com/BtbN/FFmpeg-Builds/releases\"\u003eBtbN ffmpeg build\u003c/a\u003e.\n   - On any OS check out the \u003ca href=\"https://ffmpeg.org/download.html\"\u003eofficial website\u003c/a\u003e.\n \n Download the latest binaries from the \u003ca href=\"https://github.com/dotnettools/SharpGrabber/releases\"\u003ereleases page\u003c/a\u003e.\n    \n\u003cimg src=\"./assets/SharpGrabberDesktop-ScreenShot-4.0-2.png\" alt=\"SharpGrabber.Desktop Application\" /\u003e\n\n# Introducing BlackWidow\n\u003cimg src=\"./assets/blackwidow-logo-text-sm.png\" alt=\"SharpGrabber\" height=\"92\" /\u003e\n\nBlackWidow executes scripts written specifically for grabbing, rather than relying on .NET assemblies.\n- **Always Up-to-date:** The scripts are always kept up-to-date at runtime; so the functionality of the host application won't break as the sources change - at least not for long!\n- **ECMAScript Support:** Supports JavaScript/ECMAScript out of the box.\n- **Easy Maintenance:** *JavaScript* is quick to code and welcomes many developers. This helps contributors to quickly write new grabbers or fix the existing ones.\n- **Secure**: The scripts are executed in a sandbox environment, and they only have access to what the BlackWidow API exposes to them.\n- **Highly Customizable:** Almost everything is open for extension or replacement. Make new script interpreters, custom grabber repositories, or roll out your own interpreter APIs\n\n\u003ca href=\"blackwidow\"\u003eRead more + Documentation\u003c/a\u003e\n    \n## Contribution\nYou are most welcome to contribute!\n- Authentication mechanisms for grabbers e.g. Instagram Login\n- Support for more media providers such as *DailyMotion*, *Facebook*, *Twitch* etc.\n- Accelerate downloads in the desktop app (like a download manager)\n\n## Disclaimer\nSharpGrabber library, BlackWidow and other projects and libraries provided in this repository are developed for educational purposes.\nSince it's illegal to extract copyrighted data, you should make sure your usage of the tools provided here complies with copyright laws.\nContributors to these tools are not responsible for any copyright infringement that may occur per usage.\n\n## License\nCopyright \u0026copy; 2023 SharpGrabber contributors\u003cbr /\u003e\n\nThis project is licensed under the GNU Lesser General Public License (LGPL) version 3.\n\nTHIS 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.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotnettools%2Fsharpgrabber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdotnettools%2Fsharpgrabber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotnettools%2Fsharpgrabber/lists"}