more things
This commit is contained in:
parent
643e10ad98
commit
52fbd5d6bd
53
README.md
53
README.md
|
@ -12,9 +12,58 @@ It supports concurrently downloading posts, and you can set a maximum number of
|
||||||
|
|
||||||
I made this because I wanted to rewrite one of my previous projects in Go, so I decided to start with this one since it's a pretty small and simple command line tool that encapsulates a lot of concepts in the language (type definition, imports, goroutines, standard libraries, slices, to name a few).
|
I made this because I wanted to rewrite one of my previous projects in Go, so I decided to start with this one since it's a pretty small and simple command line tool that encapsulates a lot of concepts in the language (type definition, imports, goroutines, standard libraries, slices, to name a few).
|
||||||
|
|
||||||
## Installing, Building, etc.
|
## Installing
|
||||||
|
|
||||||
See [here](https://github.com/tjhorner/nplcsv/blob/master/README.md) since it uses the same Makefile.
|
### Prebuilt Binaries
|
||||||
|
|
||||||
|
There is an install script available for Linux/macOS [here](https://github.com/tjhorner/e6dl/blob/master/install.sh). It automatically grabs the latest release (at the time of writing) and saves to `/usr/local/bin/e6dl`.
|
||||||
|
|
||||||
|
### From Source
|
||||||
|
|
||||||
|
Clone repo.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build e6dl then install it to /usr/local/bin
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also install it to a custom path of your choosing:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make install INSTALLPATH="/bin"
|
||||||
|
```
|
||||||
|
|
||||||
|
If you wanna get rid of it:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make uninstall
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
First, install Go.
|
||||||
|
|
||||||
|
Then just:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make build
|
||||||
|
```
|
||||||
|
|
||||||
|
`bin/e6dl` will magically appear. You can also just:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go run main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
To distribute:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make dist
|
||||||
|
```
|
||||||
|
|
||||||
|
3 files will be spit out in the `dist` directory - one for Windows, one for macOS, and one for Linux.
|
||||||
|
|
||||||
|
You can also run `make dist-win`, `make dist-macos`, or `make dist-linux` to build them individually.
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
|
|
10
e621/e621.go
10
e621/e621.go
|
@ -5,6 +5,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Post represents an e621 post object returned by the e621 API.
|
// Post represents an e621 post object returned by the e621 API.
|
||||||
|
@ -43,8 +44,13 @@ type Post struct {
|
||||||
// SerializedDate represents a serialized date passed via JSON
|
// SerializedDate represents a serialized date passed via JSON
|
||||||
type SerializedDate struct {
|
type SerializedDate struct {
|
||||||
JSONClass string `json:"json_class"`
|
JSONClass string `json:"json_class"`
|
||||||
Seconds int `json:"s"`
|
Seconds int64 `json:"s"`
|
||||||
Nanoseconds int `json:"n"`
|
Nanoseconds int64 `json:"n"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Time returns a time.Time object representing the SerializedDate
|
||||||
|
func (date *SerializedDate) Time() time.Time {
|
||||||
|
return time.Unix(0, date.Nanoseconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPostsForTags gets a list of e621 Posts
|
// GetPostsForTags gets a list of e621 Posts
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
latest_release="v0.0.5"
|
||||||
|
|
||||||
|
case $(uname -s) in
|
||||||
|
Darwin*) os="darwin";;
|
||||||
|
Linux*) os="linux";;
|
||||||
|
*)
|
||||||
|
echo "Unsupported system type! Please build directly from source."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $(uname -m) in
|
||||||
|
x86_64*) arch="amd64";;
|
||||||
|
*)
|
||||||
|
echo "Unsupported processor architecture! Please build directly from source."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "Detected system: $os, $arch"
|
||||||
|
echo "Downloading binary for release $latest_release from GitHub..."
|
||||||
|
|
||||||
|
url="https://github.com/tjhorner/e6dl/releases/download/$latest_release/e6dl-$os-$arch"
|
||||||
|
|
||||||
|
curl $url -Lo /usr/local/bin/e6dl
|
||||||
|
chmod +x /usr/local/bin/e6dl
|
||||||
|
|
||||||
|
echo "Done! Installed to /usr/local/bin/e6dl. Simply remove this binary to uninstall."
|
Loading…
Reference in New Issue