imperialwool commited on
Commit
f0b744f
1 Parent(s): e7ab40f

api doc change

Browse files
app.py CHANGED
@@ -3,7 +3,7 @@ from flask import *
3
  from flask_limiter import Limiter
4
  from flask_limiter.util import get_remote_address
5
 
6
- from routes.helpers import checkSignature
7
  from routes import *
8
 
9
  app = Flask(__name__)
@@ -84,5 +84,17 @@ def getBMPreview(): return osuApi.getPreview(request)
84
  def getBMFull(): return osuApi.getFull(request)
85
 
86
  if __name__ == "__main__":
 
 
 
 
 
 
 
 
 
 
 
 
87
  app.run(host="0.0.0.0", port=7860)
88
 
 
3
  from flask_limiter import Limiter
4
  from flask_limiter.util import get_remote_address
5
 
6
+ from routes.helpers import checkSignature, configFile
7
  from routes import *
8
 
9
  app = Flask(__name__)
 
84
  def getBMFull(): return osuApi.getFull(request)
85
 
86
  if __name__ == "__main__":
87
+ VERSION = '1.0 build70'
88
+
89
+ config = configFile()
90
+ with open(config['config-path'], "w") as outfile:
91
+ config['buildVersion'] = VERSION
92
+ json.dump(config, outfile)
93
+ with open(config['openapi-yaml-path'], "r+w") as outfile:
94
+ info = outfile.read()
95
+ outfile.seek(0)
96
+ outfile.write(info.replace('$VERSION_VARIABLE$', VERSION))
97
+ outfile.truncate()
98
+
99
  app.run(host="0.0.0.0", port=7860)
100
 
routes/config.json CHANGED
@@ -1,9 +1,15 @@
1
  {
2
  "url": "https://imperialwool-funapi.hf.space",
 
3
  "full-path": "/app/static/full",
4
  "temp-path": "/app/static/temp",
5
  "static-path": "/app/static",
6
  "previews-path": "/app/static/previews",
 
 
 
 
7
  "signatures-db": "/app/signatures.db",
8
- "buildVersion": "1.0 build62"
 
9
  }
 
1
  {
2
  "url": "https://imperialwool-funapi.hf.space",
3
+
4
  "full-path": "/app/static/full",
5
  "temp-path": "/app/static/temp",
6
  "static-path": "/app/static",
7
  "previews-path": "/app/static/previews",
8
+
9
+ "config-path": "/app/routes/config.json",
10
+ "openapi-yaml-path": "/app/static/api.yaml",
11
+
12
  "signatures-db": "/app/signatures.db",
13
+
14
+ "buildVersion": "1.0 build63"
15
  }
routes/osuApi/getFull.py CHANGED
@@ -44,7 +44,7 @@ def getFull(request):
44
  if query != None:
45
  fffff = findSong(request)
46
  if fffff['status'] == "error": return fffff
47
- beatmapId = fffff['details']['result'][rand(0,len(fffff['details']['result']))]['beatmapId']
48
  if os.path.exists(f"{config['full-path']}/{beatmapId}.ogg"):
49
  return {"status": "pass", "details": {"code": 200, "result": f"{config['url']}/static/full/{beatmapId}.ogg"}}
50
  tryment = get(f"https://kitsu.moe/api/audio/{beatmapId}", allow_redirects=True)
@@ -54,7 +54,7 @@ def getFull(request):
54
  audio_output = ffmpeg.output(audio_input, f"{config['full-path']}/{beatmapId}.ogg", audio_bitrate="96K")
55
  ffmpeg.run(audio_output)
56
  helpers.deleteAudio(f"temp/{beatmapId}.ogg")
57
- return {"status": "pass", "details": {"code": int(tryment.status_code), "result": f"{config['url']}/static/full/{beatmapId}.ogg"}}
58
  else:
59
  return {"status": "error", "details": {"code": int(tryment.status_code), "answer": tryment.text}}
60
  return {}
 
44
  if query != None:
45
  fffff = findSong(request)
46
  if fffff['status'] == "error": return fffff
47
+ beatmapId = fffff['details']['result'][rand(0,len(fffff['details']['result'])-1)]['beatmapId']
48
  if os.path.exists(f"{config['full-path']}/{beatmapId}.ogg"):
