Spaces:
Running
Running
Commit
·
f0b744f
1
Parent(s):
e7ab40f
api doc change
Browse files- app.py +13 -1
- routes/config.json +7 -1
- routes/osuApi/getFull.py +2 -2
- routes/osuApi/getPreview.py +2 -1
- routes/siteRoutes/sigGen.py +1 -1
- routes/witaiApi/recognizeVoice.py +3 -3
- static/api.yaml +670 -14
- static/favicon.ico +0 -0
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 |
-
|
|
|
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 |
-
|
|
|
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": "
|
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": "
|
40 |
except: pass
|
41 |
if noEx:
|
42 |
|
43 |
-
if extendInfo: return {"status": "
|
44 |
-
else: return {"status": "
|
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:
|
5 |
-
version:
|
6 |
servers:
|
7 |
- url: 'https://imperialwool-funapi.hf.space/'
|
8 |
-
description:
|
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/
|
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/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/
|
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/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
|
162 |
example: 103
|
163 |
error_details:
|
164 |
type: string
|
165 |
example: No signature
|
166 |
-
|
167 |
type: object
|
168 |
properties:
|
169 |
status:
|
170 |
type: string
|
171 |
-
example:
|
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 |
-
|
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
|
|