suprimedev commited on
Commit
88e3c8f
·
verified ·
1 Parent(s): 58e661d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -11
app.py CHANGED
@@ -16,7 +16,8 @@ def convert_to_mp3(url):
16
  # ایجاد پوشه موقت
17
  temp_dir = tempfile.mkdtemp()
18
  unique_id = str(uuid.uuid4()) # نام منحصربه‌فرد برای جلوگیری از تداخل
19
- output_path = os.path.join(temp_dir, f'{unique_id}_%(title)s.%(ext)s')
 
20
 
21
  ydl_opts = {
22
  'format': 'bestaudio/best', # بهترین کیفیت صوت
@@ -38,7 +39,6 @@ def convert_to_mp3(url):
38
  ydl.download([url])
39
 
40
  # پیدا کردن فایل MP3
41
- mp3_pattern = f'{unique_id}_*{title}.mp3'
42
  mp3_files = [f for f in os.listdir(temp_dir) if f.startswith(unique_id) and f.endswith('.mp3')]
43
  if not mp3_files:
44
  shutil.rmtree(temp_dir, ignore_errors=True)
@@ -47,23 +47,23 @@ def convert_to_mp3(url):
47
  mp3_filename = mp3_files[0]
48
  mp3_path = os.path.join(temp_dir, mp3_filename)
49
 
50
- # پیام با راهنمایی لینک
51
  message = f"""
52
- ✅ تبدیل موفق!
53
- فایل: {mp3_filename}
54
 
55
- 🔗 **لینک دانلود MP3**:
56
- - در UI Gradio: از دکمه دانلود در کامپوننت File استفاده کنید (URL موقت تولید می‌شود).
57
- - در API: خروجی `data[0]` یک URL مستقیم به MP3 است (مثل `https://your-space.hf.space/file={mp3_filename}`).
58
 
59
- نکته: لینک‌ها موقت هستند (در Spaces). برای API، به `/api/predict` POST کنید با `data: [{{"text": "لینک ویدیو"}}]`.
60
  """
61
 
62
  return mp3_path, message
63
 
64
  except Exception as e:
65
  shutil.rmtree(temp_dir, ignore_errors=True)
66
- return None, f"❌ خطا: {str(e)}\n\nنکته: لینک معتبر باشد (یوتیوب/دیگر سایت‌ها). yt-dlp از بسیاری سایت‌ها پشتیبانی می‌کند."
67
 
68
  # اینترفیس Gradio
69
  demo = gr.Interface(
@@ -78,7 +78,7 @@ demo = gr.Interface(
78
  label="فایل MP3 (دانلود)",
79
  visible=True # دکمه دانلود نمایش داده می‌شود
80
  ),
81
- gr.Markdown(label="پیام و لینک", lines=5) # Markdown برای فرمت بهتر
82
  ],
83
  title="تبدیل ویدیو به MP3 با لینک دانلود",
84
  description="""لینک ویدیو را وارد کنید. خروجی شامل فایل MP3 و لینک دانلود موقت است.
 
16
  # ایجاد پوشه موقت
17
  temp_dir = tempfile.mkdtemp()
18
  unique_id = str(uuid.uuid4()) # نام منحصربه‌فرد برای جلوگیری از تداخل
19
+ output_template = f'{unique_id}_%(title)s.%(ext)s'
20
+ output_path = os.path.join(temp_dir, output_template)
21
 
22
  ydl_opts = {
23
  'format': 'bestaudio/best', # بهترین کیفیت صوت
 
39
  ydl.download([url])
40
 
41
  # پیدا کردن فایل MP3
 
42
  mp3_files = [f for f in os.listdir(temp_dir) if f.startswith(unique_id) and f.endswith('.mp3')]
43
  if not mp3_files:
44
  shutil.rmtree(temp_dir, ignore_errors=True)
 
47
  mp3_filename = mp3_files[0]
48
  mp3_path = os.path.join(temp_dir, mp3_filename)
49
 
50
+ # پیام Markdown با راهنمایی لینک (برای UI و API)
51
  message = f"""
52
+ ### ✅ تبدیل موفق!
53
+ - **فایل**: `{mp3_filename}`
54
 
55
+ #### 🔗 لینک دانلود MP3
56
+ - **در UI Gradio**: از دکمه دانلود در کامپوننت File استفاده کنید (URL موقت تولید می‌شود).
57
+ - **در API**: خروجی `data[0]` یک URL مستقیم به MP3 است (مثل `https://your-space.hf.space/file={mp3_filename}`).
58
 
59
+ **نکته مهم**: لینک‌ها موقت هستند (در Spaces، ۱-۲ ساعت اعتبار). برای API، به `/api/predict` POST کنید با `data: [{{"text": "لینک ویدیو"}}]`.
60
  """
61
 
62
  return mp3_path, message
63
 
64
  except Exception as e:
65
  shutil.rmtree(temp_dir, ignore_errors=True)
66
+ return None, f"### خطا!\n{str(e)}\n\n**نکته**: مطمئن شوید لینک معتبر است (مثل یوتیوب). yt-dlp از بسیاری سایت‌ها پشتیبانی می‌کند."
67
 
68
  # اینترفیس Gradio
69
  demo = gr.Interface(
 
78
  label="فایل MP3 (دانلود)",
79
  visible=True # دکمه دانلود نمایش داده می‌شود
80
  ),
81
+ gr.Markdown(label="پیام و لینک") # بدون lines تصحیح شده
82
  ],
83
  title="تبدیل ویدیو به MP3 با لینک دانلود",
84
  description="""لینک ویدیو را وارد کنید. خروجی شامل فایل MP3 و لینک دانلود موقت است.