49
  return {"status": "pass", "details": {"code": 200, "result": f"{config['url']}/static/full/{beatmapId}.ogg"}}
50
  tryment = get(f"https://kitsu.moe/api/audio/{beatmapId}", allow_redirects=True)
 
54
  audio_output = ffmpeg.output(audio_input, f"{config['full-path']}/{beatmapId}.ogg", audio_bitrate="96K")
55
  ffmpeg.run(audio_output)
56
  helpers.deleteAudio(f"temp/{beatmapId}.ogg")
57
+ return {"status": "pass", "details": {"code": int(tryment.status_code), "name": f"{beatmapId}.ogg", "result": f"{config['url']}/static/full/{beatmapId}.ogg"}}
58
  else:
59
  return {"status": "error", "details": {"code": int(tryment.status_code), "answer": tryment.text}}
60
  return {}
routes/osuApi/getPreview.py CHANGED
@@ -34,5 +34,6 @@ def getPreview(request):
34
  if query != None:
35
  fffff = findSong(request)
36
  if fffff['status'] == "error": return fffff
37
- return {"status": "pass", "details": {"code": fffff['details']['code'], "result": "https://b.ppy.sh/preview/{}.mp3".format(fffff['details']['result'][rand(0,len(fffff['details']['result']))]['beatmapId'])}}
 
38
  return {}
 
34
  if query != None:
35
  fffff = findSong(request)
36
  if fffff['status'] == "error": return fffff
37
+ rBId = fffff['details']['result'][rand(0,len(fffff['details']['result'])-1)]['beatmapId']
38
+ return {"status": "pass", "details": {"code": fffff['details']['code'], "name": "{rBId}.mp3", "result": f"https://b.ppy.sh/preview/{rBId}.mp3"}}
39
  return {}
routes/siteRoutes/sigGen.py CHANGED
@@ -23,7 +23,7 @@ def signatureGen(request):
23
  query = db.query(f"INSERT INTO `table` (`key`, `endtime`, `creatorKey`) VALUES (\"{key}\", \"{endtime}\", \"{creatorKey}\")")
24
 
25
  if query['status']:
26
- return {"status": "ok", "result": key, "endtime": endtime}
27
  else:
28
  return {"status": "error", "details": {"error_code": -1, "error_details": "This key already got signature"}}
29
 
 
23
  query = db.query(f"INSERT INTO `table` (`key`, `endtime`, `creatorKey`) VALUES (\"{key}\", \"{endtime}\", \"{creatorKey}\")")
24
 
25
  if query['status']:
26
+ return {"status": "pass", "result": key, "endtime": endtime}
27
  else:
28
  return {"status": "error", "details": {"error_code": -1, "error_details": "This key already got signature"}}
29
 
routes/witaiApi/recognizeVoice.py CHANGED
@@ -36,10 +36,10 @@ def recognizeVoice(request):
36
  resp = e
37
  helpers.deleteAudio(f"temp/{fileId}{fileExt}")
38
  try:
39
- if resp['text'] == "": return {"status": "ok", "result": "", "details": ""}
40
  except: pass
41
  if noEx:
42
 
43
- if extendInfo: return {"status": "ok", "result": helpers.delivering(resp), "details": str(helpers.devRaw(resp))}
44
- else: return {"status": "ok", "result": helpers.delivering(resp)}
45
  else: return {"status": "error", "details": { "error_code": 123, "error_details": resp }}
 
36
  resp = e
37
  helpers.deleteAudio(f"temp/{fileId}{fileExt}")
38
  try:
39
+ if resp['text'] == "": return {"status": "pass", "result": "", "details": ""}
40
  except: pass
41
  if noEx:
42
 
43
+ if extendInfo: return {"status": "pass", "result": helpers.delivering(resp), "details": str(helpers.devRaw(resp))}
44
+ else: return {"status": "pass", "result": helpers.delivering(resp)}
45
  else: return {"status": "error", "details": { "error_code": 123, "error_details": resp }}
static/api.yaml CHANGED
@@ -1,14 +1,268 @@
1
  openapi: 3.0.0
