import os import ffmpeg from .get import * from .. import helpers def getPreview(request): answer = get(request, "previews") try: if answer['status'] == "error": return answer if answer['error']: return answer except KeyError: pass except Exception as e: return {"status": "error", "details": { "error_code": 123, "error_details": e }}, 400 urlcode = answer['urlcode'] bitrate = answer['bitrate'] error_code = answer['ytdlp-code'] duration = helpers.getFromRequest(request, "duration") try: duration = int(duration) if duration.isnumeric() and int(duration) <= 90 else 45 except: duration = 45 extension = helpers.getFromRequest(request, "extension") if not extension: extension = "ogg" config = helpers.configFile() if answer['done-or-not']: return {"status": "pass", "details": {"code": error_code, "name":f"{urlcode}.{extension}", "result": f"{config['url']}/static/previews/{urlcode}.{extension}"}} if os.path.exists(f"{config['previews-path']}/{urlcode}.{extension}"): return {"status": "pass", "details": {"code": 0, "name":f"{urlcode}.{extension}", "result": f"{config['url']}/static/previews/{urlcode}.{extension}"}} try: audio_input = ffmpeg.input(answer['path']) audio_cut = audio_input.audio.filter('atrim', duration=duration) audio_output = ffmpeg.output(audio_cut, f"{config['previews-path']}/{urlcode}.{extension}", audio_bitrate=bitrate) ffmpeg.run(audio_output) helpers.deleteAudio(f"temp/{urlcode}.{extension}") except Exception as e: return {"status": "error", "details": {"error_code": 102, "error_details": str(e), "result": f"{config['url']}/static/temp/{urlcode}.{extension}"}}, 400 return {"status": "pass", "details": {"code": error_code, "name":f"{urlcode}.{extension}", "result": f"{config['url']}/static/previews/{urlcode}.{extension}"}}