Saqib commited on
Commit
2fec25c
1 Parent(s): 5b54f45

Update modules/app.py

Browse files
Files changed (1) hide show
  1. modules/app.py +19 -9
modules/app.py CHANGED
@@ -1,6 +1,7 @@
1
  from fastapi import FastAPI, HTTPException, Request, Depends
2
- from fastapi.responses import FileResponse
3
  from pytube import YouTube
 
4
  import logging
5
  import aiohttp
6
  import base64
@@ -32,6 +33,13 @@ def generate_hash(length=12):
32
  async def read_root():
33
  return {"message": "Saqib's API"}
34
 
 
 
 
 
 
 
 
35
  @app.get("/get_audio")
36
  async def get_audio(url: str):
37
  if not url:
@@ -40,19 +48,21 @@ async def get_audio(url: str):
40
  try:
41
  yt = YouTube(url)
42
  video = yt.streams.filter(only_audio=True).first()
43
- # out_file = video.download(output_path=".")
44
- # current_dir
45
- out_file = video.download()
 
 
 
 
46
 
47
  file_stats = os.stat(out_file)
48
  logging.info(f'Size of audio file in Bytes: {file_stats.st_size}')
49
 
50
  if file_stats.st_size <= 30000000:
51
- base, ext = os.path.splitext(out_file)
52
- new_file = base + '.mp3'
53
- os.rename(out_file, new_file)
54
-
55
- return FileResponse(new_file, media_type="audio/mpeg", filename="audio.mp3")
56
  else:
57
  os.remove(out_file)
58
  raise HTTPException(status_code=413, detail="Audio file is too large. Limited to about 1.5 hours.")
 
1
  from fastapi import FastAPI, HTTPException, Request, Depends
2
+ from fastapi.staticfiles import StaticFiles
3
  from pytube import YouTube
4
+ import uuid
5
  import logging
6
  import aiohttp
7
  import base64
 
33
  async def read_root():
34
  return {"message": "Saqib's API"}
35
 
36
+ # Create a directory to store MP3 files if it doesn't exist
37
+ AUDIO_DIR = "audio_files"
38
+ os.makedirs(AUDIO_DIR, exist_ok=True)
39
+
40
+ # Mount the audio directory
41
+ app.mount("/audio", StaticFiles(directory=AUDIO_DIR), name="audio")
42
+
43
  @app.get("/get_audio")
44
  async def get_audio(url: str):
45
  if not url:
 
48
  try:
49
  yt = YouTube(url)
50
  video = yt.streams.filter(only_audio=True).first()
51
+
52
+ # Generate a unique filename
53
+ unique_filename = f"{uuid.uuid4().hex}.mp3"
54
+ out_file = os.path.join(AUDIO_DIR, unique_filename)
55
+
56
+ # Download the audio
57
+ video.download(output_path=AUDIO_DIR, filename=unique_filename)
58
 
59
  file_stats = os.stat(out_file)
60
  logging.info(f'Size of audio file in Bytes: {file_stats.st_size}')
61
 
62
  if file_stats.st_size <= 30000000:
63
+ # Construct the URL for the MP3 file
64
+ mp3_url = f"/audio/{unique_filename}"
65
+ return {"mp3_url": mp3_url}
 
 
66
  else:
67
  os.remove(out_file)
68
  raise HTTPException(status_code=413, detail="Audio file is too large. Limited to about 1.5 hours.")