2
  info:
3
  title: woolbot's FunAPI
4
- description: Collection of APIs for bots or just fun by @podvaljoey.
5
- version: 0.1.103
6
  servers:
7
  - url: 'https://imperialwool-funapi.hf.space/'
8
- description: First path, public.
9
- - url: 'https://funapi.dnszilla.bar/'
10
- description: Second path, private.
11
  paths:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  /recognize/api/v1/voice:
13
  get:
14
  tags:
@@ -32,6 +286,7 @@ paths:
32
  in: 'query'
33
  schema:
34
  type: 'string'
 
35
  summary: "This method can help with converting voice into the text."
36
  responses:
37
  200:
@@ -39,7 +294,7 @@ paths:
39
  content:
40
  application/json:
41
  schema:
42
- $ref: "#/components/schemas/RecognizeResult"
43
  400:
44
  description: Bad Request
45
  content:
@@ -73,6 +328,7 @@ paths:
73
  in: 'query'
74
  schema:
75
  type: 'string'
 
76
  summary: "This method can help with converting voice into the text."
77
  responses:
78
  200:
@@ -80,7 +336,42 @@ paths:
80
  content:
81
  application/json:
82
  schema:
83
- $ref: "#/components/schemas/RecognizeResult"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  400:
85
  description: Bad Request
86
  content:
@@ -103,6 +394,7 @@ paths:
103
  in: 'query'
104
  schema:
105
  type: 'string'
 
106
  summary: "This method can help with searching videos on YouTube."
107
  responses:
108
  200:
@@ -110,7 +402,7 @@ paths:
110
  content:
111
  application/json:
112
  schema:
113
- $ref: "#/components/schemas/YTSearchResult"
114
  400:
115
  description: Bad Request
116
  content:
@@ -132,6 +424,7 @@ paths:
132
  in: 'query'
133
  schema:
134
  type: 'string'
 
135
  summary: "This method can help with searching videos on YouTube."
136
  responses:
137
  200:
@@ -139,7 +432,185 @@ paths:
139
  content:
140
  application/json:
141
  schema:
142
- $ref: "#/components/schemas/YTSearchResult"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  400:
144
  description: Bad Request
145
  content:
@@ -148,6 +619,155 @@ paths:
148
  $ref: "#/components/schemas/ErrorObject"
149
  components:
150
  schemas:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  ErrorObject:
152
  type: object
153
  properties:
@@ -158,21 +778,21 @@ components:
158
  type: object
159
  properties:
160
  error_code:
161
- type: int
162
  example: 103
163
  error_details:
164
  type: string
165
  example: No signature
166
- RecognizeResult:
167
  type: object
168
  properties:
169
  status:
170
  type: string
171
- example: ok
172
  result:
173
  type: string
174
  example: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean condimentum neque quis enim bibendum, ut molestie magna gravida. Donec et felis eget lacus sodales convallis. Quisque vitae erat et leo lobortis iaculis. Maecenas a lectus vitae metus fringilla luctus. Morbi sed pellentesque elit. Phasellus bibendum et urna sed elementum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus."
175
- YTSearchResult:
176
  type: object
177
  properties:
178
  status:
@@ -192,4 +812,40 @@ components:
192
  example: GtL1huin9EE
193
  "2":
194
  type: string
195
- example: uXV-IaR_vNE
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  openapi: 3.0.0
2
  info:
3
  title: woolbot's FunAPI
4
+ description: Big API for bots, developers or just fun by @podvaljoey.
5
+ version: $VERSION_VARIABLE$
6
  servers:
7
  - url: 'https://imperialwool-funapi.hf.space/'
8
+ description: 'You are here! ^з^'
 
 
9
  paths:
