{"id":33239002,"url":"https://github.com/gudarzi/savehere","last_synced_at":"2025-11-21T13:01:38.138Z","repository":{"id":230699405,"uuid":"775582205","full_name":"gudarzi/SaveHere","owner":"gudarzi","description":"Cloud Download Manager for direct links and media files from Youtube/Spotify/etc with media converter and builtin proxy to bypass restrictions","archived":false,"fork":false,"pushed_at":"2025-06-27T07:12:44.000Z","size":1010,"stargazers_count":107,"open_issues_count":6,"forks_count":31,"subscribers_count":3,"default_branch":"v3.0","last_synced_at":"2025-06-27T08:26:23.071Z","etag":null,"topics":["blazor","cloud","csharp","dotnet","downloader","mediaconverter","pornhubvideodownloader","soundcloud-downloader","spotify","video-downloader","video-streaming","youtube","youtube-downloader"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gudarzi.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,"zenodo":null}},"created_at":"2024-03-21T16:50:33.000Z","updated_at":"2025-06-27T07:12:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"ed175d01-c92a-4898-b9a2-46de6499b54a","html_url":"https://github.com/gudarzi/SaveHere","commit_stats":null,"previous_names":["gudarzi/savehere"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/gudarzi/SaveHere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gudarzi%2FSaveHere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gudarzi%2FSaveHere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gudarzi%2FSaveHere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gudarzi%2FSaveHere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gudarzi","download_url":"https://codeload.github.com/gudarzi/SaveHere/tar.gz/refs/heads/v3.0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gudarzi%2FSaveHere/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285620632,"owners_count":27203062,"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","status":"online","status_checked_at":"2025-11-21T02:00:06.175Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["blazor","cloud","csharp","dotnet","downloader","mediaconverter","pornhubvideodownloader","soundcloud-downloader","spotify","video-downloader","video-streaming","youtube","youtube-downloader"],"created_at":"2025-11-16T19:00:38.868Z","updated_at":"2025-11-21T13:01:38.132Z","avatar_url":"https://github.com/gudarzi.png","language":"C#","funding_links":[],"categories":["Sample Projects"],"sub_categories":["Others"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/3469dbda-700f-4c4c-9682-420bb6905059\" alt=\"Screenshot of SaveHere App\" width=\"45%\"/\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/8cac9045-7b28-4ec8-b309-2f1f1cd969c1\" alt=\"Screenshot of SaveHere App\" width=\"45%\"/\u003e\n  \u003c/div\u003e\n  \u003cbr\u003e\n\u003c/p\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eSaveHere\u003c/h1\u003e\n  \u003ch4\u003eCloud Download Manager\u003c/h4\u003e\n  \u003ch6\u003eIn v3.0, the app has been rewritten from scratch in .Net Blazor\u003c/h6\u003e\n  \u003ch6\u003eYtdlp backend has been added for downloading Video/Audio from Youtube/Soundcloud/...\u003c/h6\u003e\n  \u003ch6\u003eEnable WarpPlus proxy to bypass Youtube restrictions\u003c/h6\u003e\n  \u003ch6\u003eSpotify link converter has been added\u003c/h6\u003e\n  \u003ch6\u003eRJMusic link converter has been added\u003c/h6\u003e\n  \u003ch6\u003eMedia Converter has been added\u003c/h6\u003e\n  \u003cimg \u003e\n\u003c/div\u003e\n\n\n## Table of Contents\n\n- [What this app does](#what-does-it-do)\n- [Dependencies](#dependencies)\n- [How to run this app using docker](#how-to-run-this-app-using-docker)\n- [How to run this app using dotnet](#how-to-run-this-app-using-dotnet)\n- [To Do](#to-do)\n- [How to contribute](#how-to-contribute)\n- [Disclaimer](#disclaimer)\n\n\n## What does it do\n\nSaveHere is a cloud download manager that allows you to download files from either direct links or video/audio from websites like youtube/soundcloud/etc using ytdlp (see [Supported Sites](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)).\n\n\n## Dependencies\n\nSaveHere uses .Net Core with Blazor. To run SaveHere, you need to have either `docker` or `dotnet` installed.\n\nTo run the app using `dotnet`, you will need to have .Net 8+ installed. Checkout [ms/dotnet](https://dotnet.microsoft.com/en-us/download) or [ms/dotnet-sdk](https://dotnet.microsoft.com/en-us/download/dotnet/8.0). If you're running ubuntu, you can just do `sudo apt install dotnet8`.\n\nIn addition, it is recommended that you run SaveHere behind a reverse proxy such as [Nginx](https://nginx.org/) or [Nginx Proxy Manager](https://nginxproxymanager.com/). This will allow you to access the app using your own domain name and SSL certificate, and provide additional security and performance benefits.\n\n_If your IP is restricted by YouTube or other websites, you'll need a proxy to bypass the restrictions. The app has a built-in proxy service that you can use. To activate it, visit the proxy page, click 'Install,' then 'Start,' and wait for the proxy service to connect properly._\n\nThe Media Converter component uses [ffmpeg](https://www.ffmpeg.org/) for converting media to other formats. `ffmpeg` is already installed in the `docker` image. But if you're not using the docker image, you need install it yourself.\n\n\n## How to run this app using docker\n\nTo run SaveHere using `docker`, follow these steps:\n\n1. Create a file named `docker-compose.yml` and fill it with this:\n```docker\nservices:\n savehere:\n   image: ghcr.io/gudarzi/savehere:latest\n   environment:\n     - ASPNETCORE_ENVIRONMENT=Production\n     - ASPNETCORE_HTTP_PORTS=8080\n     #- ASPNETCORE_HTTPS_PORTS=8081\n     - SIGNALR_HUB_URL=http://localhost:8080/DownloadProgressHub\n     - BASIC_AUTH_USERNAME=\"\" # Provide Basic Auth Username If Required\n     - BASIC_AUTH_PASSWORD=\"\" # Provide Basic Auth Password If Required\n     - PUID=1000\n     - PGID=1000\n     - \"urls=http://0.0.0.0:8080\"\n   ports:\n     - \"172.17.0.1:18480:8080\"\n     #- \"172.17.0.1:18481:8081\"\n   volumes:\n     - ./downloads:/app/downloads # Remove this if you experience very long loading times\n     - ./db:/app/db # Remove this if you experience very long loading times\n   user: 0:0\n```\n\n2. Run the app using this command:\n```bash\ndocker compose pull\ndocker compose up -d --build --force-recreate\n```\n\n3. Now the app is available at `172.17.0.1:18480`. \n\n_You can use `\"0.0.0.0:18480:8080\"` to publish the app on all available interfaces._\n\n_If you encounter any errors about write permissions or corrupt database, just remove folders `db` and `downloads` that the app has created._\n\n_If you're running the app behind a basic auth, provide `BASIC_AUTH_USERNAME` and `BASIC_AUTH_PASSWORD` environment variables in the docker-compose configs._\n\n\n## How to run this app using dotnet\n\nTo run SaveHere using `dotnet`, follow these steps:\n\n1. Clone the repository from GitHub and navigate into the directory:\n```bash\ngit clone https://github.com/gudarzi/SaveHere.git\ncd SaveHere\n```\n\n2. Build the app:\n```bash\ndotnet build SaveHere/SaveHere/SaveHere.csproj -c Release\n```\n\n3. Navigate to your app directory:\n```bash\ncd SaveHere/SaveHere/bin/Release/net8.0/\n```\n\n4. Run the app:\n```bash\ndotnet SaveHere.dll --urls=http://127.0.0.1:7777\n```\n\nNow the app is running at localhost `127.0.0.1` port `7777`.\n\nIf you're running the app behind a basic auth, set these 2 environment variables before running the app.\n\nLinux\n```bash\nexport BASIC_AUTH_USERNAME=\"your_username\"\nexport BASIC_AUTH_PASSWORD=\"your_password\"\n```\n\nWindows cmd\n```cmd\nset BASIC_AUTH_USERNAME=your_username\nset BASIC_AUTH_PASSWORD=your_password\n```\n\nWindows powershell\n```powershel\n$env:BASIC_AUTH_USERNAME = \"your_username\"\n$env:BASIC_AUTH_PASSWORD = \"your_password\"\n```\n\n## To Do\n- [ ] Add user accounts and set their access policies\n- [x] Add youtube downloader\n- [x] Add spotify downloader\n- [x] Add rjmusic downloader\n- [ ] Add terminal\n- [ ] Add full file manager\n- [x] Add ~~temporary~~ short links\n- [x] Check [issues](https://github.com/gudarzi/SaveHere/issues) for more!\n\n\n## How to contribute\n\nI welcome contributions from the community to help improve SaveHere. If you're interested in contributing, please check the [To Do](#to-do) list or take a look at the project's [issues](https://github.com/gudarzi/SaveHere/issues) page to see if there are any open issues that you can help with. You can also submit pull requests with bug fixes, new features, or other improvements. Before submitting a pull request, please make sure that your code follows the project's coding standards and that all tests are passing. I will review all pull requests as soon as possible and provide feedback if necessary.\n\n\n## Disclaimer\n\nThis is a hobby project that I work on in my spare time. While I try to make it as good as possible, I cannot guarantee that it is free of bugs or errors, or that it will meet your specific needs. As such, I cannot be held responsible for any damage or loss that may result from using this project.\n\nI welcome any contributions that can help improve the project, but I cannot guarantee that I will be able to incorporate all suggested changes or respond to all feedback. I also reserve the right to reject any contributions that I deem inappropriate or not in line with the project's goals.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgudarzi%2Fsavehere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgudarzi%2Fsavehere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgudarzi%2Fsavehere/lists"}