funapi / routes /osuApi /findSong.py
imperialwool's picture
upd
f02b1de
raw
history blame
1.59 kB
import json
from .. import helpers
from requests import get
from random import randint as rand
def findSong(request):
try:
if request.method == 'POST': signature = request.form['signature']
else: signature = request.args['signature']
except: return {"status": "error", "details": { "error_code": 103, "error_details": "No signature" }}
if not helpers.checkSignature(request, signature): return {"status": "error", "details": { "error_code": 105, "error_details": "Invalid signature" }}
try:
if request.method == 'POST': query = request.form['query']
else: query = request.args['query']
if query.strip() in ['', None]: raise Exception()
except: return {"status": "error", "details": { "error_code": 133, "error_details": "No query" }}
tryment = get("https://api.chimu.moe/v1/search", params={"query": query})
if int(tryment.status_code) not in [404, 403]:
res = []
counter = 0
for chunk in tryment.json()['data']:
res.append({
"beatmapId": chunk['SetId'],
"artist": chunk['Artist'],
"title": chunk['Title'],
"creator": chunk['Creator'],
"source": chunk['Source'],
"tags": chunk['Tags']
})
counter += 1
if counter >= rand(3,7): break
return {"status": "pass", "details": {"code": int(tryment.status_code), "result": res}}
else:
return {"status": "error", "details": {"code": int(tryment.status_code), "answer": tryment.text}}