10
+ /signatures/api/v1/get:
11
+ get:
12
+ tags:
13
+ - "Authentication"
14
+ parameters:
15
+ - name: 'key'
16
+ description: Key to generate signature.
17
+ in: 'query'
18
+ schema:
19
+ type: 'string'
20
+ example: rickroll
21
+ summary: "Generating auth key with small TTL."
22
+ responses:
23
+ 200:
24
+ description: OK
25
+ content:
26
+ application/json:
27
+ schema:
28
+ $ref: "#/components/schemas/AuthSuccessObject"
29
+ 400:
30
+ description: Bad Request
31
+ content:
32
+ application/json:
33
+ schema:
34
+ $ref: "#/components/schemas/AuthErrorObject"
35
+ post:
36
+ tags:
37
+ - "Authentication"
38
+ parameters:
39
+ - name: 'key'
40
+ description: Key to generate signature.
41
+ in: 'query'
42
+ schema:
43
+ type: 'string'
44
+ example: rickroll
45
+ summary: "Generating auth key with small TTL."
46
+ responses:
47
+ 200:
48
+ description: OK
49
+ content:
50
+ application/json:
51
+ schema:
52
+ $ref: "#/components/schemas/AuthSuccessObject"
53
+ 400:
54
+ description: Bad Request
55
+ content:
56
+ application/json:
57
+ schema:
58
+ $ref: "#/components/schemas/AuthErrorObject"
59
+ /osu/api/v1/find-song:
60
+ get:
61
+ tags:
62
+ - "osu! API"
63
+ parameters:
64
+ - name: 'query'
65
+ description: Query to find beatmap.
66
+ in: 'query'
67
+ schema:
68
+ type: 'string'
69
+ example: rickroll
70
+ - name: 'signature'
71
+ description: Special access key.
72
+ in: 'query'
73
+ schema:
74
+ type: 'string'
75
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
76
+ summary: "Finding beatmap by query."
77
+ responses:
78
+ 200:
79
+ description: OK
80
+ content:
81
+ application/json:
82
+ schema:
83
+ $ref: "#/components/schemas/FindBeatmapsObject"
84
+ 400:
85
+ description: Bad Request
86
+ content:
87
+ application/json:
88
+ schema:
89
+ $ref: "#/components/schemas/ErrorObject"
90
+ post:
91
+ tags:
92
+ - "osu! API"
93
+ parameters:
94
+ - name: 'query'
95
+ description: Query to find beatmap.
96
+ in: 'query'
97
+ schema:
98
+ type: 'string'
99
+ example: rickroll
100
+ - name: 'signature'
101
+ description: Special access key.
102
+ in: 'query'
103
+ schema:
104
+ type: 'string'
105
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
106
+ summary: "Finding beatmap by query."
107
+ responses:
108
+ 200:
109
+ description: OK
110
+ content:
111
+ application/json:
112
+ schema:
113
+ $ref: "#/components/schemas/FindBeatmapsObject"
114
+ 400:
115
+ description: Bad Request
116
+ content:
117
+ application/json:
118
+ schema:
119
+ $ref: "#/components/schemas/ErrorObject"
120
+ /osu/api/v1/get-full:
121
+ get:
122
+ tags:
123
+ - "osu! API"
124
+ parameters:
125
+ - name: 'query'
126
+ description: Query to find beatmap and download full song.
127
+ in: 'query'
128
+ schema:
129
+ type: 'string'
130
+ example: rickroll
131
+ - name: 'beatmapId'
132
+ description: Beatset id. Not map, set.
133
+ in: 'query'
134
+ schema:
135
+ type: 'integer'
136
+ example: 1
137
+ - name: 'signature'
138
+ description: Special access key.
139
+ in: 'query'
140
+ schema:
141
+ type: 'string'
142
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
143
+ summary: "Get beatmap's full song."
144
+ responses:
145
+ 200:
146
+ description: OK
147
+ content:
148
+ application/json:
149
+ schema:
150
+ $ref: "#/components/schemas/SongFullObject"
151
+ 400:
152
+ description: Bad Request
153
+ content:
154
+ application/json:
155
+ schema:
156
+ $ref: "#/components/schemas/ErrorObject"
157
+ post:
158
+ tags:
159
+ - "osu! API"
160
+ parameters:
161
+ - name: 'query'
162
+ description: Query to find beatmap and download full song.
163
+ in: 'query'
164
+ schema:
165
+ type: 'string'
166
+ example: rickroll
167
+ - name: 'beatmapId'
168
+ description: Beatset id. Not map, set.
169
+ in: 'query'
170
+ schema:
171
+ type: 'integer'
172
+ example: 1
173
+ - name: 'signature'
174
+ description: Special access key.
175
+ in: 'query'
176
+ schema:
177
+ type: 'string'
178
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
179
+ summary: "Get beatmap's full song."
180
+ responses:
181
+ 200:
182
+ description: OK
183
+ content:
184
+ application/json:
185
+ schema:
186
+ $ref: "#/components/schemas/SongFullObject"
187
+ 400:
188
+ description: Bad Request
189
+ content:
190
+ application/json:
191
+ schema:
192
+ $ref: "#/components/schemas/ErrorObject"
193
+ /osu/api/v1/get-preview:
194
+ get:
195
+ tags:
196
+ - "osu! API"
197
+ parameters:
198
+ - name: 'query'
199
+ description: Query to find beatmap and download full song.
200
+ in: 'query'
201
+ schema:
202
+ type: 'string'
203
+ example: rickroll
204
+ - name: 'beatmapId'
205
+ description: Beatset id. Not map, set.
206
+ in: 'query'
207
+ schema:
208
+ type: 'integer'
209
+ example: 1
210
+ - name: 'signature'
211
+ description: Special access key.
212
+ in: 'query'
213
+ schema:
214
+ type: 'string'
215
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
216
+ summary: "Get beatmap's song preview."
217
+ responses:
218
+ 200:
219
+ description: OK
220
+ content:
221
+ application/json:
222
+ schema:
223
+ $ref: "#/components/schemas/SongPreviewObject"
224
+ 400:
225
+ description: Bad Request
226
+ content:
227
+ application/json:
228
+ schema:
229
+ $ref: "#/components/schemas/ErrorObject"
230
+ post:
231
+ tags:
232
+ - "osu! API"
233
+ parameters:
234
+ - name: 'query'
235
+ description: Query to find beatmap and download full song.
236
+ in: 'query'
237
+ schema:
238
+ type: 'string'
239
+ example: rickroll
240
+ - name: 'beatmapId'
241
+ description: Beatset id. Not map, set.
242
+ in: 'query'
243
+ schema:
244
+ type: 'integer'
245
+ example: 1
246
+ - name: 'signature'
247
+ description: Special access key.
248
+ in: 'query'
249
+ schema:
250
+ type: 'string'
251
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
252
+ summary: "Get beatmap's song preview."
253
+ responses:
254
+ 200:
255
+ description: OK
256
+ content:
257
+ application/json:
258
+ schema:
259
+ $ref: "#/components/schemas/SongPreviewObject"
260
+ 400:
261
+ description: Bad Request
262
+ content:
263
+ application/json:
264
+ schema:
265
+ $ref: "#/components/schemas/ErrorObject"
266
  /recognize/api/v1/voice:
