Clarify and expand code comments
Add README and LICENSE
Use argument for directory path in grab.sh
This project provides a go script gumroad_fetch.go
to list all the files
associated with a valid gumroad subscription and the URL of the resource, and
a shell script grab.sh
that uses that list to incrementally download every
file in the subscription, or every file you want to download. grab.sh
is meant
to work well over a long period of time and several download sessions that can
be stopped and continued at any time.
Tested under Linux with Go (1.18) and dash shell (0.5.11.5). Simple and portable but probably has some easily fixable line delimiter bug on Mac or under Windows using Cygwin or similar.
gumroad_fetch.go
requires Go to build but otherwise only depends on the
stdlib. grab.sh
requires wget and a POSIX compliant shell.
There are some constants in gumroad_fetch.go that need to be set.
These are GUMROAD_EMAIL and RESOURCE_ID. GUMROAD_EMAIL is the email that is
subscribed to a feed. You can get the RESOURCE_ID from the URL you use to
access the feed, for example if the URL is
https://app.gumroad.com/d/54ca9138c0de04a832aa135fd31925b7
, the RESOURCE_ID
is 54ca9138c0de04a832aa135fd31925b7
.
These are constants rather than user input because handling user input would mean handling user input.
$ $EDITOR gumroad_fetch.go # Set constants
$ go build gumroad_fetch.go # Build script
You can download all files available in the subscription with ./grab.sh [directory]
.
However if you want to only download some of the files, the shell script has
logic to only download the files remaining in a file defined in the shell
script, by default ./list.csv
.
$ ./gumroad_fetch > list.csv # Pre-generate list.csv
$ $EDITOR list.csv # Remove some lines from list.csv
$ ./grab.sh # Begin archival - grab.sh will rewrite list.csv,
# but won't overwrite any removed lines