-
Notifications
You must be signed in to change notification settings - Fork 1
/
photo.go
121 lines (98 loc) · 2.33 KB
/
photo.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package flickr
import (
"fmt"
"strconv"
)
type Photo struct {
Id int
Title string
Description string
PostTS int
URL string
Format string
Views int
Secret string
Server int
Farm int
Username string
UserFullName string
UserId string
UserLocation string
UserIcon string
}
type PhotoRaw struct {
Photo struct {
Id string
Secret string
Server string
Farm int
DateUploaded string
IsFavorite interface{}
License interface{}
Safety_Level interface{}
Rotation interface{}
OriginalSecret string
OriginalFormat string
Owner struct {
NSID string
Username string
Realname string
Location string
IconServer string
IconFarm int
Path_Alias string
}
Title map[string]string
Description map[string]string
// who cares about this shit
Visibility interface{}
Dates interface{}
Editability interface{}
PublicEditability interface{}
Usage interface{}
Comments interface{}
Notes interface{}
People interface{}
Tags interface{}
URLs map[string][]map[string]string
Media interface{}
Stat interface{}
}
}
func (client *Client) GetPhoto(id int) (*Photo, error) {
response, err := client.Request("photos.getInfo", Params{
"photo_id": fmt.Sprintf("%d", id),
})
if err != nil {
return nil, err
}
raw := &PhotoRaw{}
err = Parse(response, raw)
if err != nil {
return nil, err
}
date, err := strconv.Atoi(raw.Photo.DateUploaded)
if err != nil {
return nil, err
}
server, err := strconv.Atoi(raw.Photo.Server)
if err != nil {
return nil, err
}
icon := fmt.Sprintf("https://farm%d.staticflickr.com/%s/buddyicons/%s_r.jpg", raw.Photo.Owner.IconFarm, raw.Photo.Owner.IconServer, raw.Photo.Owner.NSID)
return &Photo{
Id: id,
Title: raw.Photo.Title["_content"],
Description: raw.Photo.Description["_content"],
PostTS: date,
Format: raw.Photo.OriginalFormat,
Secret: raw.Photo.OriginalSecret,
Server: server,
Farm: raw.Photo.Farm,
Username: raw.Photo.Owner.Path_Alias,
UserFullName: raw.Photo.Owner.Realname,
UserId: raw.Photo.Owner.NSID,
UserLocation: raw.Photo.Owner.Location,
UserIcon: icon,
}, nil
}