267
  get:
268
  tags:
 
286
  in: 'query'
287
  schema:
288
  type: 'string'
289
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
290
  summary: "This method can help with converting voice into the text."
291
  responses:
292
  200:
 
294
  content:
295
  application/json:
296
  schema:
297
+ $ref: "#/components/schemas/RecognizeObject"
298
  400:
299
  description: Bad Request
300
  content:
 
328
  in: 'query'
329
  schema:
330
  type: 'string'
331
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
332
  summary: "This method can help with converting voice into the text."
333
  responses:
334
  200:
 
336
  content:
337
  application/json:
338
  schema:
339
+ $ref: "#/components/schemas/RecognizeObject"
340
+ 400:
341
+ description: Bad Request
342
+ content:
343
+ application/json:
344
+ schema:
345
+ $ref: "#/components/schemas/ErrorObject"
346
+ /system-info/api/v1/get:
347
+ get:
348
+ tags:
349
+ - "System information"
350
+ summary: "Information about server."
351
+ responses:
352
+ 200:
353
+ description: OK
354
+ content:
355
+ application/json:
356
+ schema:
357
+ $ref: "#/components/schemas/SysinfoObject"
358
+ 400:
359
+ description: Bad Request
360
+ content:
361
+ application/json:
362
+ schema:
363
+ $ref: "#/components/schemas/ErrorObject"
364
+ post:
365
+ tags:
366
+ - "System information"
367
+ summary: "Information about server."
368
+ responses:
369
+ 200:
370
+ description: OK
371
+ content:
372
+ application/json:
373
+ schema:
374
+ $ref: "#/components/schemas/SysinfoObject"
375
  400:
