➡️Вот мой код:
👉
import requests
from bs4 import BeautifulSoup
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, CallbackContext
import json
import os

async def start(update: Update, context: CallbackContext) -> None:
    await update.message.reply_text('Привет! Напиши мне название песни, и я попробую найти её на rus.hitmotop.com.')

async def search_song(update: Update, context: CallbackContext) -> None:
    query = update.message.text.strip().replace(" ", "+")
    url = f"https://rus.hitmotop.com/search?q={query}"

    response = requests.get(url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html.parser')
        track_list = soup.find('ul', class_='tracks__list')

        if track_list:
            tracks = track_list.find_all('li', class_='tracks__item')
            for track in tracks:
                musmeta = track['data-musmeta']
                musmeta_dict = json.loads(musmeta.replace('&quot;', '"'))

                artist = musmeta_dict.get('artist', 'Unknown Artist')
                title = musmeta_dict.get('title', 'Unknown Title')
                download_url = musmeta_dict.get('url', '#')

                # Скачиваем аудиофайл
                audio_response = requests.get(download_url)
                if audio_response.status_code == 200:
                    audio_file = f"{artist} - {title}.mp3"
                    with open(audio_file, "wb") as f:
                        f.write(audio_response.content)

                    # Отправляем аудиофайл пользователю
                    with open(audio_file, "rb") as f:
                        await update.message.reply_audio(audio=f, title=title, performer=artist)

                    # Удаляем файл после отправки
                    os.remove(audio_file)
                    return
            await update.message.reply_text('Не нашел ничего по вашему запросу.')
        else:
            await update.message.reply_text('Не нашел ничего по вашему запросу.')
    else:
        await update.message.reply_text('Ошибка при поиске, попробуйте снова позже.')

def main():
    app = ApplicationBuilder().token("YOUR_BOT_TOKEN").build()

    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, search_song))

    app.run_polling()

if __name__ == '__main__':
    main()
👈

➡️Братан, там задержка в 3-5 секунд перед тем как придет аудио файл .mp3. Хочу достичь моментальной скорости.
➡️Братан, я думаю проблема с задержкой в 3-5 секунд вызвана тем, что бот сначала полностью скачивает mp3 файл, сохраняет его на диск, а потом отправляет пользователю. Это создаёт узкое место. Надо это дело оптимизировать, пустив поток напрямую, без сохранения на диск. Плюс, можно добавить асинхронность, чтобы бот мог обрабатывать несколько запросов одновременно. Ещё если можно глянуть, как ускорить сам парсинг.
➡️Я вот думаю, а может это поможет: пользователь отправляет название трека, потом ему бот присылает список всех треков, а затем пользователь нажимает на выбранный трек, и данный трек ему сразу моментально отправляется в чат.

➡️Вот должно помочь:
Когда слушаю выбранную музыку.
👉
URL-адрес запроса:
https://cdn4.deliciouspeaches.com/get/cuts/18/31/1831064a11125f21904c664e34ab3751/72019813/Eminem_White_Gold_-_Zeus_b128f0d230.mp3
Request Method:
GET
Код состояния:
206 Partial Content (из кэша диска)
Удаленный адрес:
65.108.5.254:443
Политика источника ссылки:
strict-origin-when-cross-origin
cache-control:
max-age=1468800
content-disposition:
attachment
content-length:
3845514
content-range:
bytes 0-3845513/3845514
content-type:
audio/mpeg
date:
Fri, 29 Nov 2024 15:51:48 GMT
last-modified:
Sat, 19 Dec 2020 04:24:39 GMT
server:
nginx
x-cache-status:
HIT
dnt:
1
referer:
https://rus.hitmotop.com/
user-agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0
👈
Когда нажал скачать
👉
URL-адрес запроса:
https://cdn4.deliciouspeaches.com/get/music/20201219/Eminem_White_Gold_-_Zeus_72019813.mp3
Request Method:
GET
Код состояния:
200 OK
Удаленный адрес:
65.108.5.254:443
Политика источника ссылки:
strict-origin-when-cross-origin
accept-ranges:
bytes
cache-control:
max-age=1468800
content-disposition:
attachment
content-length:
9303188
content-type:
audio/mpeg
date:
Fri, 29 Nov 2024 15:56:19 GMT
last-modified:
Sat, 19 Dec 2020 03:11:17 GMT
server:
nginx
x-cache-status:
HIT
:authority:
cdn4.deliciouspeaches.com
:method:
GET
:path:
/get/music/20201219/Eminem_White_Gold_-_Zeus_72019813.mp3
:scheme:
https
accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
accept-encoding:
gzip, deflate, br, zstd
accept-language:
ru,en;q=0.9,en-GB;q=0.8,en-US;q=0.7
dnt:
1
priority:
u=0, i
referer:
https://rus.hitmotop.com/
sec-ch-ua:
"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"
sec-ch-ua-mobile:
?0
sec-ch-ua-platform:
"Windows"
sec-fetch-dest:
document
sec-fetch-mode:
navigate
sec-fetch-site:
cross-site
sec-fetch-user:
?1
upgrade-insecure-requests:
1
user-agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0
👈