-
Notifications
You must be signed in to change notification settings - Fork 4
/
captions.clj
181 lines (160 loc) · 5.34 KB
/
captions.clj
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
(ns happygapi.youtube.captions
"YouTube Data API: captions.
Supports core YouTube features, such as uploading videos, creating and managing playlists, searching for content, and much more.
See: https://developers.google.com/youtube/v3api/reference/rest/v3/captions"
(:require [cheshire.core :as json]
[clj-http.client :as http]
[happy.util :as util]))
(defn delete$
"https://developers.google.com/youtube/v3api/reference/rest/v3/captions/delete
Required parameters: id
Optional parameters: onBehalfOf, onBehalfOfContentOwner
Deletes a specified caption track."
{:scopes ["https://www.googleapis.com/auth/youtube.force-ssl"
"https://www.googleapis.com/auth/youtubepartner"]}
[auth args]
{:pre [(util/has-keys? args #{:id})]}
(util/get-response
(http/delete
(util/get-url
"https://www.googleapis.com/youtube/v3/"
"captions"
#{:id}
args)
(merge-with
merge
{:throw-exceptions false,
:query-params args,
:accept :json,
:as :json}
auth))))
(defn download$
"https://developers.google.com/youtube/v3api/reference/rest/v3/captions/download
Required parameters: id
Optional parameters: onBehalfOf, onBehalfOfContentOwner, tfmt, tlang
Downloads a caption track. The caption track is returned in its original format unless the request specifies a value for the tfmt parameter and in its original language unless the request specifies a value for the tlang parameter."
{:scopes ["https://www.googleapis.com/auth/youtube.force-ssl"
"https://www.googleapis.com/auth/youtubepartner"]}
[auth args]
{:pre [(util/has-keys? args #{:id})]}
(util/get-response
(http/get
(util/get-url
"https://www.googleapis.com/youtube/v3/"
"captions/{id}"
#{:id}
args)
(merge-with
merge
{:throw-exceptions false,
:query-params args,
:accept :json,
:as :json}
auth))))
(defn insert$
"https://developers.google.com/youtube/v3api/reference/rest/v3/captions/insert
Required parameters: part
Optional parameters: onBehalfOf, onBehalfOfContentOwner, sync
Body:
{:etag string,
:id string,
:kind string,
:snippet {:isLarge boolean,
:trackKind string,
:audioTrackType string,
:name string,
:isCC boolean,
:isDraft boolean,
:isEasyReader boolean,
:status string,
:language string,
:videoId string,
:lastUpdated string,
:failureReason string,
:isAutoSynced boolean}}
Uploads a caption track."
{:scopes ["https://www.googleapis.com/auth/youtube.force-ssl"
"https://www.googleapis.com/auth/youtubepartner"]}
[auth args body]
{:pre [(util/has-keys? args #{:part})]}
(util/get-response
(http/post
(util/get-url
"https://www.googleapis.com/youtube/v3/"
"captions"
#{:part}
args)
(merge-with
merge
{:content-type :json,
:body (json/generate-string body),
:throw-exceptions false,
:query-params args,
:accept :json,
:as :json}
auth))))
(defn list$
"https://developers.google.com/youtube/v3api/reference/rest/v3/captions/list
Required parameters: part, videoId
Optional parameters: id, onBehalfOf, onBehalfOfContentOwner
Returns a list of caption tracks that are associated with a specified video. Note that the API response does not contain the actual captions and that the captions.download method provides the ability to retrieve a caption track."
{:scopes ["https://www.googleapis.com/auth/youtube.force-ssl"
"https://www.googleapis.com/auth/youtubepartner"]}
[auth args]
{:pre [(util/has-keys? args #{:part :videoId})]}
(util/get-response
(http/get
(util/get-url
"https://www.googleapis.com/youtube/v3/"
"captions"
#{:part :videoId}
args)
(merge-with
merge
{:throw-exceptions false,
:query-params args,
:accept :json,
:as :json}
auth))))
(defn update$
"https://developers.google.com/youtube/v3api/reference/rest/v3/captions/update
Required parameters: part
Optional parameters: onBehalfOf, onBehalfOfContentOwner, sync
Body:
{:etag string,
:id string,
:kind string,
:snippet {:isLarge boolean,
:trackKind string,
:audioTrackType string,
:name string,
:isCC boolean,
:isDraft boolean,
:isEasyReader boolean,
:status string,
:language string,
:videoId string,
:lastUpdated string,
:failureReason string,
:isAutoSynced boolean}}
Updates a caption track. When updating a caption track, you can change the track's draft status, upload a new caption file for the track, or both."
{:scopes ["https://www.googleapis.com/auth/youtube.force-ssl"
"https://www.googleapis.com/auth/youtubepartner"]}
[auth args body]
{:pre [(util/has-keys? args #{:part})]}
(util/get-response
(http/put
(util/get-url
"https://www.googleapis.com/youtube/v3/"
"captions"
#{:part}
args)
(merge-with
merge
{:content-type :json,
:body (json/generate-string body),
:throw-exceptions false,
:query-params args,
:accept :json,
:as :json}
auth))))