376
  description: Bad Request
377
  content:
 
394
  in: 'query'
395
  schema:
396
  type: 'string'
397
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
398
  summary: "This method can help with searching videos on YouTube."
399
  responses:
400
  200:
 
402
  content:
403
  application/json:
404
  schema:
405
+ $ref: "#/components/schemas/YTSearchObject"
406
  400:
407
  description: Bad Request
408
  content:
 
424
  in: 'query'
425
  schema:
426
  type: 'string'
427
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
428
  summary: "This method can help with searching videos on YouTube."
429
  responses:
430
  200:
 
432
  content:
433
  application/json:
434
  schema:
435
+ $ref: "#/components/schemas/YTSearchObject"
436
+ 400:
437
+ description: Bad Request
438
+ content:
439
+ application/json:
440
+ schema:
441
+ $ref: "#/components/schemas/ErrorObject"
442
+ /yt/api/v1/get-full:
443
+ get:
444
+ tags:
445
+ - "Youtube: Becoming Music Platform"
446
+ parameters:
447
+ - name: 'url'
448
+ description: Url to video from YouTube. (TikTok also works sometimes.)
449
+ in: 'query'
450
+ schema:
451
+ type: 'string'
452
+ - name: 'bitrate'
453
+ description: Bitrate of final audio.
454
+ in: 'query'
455
+ schema:
456
+ type: 'string'
457
+ example: "64k"
458
+ - name: 'quality'
459
+ description: Quality of final audio. Only 'worst' or 'best'.
460
+ in: 'query'
461
+ schema:
462
+ type: 'string'
463
+ example: "worst"
464
+ - name: 'signature'
465
+ description: Special access key.
466
+ in: 'query'
467
+ schema:
468
+ type: 'string'
469
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
470
+ summary: "Download video as audio and providing link for you."
471
+ responses:
472
+ 200:
473
+ description: OK
474
+ content:
475
+ application/json:
476
+ schema:
477
+ $ref: "#/components/schemas/YTFullObject"
478
+ 400:
479
+ description: Bad Request
480
+ content:
481
+ application/json:
482
+ schema:
483
+ $ref: "#/components/schemas/ErrorObject"
484
+ post:
485
+ tags:
486
+ - "Youtube: Becoming Music Platform"
487
+ parameters:
488
+ - name: 'url'
489
+ description: Url to video from YouTube. (TikTok also works sometimes.)
490
+ in: 'query'
491
+ schema:
492
+ type: 'string'
493
+ - name: 'bitrate'
494
+ description: Bitrate of final audio.
495
+ in: 'query'
496
+ schema:
497
+ type: 'string'
498
+ example: "64k"
499
+ - name: 'quality'
500
+ description: Quality of final audio. Only 'worst' or 'best'.
501
+ in: 'query'
502
+ schema:
503
+ type: 'string'
504
+ example: "worst"
505
+ - name: 'signature'
506
+ description: Special access key.
507
+ in: 'query'
508
+ schema:
509
+ type: 'string'
510
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
511
+ summary: "Download video as audio and providing link for you."
512
+ responses:
513
+ 200:
514
+ description: OK
515
+ content:
516
+ application/json:
517
+ schema:
518
+ $ref: "#/components/schemas/YTFullObject"
519
+ 400:
520
+ description: Bad Request
521
+ content:
522
+ application/json:
523
+ schema:
524
+ $ref: "#/components/schemas/ErrorObject"
525
+ /yt/api/v1/get-preview:
526
+ get:
527
+ tags:
528
+ - "Youtube: Becoming Music Platform"
529
+ parameters:
530
+ - name: 'url'
531
+ description: Url to video from YouTube. (TikTok also works sometimes.)
532
+ in: 'query'
533
+ schema:
534
+ type: 'string'
535
+ - name: 'bitrate'
536
+ description: Bitrate of final audio.
537
+ in: 'query'
538
+ schema:
539
+ type: 'string'
540
+ example: "64k"
541
+ - name: 'quality'
542
+ description: Quality of final audio. Only 'worst' or 'best'.
543
+ in: 'query'
544
+ schema:
545
+ type: 'string'
546
+ example: "worst"
547
+ - name: 'duration'
548
+ description: Duration of preview. Maximum 60 seconds.
549
+ in: 'query'
550
+ schema:
551
+ type: 'integer'
552
+ example: 30
553
+ - name: 'signature'
554
+ description: Special access key.
555
+ in: 'query'
556
+ schema:
557
+ type: 'string'
558
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
559
+ summary: "Download video as cutted audio and providing link for you."
560
+ responses:
561
+ 200:
562
+ description: OK
563
+ content:
564
+ application/json:
565
+ schema:
566
+ $ref: "#/components/schemas/YTPreviewResult"
567
+ 400:
568
+ description: Bad Request
569
+ content:
570
+ application/json:
571
+ schema:
572
+ $ref: "#/components/schemas/ErrorObject"
573
+ post:
574
+ tags:
575
+ - "Youtube: Becoming Music Platform"
576
+ parameters:
577
+ - name: 'url'
578
+ description: Url to video from YouTube. (TikTok also works sometimes.)
579
+ in: 'query'
580
+ schema:
581
+ type: 'string'
582
+ - name: 'bitrate'
583
+ description: Bitrate of final audio.
584
+ in: 'query'
585
+ schema:
586
+ type: 'string'
587
+ example: "64k"
588
+ - name: 'quality'
589
+ description: Quality of final audio. Only 'worst' or 'best'.
590
+ in: 'query'
591
+ schema:
592
+ type: 'string'
593
+ example: "worst"
594
+ - name: 'duration'
595
+ description: Duration of preview. Maximum 60 seconds.
596
+ in: 'query'
597
+ schema:
598
+ type: 'integer'
599
+ example: 30
600
+ - name: 'signature'
601
+ description: Special access key.
602
+ in: 'query'
603
+ schema:
604
+ type: 'string'
605
+ example: 'B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B'
606
+ summary: "Download video as cutted audio and providing link for you."
607
+ responses:
608
+ 200:
609
+ description: OK
610
+ content:
611
+ application/json:
612
+ schema:
613
+ $ref: "#/components/schemas/YTPreviewResult"
614
  400:
615
  description: Bad Request
616
  content:
 
619
  $ref: "#/components/schemas/ErrorObject"
620
  components:
621
  schemas:
622
+ SongFullObject:
623
+ type: object
624
+ properties:
625
+ status:
626
+ type: string
627
+ example: pass
628
+ details:
629
+ type: object
630
+ properties:
631
+ code:
632
+ type: integer
633
+ example: 200
634
+ name:
635
+ type: string
636
+ example: "1592415.ogg"
637
+ result:
638
+ type: string
639
+ example: "https://imperialwool-funapi.hf.space/static/full/1592415.ogg"
640
+ SongPreviewObject:
641
+ type: object
642
+ properties:
643
+ status:
644
+ type: string
645
+ example: pass
646
+ details:
647
+ type: object
648
+ properties:
649
+ code:
650
+ type: integer
651
+ example: 200
652
+ name:
653
+ type: string
654
+ example: "1244874.mp3"
655
+ result:
656
+ type: string
657
+ example: "https://b.ppy.sh/preview/1244874.mp3"
658
+ BeatmapObject:
659
+ type: object
660
+ properties:
661
+ "artist":
662
+ type: string
663
+ example: "never gonna give you up remix"
664
+ "beatmapId":
665
+ type: integer
666
+ example: 1542795
667
+ "creator":
668
+ type: string
669
+ example: "CrisFloppa"
670
+ "source":
671
+ type: string
672
+ example: ""
673
+ "tags":
674
+ type: string
675
+ example: "never gonna gie you up rick roll"
676
+ "title":
677
+ type: string
678
+ example: "rick astley"
679
+ FindBeatmapsObject:
680
+ type: object
681
+ properties:
682
+ status:
683
+ type: string
684
+ example: pass
685
+ details:
686
+ type: object
687
+ properties:
688
+ "code":
689
+ type: integer
690
+ example: 200
691
+ "result":
692
+ type: array
693
+ items:
694
+ $ref: "#/components/schemas/BeatmapObject"
695
+ SysinfoObject:
696
+ type: object
697
+ properties:
698
+ "API_VERSION":
699
+ type: string
700
+ example: "1.0 build62"
701
+ "CPU_INFO":
702
+ type: object
703
+ properties:
704
+ "cpu_brand":
705
+ type: string
706
+ example: "AMD EPYC 7R13 Processor"
707
+ "cpu_count":
708
+ type: object
709
+ properties:
710
+ "all":
711
+ type: integer
712
+ example: 16
713
+ "exclude_virtual":
714
+ type: integer
715
+ example: 8
716
+ "cpu_freq":
717
+ type: object
718
+ properties:
719
+ "current":
720
+ type: number
721
+ format: float
722
+ example: 3522.9323125
723
+ "min":
724
+ type: number
725
+ format: float
726
+ example: 0.0
727
+ "max":
728
+ type: number
729
+ format: float
730
+ example: 3600.0
731
+ "cpu_load":
732
+ type: number
733
+ format: float
734
+ example: 16.2
735
+ "MEM_INFO":
736
+ type: object
737
+ properties:
738
+ "mem_total":
739
+ type: integer
740
+ example: 126125
741
+ "mem_used":
742
+ type: integer
743
+ example: 87497
744
+ AuthSuccessObject:
745
+ type: object
746
+ properties:
747
+ status:
748
+ type: string
749
+ example: pass
750
+ endtime:
751
+ type: integer
752
+ example: 1672602259
753
+ result:
754
+ type: string
755
+ example: B46AAB1A3F1E33625C1B6BD9507453B928DE69BA638E7098DB533A2184ED288EFB899D563EF8AB5487DACBCAD909A801E4C81FD6D34B639F6591295CD1D10A5B
756
+ AuthErrorObject:
757
+ type: object
758
+ properties:
759
+ status:
760
+ type: string
761
+ example: error
762
+ details:
763
+ type: object
764
+ properties:
765
+ error_code:
766
+ type: integer
767
+ example: -1
768
+ error_details:
769
+ type: string
770
+ example: This key already got signature
771
  ErrorObject:
772
  type: object
773
  properties:
 
778
  type: object
779
  properties:
780
  error_code:
781
+ type: integer
782
  example: 103
783
  error_details:
784
  type: string
785
  example: No signature
786
+ RecognizeObject:
787
  type: object
788
  properties:
789
  status:
790
  type: string
791
+ example: pass
792
  result:
793
  type: string
794
  example: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean condimentum neque quis enim bibendum, ut molestie magna gravida. Donec et felis eget lacus sodales convallis. Quisque vitae erat et leo lobortis iaculis. Maecenas a lectus vitae metus fringilla luctus. Morbi sed pellentesque elit. Phasellus bibendum et urna sed elementum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus."
795
+ YTSearchObject:
796
  type: object
797
  properties:
798
  status:
 
812
  example: GtL1huin9EE
813
  "2":
814
  type: string
815
+ example: uXV-IaR_vNE
816
+ YTFullObject:
817
+ type: object
818
+ properties:
819
+ status:
820
+ type: string
821
+ example: pass
822
+ details:
823
+ type: object
824
+ properties:
825
+ code:
826
+ type: integer
827
+ example: 0
828
+ name:
829
+ type: string
830
+ example: "R8YprjS6ztg.ogg"
831
+ result:
832
+ type: string
833
+ example: "https://imperialwool-funapi.hf.space/static/full/R8YprjS6ztg.ogg"
834
+ YTPreviewResult:
835
+ type: object
836
+ properties:
837
+ status:
838
+ type: string
839
+ example: pass
840
+ details:
841
+ type: object
842
+ properties:
843
+ code:
844
+ type: integer
845
+ example: 0
846
+ name:
847
+ type: string
848
+ example: "R8YprjS6ztg.ogg"
849
+ result:
850
+ type: string
851
+ example: "https://imperialwool-funapi.hf.space/static/previews/R8YprjS6ztg.ogg"
static/favicon.ico CHANGED