Spaces:
Running
Running
File size: 2,316 Bytes
68707b3 a39dd78 66ca64a a39dd78 66ca64a a39dd78 86d1f26 a39dd78 66ca64a a39dd78 367be45 0b5904d e9bae41 66ca64a f02b1de a39dd78 5ac54e0 a39dd78 5ac54e0 a39dd78 68707b3 a39dd78 5ac54e0 a39dd78 17c0fa0 a39dd78 66ca64a a39dd78 5ac54e0 a39dd78 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import os
import yt_dlp
from .. import helpers
from yt_dlp.utils import download_range_func
def getPreview(request):
error_code = None
url = helpers.getFromRequest(request, "url")
if not url: return {"status": "error", "details": { "error_code": 101, "error_details": "No link provided" }}, 400
bitrate = helpers.getFromRequest(request, "bitrate")
if not bitrate: bitrate = "64k"
quality = helpers.getFromRequest(request, "quality")
if not quality or quality.lower() not in ['best', 'worst']:
quality = 'worst'
else: quality = quality.lower()
audioformat = helpers.getFromRequest(request, "extension")
if not audioformat or audioformat.lower() not in ['m4a', 'aac', 'mp3', 'ogg', 'opus', 'webm']:
audioformat = 'ogg'
else: audioformat = audioformat.lower()
urlcode = url.partition('?v=')[2]
if not urlcode: urlcode = "NPRNRQh2fAo"
duration = helpers.getFromRequest(request, "duration")
try: duration = int(duration)
except Exception as e:
print(e)
duration = 45
config = helpers.configFile()
__filename = f"{urlcode}_dur{duration}.{audioformat}"
if os.path.exists(f"{config['previews-path']}/{__filename}"):
return {
"status": "pass",
"details": {
"code": error_code,
"name":f"{urlcode}.{audioformat}",
"result": f"{config['url']}/static/previews/{__filename}"
}
}
ydl_opts = {
'format': f'{audioformat}/{quality}audio/{quality}',
'outtmpl': f"{config['previews-path']}/{__filename}",
'progress_hooks': [helpers.thisIsHook],
'download_ranges': download_range_func(None, [(0, duration)]),
'force_keyframes_at_cuts': True,
"extractor_args": {"youtube": {"player_client": "ios"}},
}
try:
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
error_code = ydl.download(url)
except Exception as e: return {"status": "error", "details": {"error_code": 102, "error_details": str(e)}}, 400
return {
"status": "pass",
"details": {
"code": error_code,
"name":f"{urlcode}.{audioformat}",
"result": f"{config['url']}/static/previews/{__filename}"
}
} |