{"id":17696111,"url":"https://github.com/ovyerus/bandsnatch","last_synced_at":"2025-04-04T20:06:31.843Z","repository":{"id":62445071,"uuid":"544431639","full_name":"Ovyerus/bandsnatch","owner":"Ovyerus","description":"A CLI batch downloader for your Bandcamp collection.","archived":false,"fork":false,"pushed_at":"2025-01-25T23:51:44.000Z","size":269,"stargazers_count":71,"open_issues_count":5,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T19:07:11.745Z","etag":null,"topics":["bandcamp","bandcamp-downloader","bulk-download","hacktoberfest","music","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Ovyerus.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-10-02T13:14:43.000Z","updated_at":"2025-03-19T22:41:32.000Z","dependencies_parsed_at":"2023-11-19T03:24:00.129Z","dependency_job_id":"6705812f-3174-47d6-972f-cdcf2f9a013b","html_url":"https://github.com/Ovyerus/bandsnatch","commit_stats":{"total_commits":92,"total_committers":5,"mean_commits":18.4,"dds":0.3586956521739131,"last_synced_commit":"5c56e33fb31488925273cc3021f7284ed68b8040"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ovyerus%2Fbandsnatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ovyerus%2Fbandsnatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ovyerus%2Fbandsnatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ovyerus%2Fbandsnatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ovyerus","download_url":"https://codeload.github.com/Ovyerus/bandsnatch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242669,"owners_count":20907133,"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":["bandcamp","bandcamp-downloader","bulk-download","hacktoberfest","music","rust"],"created_at":"2024-10-24T14:43:18.954Z","updated_at":"2025-04-04T20:06:31.823Z","avatar_url":"https://github.com/Ovyerus.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bandsnatch\n\n\u003e A CLI batch downloader for your Bandcamp collection.\n\nBandsnatch is a Rust tool for downloading all of your Bandcamp purchases all at\nonce in your desired format, and being able to be run multiple times when you\nbuy new releases.\n\nThis project is heavily inspired by Ezwen's\n[bandcamp-collection-downloader](https://framagit.org/Ezwen/bandcamp-collection-downloader),\nwhich I used myself before this, specifically existing to help me learn Rust,\nbut also to add some improvements over it that I've wanted.\n\n## State of the Project\n\nThis tool is still currently a work in progress, so bugs and other weirdness may\noccur. If anything weird happens or something breaks, please open an issue about\nit with information and reproduction steps if possible. Specifically testing use\nof this with large collections would be very helpful to see if there's any areas\nthat I need to improve in.\n\nIf you're a developer poking around in the code, please note that this is my\nfirst proper project written using Rust, so code quality may be subpar,\nespecially in terms of memory usage. If you have any ideas to improve the\nproject in general I'd love to hear them.\n\n## Usage\n\nThe most basic usage is along the lines of\n`bandsnatch run -f \u003cformat\u003e \u003cusername\u003e`, as it will try to automatically fetch\ncookies from a local `cookies.json`\u003c!-- or from Firefox (TODO)--\u003e. But if this\nfails you can provide the `-c` option with a path to a cookies file to use.\n\nFor more advanced usage, you can run `bandsnatch run -h` to get output similar\nto the following.\n\n```\nRun Bandsnatch to download your collection\n\nUsage: bandsnatch run [OPTIONS] --format \u003cAUDIO_FORMAT\u003e \u003cUSER\u003e\n\nArguments:\n  \u003cUSER\u003e  Name of the user to download releases from (must be logged in through cookies) [env: BS_USER=]\n\nOptions:\n  -f, --format \u003cAUDIO_FORMAT\u003e   The audio format to download the files in [env: BS_FORMAT=] [possible values: flac, wav, aac-hi, mp3-320, aiff-lossless, vorbis, mp3-v0, alac]\n  -c, --cookies \u003cCOOKIES_FILE\u003e  [env: BS_COOKIES=]\n      --debug                   Enables some extra debug output in certain scenarios [env: BS_DEBUG=]\n  -d, --dry-run                 Return a list of all tracks to be downloaded, without actually downloading them\n  -F, --force                   Ignores any found cache file and instead does a from-scratch download run [env: BS_FORCE=]\n  -j, --jobs \u003cJOBS\u003e             The amount of parallel jobs (threads) to use [env: BS_JOBS=] [default: 4]\n  -n, --limit \u003cLIMIT\u003e           Maximum number of releases to download. Useful for testing [env: BS_LIMIT=]\n  -o, --output-folder \u003cFOLDER\u003e  The folder to extract downloaded releases to [env: BS_OUTPUT_FOLDER=] [default: ./]\n  -h, --help                    Print help information\n```\n\nBesides these options, you can also use environment variables with the option\nname in `SCREAMING_SNAKE_CASE`, prefixed with `BS_`, so that if set up correctly\nyou can just run `bandsnatch run` and have it automatically download your\ncollection to the folder you want.\n\n### Example\n\n```\nbandsnatch run -c ./cookies.json -f flac -o ./Music ovyerus\n```\n\nThis would download my entire music collection into a local \"Music\" folder, and\nalso create a `bandcamp-collection-downloader.cache` in the same directory,\nwhich then gets read on future runs in order to skip items it has already\nretrieved.\n\n## Authentication\n\nBecause Bandsnatch does not manage logging into Bandcamp itself, you need to\nprovide it the authentication cookies. For Firefox users, you can extract a\n`cookies.json` with the\n[Cookie Quick Manager extension](https://addons.mozilla.org/en-US/firefox/addon/cookie-quick-manager/),\nand on Chrome, you can use the\n[Get cookies.txt LOCALLY extension](https://chromewebstore.google.com/detail/cclelndahbckbenkjhflpdbgdldlbecc),\nto extract the cookies in the Netscape format, which Bandsnatch also supports.\n\nIf you don't provide the `--cookies` option, Bandsnatch will attempt to\nautomatically find a file named `cookies.json` or `cookies.txt` in the local\ndirectory and load it.\n\n\u003c!-- Failing that, if you use Firefox on Windows or Linux,\nbandsnatch will try to automatically load the cookies from there if possible\n(TODO). --\u003e\n\n## Installing\n\nBinary builds of Bandsnatch are available on our\n[releases page](https://github.com/Ovyerus/bandsnatch/releases) for Windows, Mac\n(both ARM \u0026 Intel), and Linux (various architectures).\n\n### Nix flake\n\nIf you use [Nix](https://nixos.org), Bandsnatch is available as a flake. You can\ntry it out without installing via `nix run` or `nix shell`:\n\n```\nnix run github:ovyerus/bandsnatch -- --help\nnix shell github:ovyerus/bandsnatch\n```\n\nYou can install it permanently with `nix profile install`, or by adding it to\nyour NixOS/Home Manager configuration.\n\n### Homebrew\n\n`brew install ovyerus/tap/bandsnatch`\n\n### Scoop\n\n```\nscoop bucket add ovyerus https://github.com/Ovyerus/bucket\nscoop install bandsnatch\n```\n\n### AUR\n\nBandsnatch is also available on the\n[AUR](https://aur.archlinux.org/packages/bandsnatch). Either use your favourite\nAUR helper, or you can install it manually via the following:\n\n```\ngit clone https://aur.archlinux.org/bandsnatch.git\ncd bandsnatch\nmakepkg -si\n```\n\n### NetBSD (unofficial)\n\nBandsnatch is also available from the\n[official NetBSD repositories](https://pkgsrc.se/net/bandsnatch/), but is not\nmaintaned by myself.\n\n```\npkgin install bandsnatch\n```\n\n### Crate\n\n`cargo install bandsnatch`\n\n### From source\n\nPull this repository and run `cargo build --release`, and look for the\n`bandsnatch` binary in `./target/release/`.\n\n## License\n\nThis program is licensed under the MIT license (see [LICENSE](./LICENSE) or\nhttps://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovyerus%2Fbandsnatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovyerus%2Fbandsnatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovyerus%2Fbandsnatch/lists"}