funapi / routes /osuApi /getFull.py
imperialwool's picture
Upload 28 files
66ca64a
raw
history blame
3.57 kB
import os
import ffmpeg
from .. import helpers
from .findSong import *
from requests import get
from random import randint as rand
def getFull(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(signature): return {"status": "error", "details": { "error_code": 105, "error_details": "Invalid signature" }}
try:
if request.method == 'POST': beatmapId = request.form['beatmapId']
else: beatmapId = request.args['beatmapId']
if beatmapId.strip() in ['', None]:
raise Exception()
except: beatmapId = None
try:
if request.method == 'POST': query = request.form['query']
else: query = request.args['query']
if query.strip() in ['', None]:
raise Exception()
except:
if beatmapId == None: return {"status": "error", "details": { "error_code": 133, "error_details": "No details for finding preview" }}
else: query = None
if beatmapId != None:
if os.path.exists(f"/home/ubuntu/api/static/full/{beatmapId}.ogg"):
return {"status": "pass", "details": {"code": 200, "result": "https://funapi.dnszilla.bar/static/full/{}.ogg".format(beatmapId)}}
tryment = get("https://kitsu.moe/api/audio/{}".format(beatmapId), allow_redirects=True)
if int(tryment.status_code) not in [404, 403, 429]:
open(f"/home/ubuntu/api/static/temp/{beatmapId}.mp3", "wb").write(tryment.content)
audio_input = ffmpeg.input(f"/home/ubuntu/api/static/temp/{beatmapId}.mp3")
audio_output = ffmpeg.output(audio_input, "/home/ubuntu/api/static/full/{}.ogg".format(beatmapId), audio_bitrate="96K")
ffmpeg.run(audio_output)
helpers.deleteAudio("temp/{}.ogg".format(beatmapId))
return {"status": "pass", "details": {"code": int(tryment.status_code), "result": "https://funapi.dnszilla.bar/static/full/{}.ogg".format(beatmapId)}}
else:
return {"status": "error", "details": {"code": int(tryment.status_code), "answer": tryment.text}}
if query != None:
fffff = findSong(request)
if fffff['status'] == "error": return fffff
beatmapId = fffff['details']['result'][rand(0,len(fffff['details']['result']))]['beatmapId']
if os.path.exists(f"/home/ubuntu/api/static/full/{beatmapId}.ogg"):
return {"status": "pass", "details": {"code": 200, "result": "https://funapi.dnszilla.bar/static/full/{}.ogg".format(beatmapId)}}
tryment = get("https://kitsu.moe/api/audio/{}".format(beatmapId), allow_redirects=True)
if int(tryment.status_code) not in [404, 403, 429]:
open(f"/home/ubuntu/api/static/temp/{beatmapId}.mp3", "wb").write(tryment.content)
audio_input = ffmpeg.input(f"/home/ubuntu/api/static/temp/{beatmapId}.mp3")
audio_output = ffmpeg.output(audio_input, "/home/ubuntu/api/static/full/{}.ogg".format(beatmapId), audio_bitrate="96K")
ffmpeg.run(audio_output)
helpers.deleteAudio("temp/{}.ogg".format(beatmapId))
return {"status": "pass", "details": {"code": int(tryment.status_code), "result": "https://funapi.dnszilla.bar/static/full/{}.ogg".format(beatmapId)}}
else:
return {"status": "error", "details": {"code": int(tryment.status_code), "answer": tryment.text}}
return {}