Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

orijtech/500px

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

10 Commits

Repository files navigation

500px

Go API client for 500px

CLI

$ go get -u -v github.com/orijtech/500px/cmd/500px

Uploading

  • 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

SDK custom usage

  • 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")
}

About

Go API client for 500px

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /