{"id":13489351,"url":"https://github.com/melbahja/got","last_synced_at":"2025-05-16T12:03:50.790Z","repository":{"id":39659026,"uuid":"270136964","full_name":"melbahja/got","owner":"melbahja","description":"Got: Simple golang package and CLI tool to download large files faster 🏃 than cURL and Wget!","archived":false,"fork":false,"pushed_at":"2024-01-16T16:07:28.000Z","size":184,"stargazers_count":704,"open_issues_count":15,"forks_count":44,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-05-22T11:31:47.667Z","etag":null,"topics":["chunks","cli","download-file","download-photos","download-songs","download-videos","downloader","fast-downward","go","golang","hacktoberfest","partial-content"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/melbahja.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":"2020-06-06T23:46:47.000Z","updated_at":"2024-06-18T13:40:01.164Z","dependencies_parsed_at":"2024-01-13T00:38:31.725Z","dependency_job_id":"edb5870f-c812-4b5b-af38-16df3f57097e","html_url":"https://github.com/melbahja/got","commit_stats":{"total_commits":140,"total_committers":14,"mean_commits":10.0,"dds":"0.37857142857142856","last_synced_commit":"9c99581287dd94c9fceee95e5c9b502941903497"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melbahja%2Fgot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melbahja%2Fgot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melbahja%2Fgot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melbahja%2Fgot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/melbahja","download_url":"https://codeload.github.com/melbahja/got/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247994120,"owners_count":21030050,"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":["chunks","cli","download-file","download-photos","download-songs","download-videos","downloader","fast-downward","go","golang","hacktoberfest","partial-content"],"created_at":"2024-07-31T19:00:23.979Z","updated_at":"2025-04-09T07:03:51.016Z","avatar_url":"https://github.com/melbahja.png","language":"Go","readme":"\u003cdiv align=\"center\"\u003e\n\t\u003ch1\u003eGot.\u003c/h1\u003e\n\t\u003ch4 align=\"center\"\u003e\n\t\tSimple and fast concurrent downloader.\n\t\u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e ❘\n\t\u003ca href=\"#command-line-tool-usage\"\u003eCLI Usage\u003c/a\u003e ❘\n\t\u003ca href=\"#module-usage\"\u003eModule Usage\u003c/a\u003e ❘\n\t\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n\u003c/p\u003e\n\n![Tests](https://github.com/melbahja/got/workflows/Test/badge.svg)\n\n## Comparison\n\nComparison in cloud server:\n\n```bash\n\n[root@centos-nyc-12 ~]# time got -o /tmp/test -c 20 https://proof.ovh.net/files/1Gb.dat\nURL: https://proof.ovh.net/files/1Gb.dat done!\n\nreal    0m8.832s\nuser    0m0.203s\nsys 0m3.176s\n\n\n[root@centos-nyc-12 ~]# time curl https://proof.ovh.net/files/1Gb.dat --output /tmp/test1\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n\t\t\t\t\t\t\t\t Dload  Upload   Total   Spent    Left  Speed\n100 1024M  100 1024M    0     0  35.6M      0  0:00:28  0:00:28 --:--:-- 34.4M\n\nreal    0m28.781s\nuser    0m0.379s\nsys 0m1.970s\n\n```\n\n\n## Installation\n\n#### Download and install the latest [release](https://github.com/melbahja/got/releases):\n```bash\n# go to tmp dir.\ncd /tmp\n\n# Download latest version.\ncurl -sfL https://git.io/getgot | sh\n\n# Make the binary executable.\nchmod +x /tmp/bin/got\n\n# Move the binary to your PATH\nsudo mv /tmp/bin/got /usr/bin/got\n```\n\n#### Or Go ahead compile it yourself:\n```bash\ngo install github.com/melbahja/got/cmd/got@latest\n```\n\n#### Or from the AUR\nInstall [`got`](https://aur.archlinux.org/packages/got/) for the latest release version or `got-git` for the latest development version. \n\n\u003e **Note:** these packages are not maintained by melbahja\n\n## Command Line Tool Usage\n\n#### Simple usage:\n```bash\ngot https://example.com/file.mp4\n```\n\n#### You can specify destination path:\n```bash\ngot -o /path/to/save https://example.com/file.mp4\n```\n\n#### You can download multiple URLs and save them to directory:\n```bash\ngot --dir /path/to/dir https://example.com/file.mp4 https://example.com/file2.mp4\n```\n\n#### You can download multiple URLs from a file:\n```bash\ngot --dir /path/to/dir -f urls.txt\n```\n\n### You can pipe multiple URLs:\n```bash\ncat urls.txt | got --dir /path/to/dir\n```\n\n#### Docs for available flags:\n```bash\ngot help\n```\n\n\n## Module Usage\n\nYou can use Got to download large files in your go code, the usage is simple as the CLI tool:\n\n```bash\npackage main\n\nimport \"github.com/melbahja/got\"\n\nfunc main() {\n\n\tg := got.New()\n\n\terr := g.Download(\"http://localhost/file.ext\", \"/path/to/save\")\n\n\tif err != nil {\n\t\t// ..\n\t}\n}\n\n```\n\nFor more see [PkgDocs](https://pkg.go.dev/github.com/melbahja/got).\n\n## How It Works?\n\nGot takes advantage of the HTTP range requests support in servers [RFC 7233](https://tools.ietf.org/html/rfc7233), if the server supports partial content Got split the file into chunks, then starts downloading and merging the chunks into the destinaton file concurrently.\n\n\n## License\n\nGot is provided under the [MIT License](https://github.com/melbahja/got/blob/master/LICENSE) © Mohammed El Bahja.\n","funding_links":[],"categories":["Go","cli","Other"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelbahja%2Fgot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmelbahja%2Fgot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelbahja%2Fgot/lists"}