{"id":37155426,"url":"https://github.com/uget/uget","last_synced_at":"2026-01-14T18:22:57.314Z","repository":{"id":30084424,"uuid":"33634038","full_name":"uget/uget","owner":"uget","description":"(WIP) Universal Getter of remote files","archived":false,"fork":false,"pushed_at":"2019-05-11T22:46:05.000Z","size":189,"stargazers_count":50,"open_issues_count":5,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-06-19T00:26:03.050Z","etag":null,"topics":["cli","ddl","downloader","downloadmanager","go","golang","uget"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uget.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}},"created_at":"2015-04-08T21:48:41.000Z","updated_at":"2023-10-24T15:46:30.000Z","dependencies_parsed_at":"2022-09-17T14:03:48.027Z","dependency_job_id":null,"html_url":"https://github.com/uget/uget","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/uget/uget","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uget%2Fuget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uget%2Fuget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uget%2Fuget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uget%2Fuget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uget","download_url":"https://codeload.github.com/uget/uget/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uget%2Fuget/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28430680,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cli","ddl","downloader","downloadmanager","go","golang","uget"],"created_at":"2026-01-14T18:22:56.719Z","updated_at":"2026-01-14T18:22:57.289Z","avatar_url":"https://github.com/uget.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"uget (universal get)\n====================\n\n[![Travis Build Status](https://travis-ci.org/uget/uget.svg?branch=master)](https://travis-ci.org/uget/uget)\n\n# Table of contents\n\n1. Introduction\n2. Getting started\n  1. Installation\n  2. Code examples\n  3. CLI\n3. Contributing\n4. Reporting bugs\n\n-------------------\n\n# 1. Introduction\n\nThis project aims at providing an API / CLI for downloading remote files,\nfocusing mainly on premium file-hosters.\n\nThis repository holds the core project and aims to be very flexible.\nCheck out the supported providers at the [other repository](https://github.com/uget/providers)\n \n**WARNING: This package is under heavy development, so documentation may fall behind and the APIs may change.**\n\n# 2. Getting started\n\n## 2.1 Installation\n\nIt's simple! Install Go, setup your `$GOPATH` and run:  \n`go install github.com/uget/uget`\n\n## 2.2 Library usage\n\nIt's best to check out the [cli code](cli/commands.go) for examples.\n\nDownloading a multitude of links:\n\n```go\nimport \"github.com/uget/uget/core\"\n\n// First, get your links from somewhere:\nurls := ...\n// Then, create a new downloader:\ndownloader := core.NewClient()\n// Add those links to the downloader's queue:\nwaitGroup := downloader.AddURLs(urls)\n// Register some callbacks:\ndownloader.OnDownload(func(download *core.Download) {\n\t// Access the File field:\n\tdownload.File.Name()\n\tdownload.File.URL()\n\tdownload.File.Length()\n\n\t// hashObject is a hash.Hash used for generating a checksum\n\tchecksum, algorithmName, hashObject := download.File.Checksum()\n\n\t// the provider, e.g. basic / imgur.com / uploaded.net / oboom.com etc.\n\t// see a list of all providers at https://github.com/uget/providers\n\tdownload.File.Provider()\n\n\t// wait for download to finish:\n\tdownload.Wait()\n\t// and get the error if there was one:\n\tdownload.Err()\n\n\t// OR: print download status every second\n\n\tinterval := 1*time.Second\n\tticker := time.NewTicker(interval)\n\tdefer ticker.Stop()\n\n\tfmt.Printf(\"%s: started\\n\", download.File.Name())\n\tfor {\n\t\tselect {\n\t\tcase \u003c-ticker.C:\n\t\t\tpercentage := download.Progress() / download.File.Size()\n\t\t\tfmt.Printf(\"  %s: %.2f%% of %d\\n\", download.File.Name(), percentage, download.File.Size())\n\t\tcase \u003c-download.Waiter():\n\t\t\tif download.Err() != nil {\n\t\t\t\tfmt.Printf(\"  %s: ERROR! %v\\n\", download.File.Name(), download.Err())\n\t\t\t} else {\n\t\t\t\tfmt.Printf(\"  %s: DONE!\\n\", download.File.Name())\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n})\n// Start client (in the background)\ndownloader.Start()\n\n// Wait for the jobs provided earlier to finish\nwaitGroup.Wait()\n\n// No downloads left, all jobs done.\n```\n\n## 2.3 CLI\n\n### Implemented\n\nGet remote files:\n```bash\nuget get CONTAINER_SPEC...\n```\n\nRead meta information on remote files:\n```bash\nuget meta CONTAINER_SPEC...\n```\n\n`CONTAINER_SPEC` can be a plain file with a list of URLs.\nIf option `-i` is passed, the arguments are interpreted as direct URLs instead.\n\nAdd an account to a provider. You will be prompted for your credentials.\n```bash\nuget accounts add [PROVIDER]\n```\n\nList your saved accounts.\n```bash\nuget accounts list [PROVIDER]\n```\n\n### Not (fully) implemented yet\n\nStart server as daemon.\n```bash\nuget daemon\n```\n\nStart server in foreground.\n```bash\nuget server\n```\n\nPush a list of files to the listening server.\n```bash\nuget push [OPTIONS...] CONTAINER_SPEC...\n```\n\nTell the daemon to drop a container (or a file)\n```bash\nuget drop [ID]\n```\n\nPause the daemon.\n```\nuget pause [--soft]\n```\n\nContinue the daemon.\n```\nuget continue\n```\n\nList the downloads.\n```\nuget list [CONTAINER_ID]\n```\n\n# 3. Contributing\n\nContributions are welcome! Fork -\u003e Push -\u003e Pull request.\n\n# 4. Bug report / suggestions\n\nJust create an issue! I will try to reply as soon as possible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuget%2Fuget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuget%2Fuget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuget%2Fuget/lists"}