-
Notifications
You must be signed in to change notification settings - Fork 0
/
vimeo.js
156 lines (136 loc) · 4.44 KB
/
vimeo.js
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import { Vimeo } from "vimeo"
import { config } from "dotenv"
// add .env file to process in dev
config()
const CLIENT_ID = process.env.CLIENT_ID
const CLIENT_SECRET = process.env.CLIENT_SECRET
const ACCESS_TOKEN = process.env.ACCESS_TOKEN
export const TAGG_ID = process.env.TAGG_ID
export const vimeoClient = new Vimeo(CLIENT_ID, CLIENT_SECRET, ACCESS_TOKEN)
// === Vimeo API Calls Used === //
/* Authentication
If you need to generate another credientials set,
console.log the variables from this request and save them
to the .env file at the root. This can also be done on the
Vimeo website.
`scope` is an array of permissions your token needs to access. You
can read more at https://developer.vimeo.com/api/authentication#supported-scopes
*/
// const getToken = async () => {
// const token = await new Promise((resolve, reject) => {
// vimeoClient.generateClientCredentials(["public"], (err, response) => {
// if (err) {
// reject(err)
// }
// const token = response.access_token
// // Other useful information is included alongside the access token,
// // which you can dump out to see, or visit our API documentation.
// const scopes = response.scope
// // We include the final scopes granted to the token. This is
// // important because the user, or API, might revoke scopes during
// // the authentication process.
// console.log(scopes)
// console.log(token)
// resolve(token)
// })
// })
// vimeoClient.setAccessToken(token)
// }
// getToken()
// featured-clips-9-16 showcase for mobile carousel
// https://vimeo.com/manage/showcases/8493940/info
export const getClipsMobile = async (album_id = "8493940") => {
const clipList = await new Promise((resolve, reject) => {
vimeoClient.request(
`/users/${TAGG_ID}/albums/${album_id}/videos`,
(error, body, status_code, headers) => {
console.log("getClipsMobile:", status_code)
if (error) {
console.error(error)
reject(error)
}
resolve(JSON.parse(JSON.stringify(body?.data)))
},
)
})
return clipList
}
// featured-clips-16-9 showcase for desktop carousel
// https://vimeo.com/manage/showcases/8493934/info
export const getClipsDesktop = async (album_id = "8493934") => {
const clipList = await new Promise((resolve, reject) => {
vimeoClient.request(
`/users/${TAGG_ID}/albums/${album_id}/videos`,
(error, body, status_code, headers) => {
console.log("getClipsDesktop:", status_code)
if (error) {
console.error(error)
reject(error)
}
resolve(JSON.parse(JSON.stringify(body?.data)))
},
)
})
return clipList
}
// featured-works showcase
// https://vimeo.com/manage/showcases/8478566/info
export const getWorks = async (album_id = "8478566") => {
const videoList = await new Promise((resolve, reject) => {
vimeoClient.request(
`/users/${TAGG_ID}/albums/${album_id}/videos`,
(error, body, status_code, headers) => {
console.log("getWorks:", status_code)
if (error) {
console.error(error)
reject(error)
}
resolve(JSON.parse(JSON.stringify(body?.data)))
},
)
})
return videoList
}
export const getWork = async (id) => {
const video = await new Promise((resolve, reject) => {
vimeoClient.request(
{
method: "GET",
path: `/videos/${id}`,
userId: TAGG_ID,
},
(err, json, status_code) => {
console.log("getWork:", status_code)
err ? reject(err) : resolve(json)
},
)
})
return video
}
// Thumbnails:
// Create a new set: Go to the advanced settings of a video from vimeo.com to create
// The site will use the most recently created thumbnail.
// https://vimeo.com/blog/post/how-to-turn-your-videos-into-gifs/
export const getMostRecentAnimatedThumb = async (uri) => {
const gifs = await new Promise((resolve, reject) => {
vimeoClient.request(
{
method: "GET",
path: `${uri}/animated_thumbsets`,
userId: TAGG_ID,
},
(error, body, status_code, headers) => {
console.log("getAnimatedThumbs:", status_code)
if (error) {
console.error(error)
reject(error)
}
resolve(JSON.parse(JSON.stringify(body?.data)))
},
)
})
const mostRecent = gifs?.sort(
(thumbA, thumbB) => thumbB.created_on - thumbA.created_on,
)[0]
return mostRecent
}