Go API client for 500px
$ go get -u -v github.com/orijtech/500px/cmd/500px
- By path
$ 500px upload --path ~/Desktop/hills.jpeg --description "Run view" --title "Hills this evening"
- From standard input
$ cat ~/Downloads/source.png | 500px upload --description "Turn up" --title "issa turn up" --tags vegas,evenings
- Preamble
import (
"fmt"
"log"
"github.com/orijtech/500px/v1"
)
- List photos
func listPhotos() {
client, err := px500.NewClient()
if err != nil {
log.Fatal(err)
}
preq := new(px500.PhotoRequest)
preq.LimitPerPage = 10
preq.MaxPageNumber = 2
preq.Feature = px500.FeaturePopular
pagesChan, cancelFn, err := client.ListPhotos(preq)
if err != nil {
log.Fatal(err)
}
count := uint64(0)
for page := range pagesChan {
fmt.Printf("Page: #%d\n\n", page.PageNumber)
for i, photo := range page.Photos {
count += 1
fmt.Printf("#%d: %#v\n\n", i, photo)
}
if count >= 13 {
cancelFn()
}
fmt.Printf("\n\n")
}
}
* Search for photos
```go
func searchForPhotos() {
client, err := px500.NewClient()
if err != nil {
log.Fatal(err)
}
ps := &px500.PhotoSearch{
Term: "the universe",
LimitPerPage: 10,
MaxPageNumber: 2,
}
pagesChan, cancelFn, err := client.SearchPhotos(ps)
if err != nil {
log.Fatal(err)
}
count := uint64(0)
for page := range pagesChan {
fmt.Printf("Page: #%d\n\n", page.PageNumber)
if err := page.Err; err != nil {
fmt.Printf("err: %v\n", err)
continue
}
for i, photo := range page.Photos {
count += 1
fmt.Printf("#%d: %#v\n\n", i, photo)
}
if count >= 13 {
cancelFn()
}
fmt.Printf("\n\n")
}
}
- Retrieve a photo by ID
func findPhotoByID() {
client, err := px500.NewClient()
if err != nil {
log.Fatal(err)
}
photo, err := client.PhotoByID("210717663")
if err != nil {
log.Fatal(err)
}
fmt.Printf("The Photo's info: %#v\n", photo)
}
- Retrieve comments for a photo
func retrieveCommentsForPhoto() {
client, err := px500.NewClient()
if err != nil {
log.Fatal(err)
}
cr := &px500.CommentsRequest{
PhotoID: "210717663",
Nested: true,
}
pagesChan, cancelFn, err := client.CommentsForPhoto(cr)
if err != nil {
log.Fatal(err)
}
count := uint64(0)
for page := range pagesChan {
fmt.Printf("Page: #%d\n\n", page.PageNumber)
if err := page.Err; err != nil {
fmt.Printf("err: %v\n", err)
continue
}
for i, comment := range page.Comments {
count += 1
fmt.Printf("#%d: %#v\n\n", i, comment)
for j, reply := range comment.Replies {
fmt.Printf("\t\tReply: #%d reply: %#v\n\n", j, reply)
}
}
if count >= 24 {
cancelFn()
}
fmt.Printf("\n\n")
}
}
- Upload a photo
func uploadAPhoto() {
client, err := px500.NewOAuth1ClientFromEnv()
if err != nil {
log.Fatal(err)
}
f, err := os.Open("./v1/testdata/sfPanorama.jpeg")
if err != nil {
log.Fatal(err)
}
defer f.Close()
photo, err := client.UploadPhoto(&px500.UploadRequest{
Body: f,
Filename: "billion dollar view",
PhotoInfo: &px500.Photo{
Title: "SF Panorama, Billion Dollar View",
ISO: "iPhone 6",
Tags: []string{"sf", "bayBridge", "California", "Piers"},
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Uploaded photo: %#v\n", photo)
}
- Update a photo
func updatePhoto() {
client, err := px500.NewOAuth1ClientFromEnv()
if err != nil {
log.Fatal(err)
}
photo, err := client.UpdatePhoto(&px500.UpdateRequest{
PhotoID: "211020335",
Content: &px500.Photo{
Title: "Updated in tests",
Tags: []string{"tests", "api-client", "golang"},
Camera: "iphone 6",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Updated photo: %#v\n", photo)
}
- Delete a photo
func deletePhoto() {
client, err := px500.NewOAuth1ClientFromEnv()
if err != nil {
log.Fatal(err)
}
if err := client.DeletePhoto("212664703"); err != nil {
log.Fatal(err)
}
fmt.Printf("Successfully deleted the photo!\n")
}