API bilan YouTube'dan MP3 — ikki chaqiruv, bitta imzolangan havola
Ishni yashiradigan «MP3 ni ber» endpointi yo'q, chunki fayl yasalguncha mavjud emas. Uning o'rniga ikkita halol chaqiruv bor: info audio qancha joy olishini aytadi, create uni yasab, muddatli havola qaytaradi. Qo'llanma ikkalasini va havola bilan nima qilishni ko'rsatadi.
Yangilangan
Audio qancha joy olishini so'rang
info audio_formats[] qaytaradi: aniq bayt hajmli m4a qatori va hajmi taxminiy mp3 qatori. Sarlavha, davomiylik va thumbnail birga keladi — bot faylga 10 kredit sarflashdan oldin foydalanuvchiga nima yuborishini ko'rsata oladi.
Terminalcurl -s "https://api.saveapi.org/v1/youtube/info" \ -H "Authorization: Bearer sk_live_xxxx" \ -G --data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ"
Faylni yasang
O'sha havola va quality=mp3 (yoki m4a). Javobda url, sarlavhasi bilan filename, mode "audio", file_size va expires bor. Biz tomonda hech narsa saqlanmaydi: baytlar siz havolani o'qigan sari yasaladi.
Terminalcurl -s "https://api.saveapi.org/v1/youtube/create" \ -H "Authorization: Bearer sk_live_xxxx" \ -G --data-urlencode "url=https://www.youtube.com/watch?v=aqz-KE-bpKQ" \ --data-urlencode "quality=mp3"
Havolani to'g'ri o'qing
Bu oqim, saqlangan fayl emas: Content-Length yo'q, Range yo'q, boshidan oxirigacha bir o'tish. expires vaqtidan keyin 410 qaytaradi — havolalarni saqlab yurmay, create'ni qayta chaqiring. Buni hozir bo'lishi shart bo'lgan yuklash deb qarang.
Oling va uzating
Javobni berilgan filename ostida diskka oqim qiling, keyin faylni botingizdan yuboring yoki kerakli joyda saqlang. Havolani emas, faylni yuboring: Telegram URL'ni o'zi olib keladi va o'z chegaralari bor (URL orqali audio 20 MB), hajmi e'lon qilinmagan oqim bunga mos emas.
Pythonimport httpx
def fetch_audio(made: dict, dest: str) -> str:
"""Pull the file behind a /v1/youtube/create link onto disk."""
path = f"{dest}/{made['filename']}"
with httpx.stream("GET", made["url"], timeout=None) as r, open(path, "wb") as f:
if r.status_code == 410: # past expires: call create again
raise RuntimeError("link expired")
for chunk in r.iter_bytes(): # no Content-Length: read to the end
f.write(chunk)
return path
# made = youtube_link(url, "mp3") # from the yt-dlp guide
# audio = fetch_audio(made, "/tmp")
# bot.send_audio(chat_id, open(audio, "rb"), title=made["title"])MP3 yoki M4A
M4A — YouTube beradigan AAC trek: hajmi aniq, qayta kodlash yo'q, oqim darhol boshlanadi. MP3 undan ffmpeg bilan yasaladi, shuning uchun boshlanishi kechroq va hajmi taxminiy. Narigi tomondagi pleyer aynan MP3 talab qilmasa M4A ni tanlang — Telegram ikkalasini ham o'ynaydi.
Boshlashdan oldingi savollar
- Avval info'ni chaqirish shartmi?
- Yo'q. create quality=mp3 yoki m4a bilan o'zi ishlaydi — 10 kredit. info qaror qilishdan oldin hajm yoki sarlavhani ko'rsatish uchun, narxi 2.
- Bitreytni tanlash mumkinmi?
- Yo'q. Har format uchun bitta audio variant: manba beradigan eng yaxshi M4A va bitta MP3 kodlash. quality parametri mp3 yoki m4a qabul qiladi.
- Video mavjud bo'lmasa nima bo'ladi?
- Javobda success: false va boshqa hamma platformadagi o'sha xatolar jadvalidan barqaror kod bo'ladi. YouTube'ning o'zi rad etgan havola 0.1 kredit; biz tomondagi nosozlik bepul va qayta urinish xavfsiz.
Bu yerda ishlatilgan platformalar
Boshqa qo'llanmalar
Qo'llanmani o'z kalitingiz bilan ishga tushiring
Kalit bir daqiqada. 1 000 bepul kredit, kartasiz, muddatsiz.