Гостевая статья Транслируем музыку в Телеграм статус [PYTHON]

1607926331990.png

Всем привет! Сегодня я покажу как транслировать музыку в статус Телеграм, в итоге у вас получится вот это(Почти как в Дискорде):
1607927259909.png

Приступим!
1. Скачать Python
Думаю с этим проблем не возникнет, так что дальше
2. Пишем код
Импротируем библиотеки:

Python:
import time
import typing
import spotipy
import config
from spotipy.oauth2 import SpotifyOAuth
from telethon.sync import TelegramClient
from telethon import functions, types
Логинимся, как в телеграм, так и в Спотифай Api
Код:
api_id = config.api_id
api_hash = config.api_hash

spotify = spotipy.Spotify(
    auth_manager=SpotifyOAuth(
        scope="user-read-currently-playing",
        client_id=config.client_id,
        client_secret=config.client_secret,
        redirect_uri=config.redirect_uri,
        username=config.spotiusername,
    )
)
Создаём функцию, которая получает название играющей песни и обновляет его в Телеграм статусе:
Python:
current_playing = typing.List[typing.Union[str, str, str]]

def update_status(_current_playing):
    current = spotify.current_user_playing_track()
    if not current is None:

        track = current["item"]["name"]
        album = current["item"]["album"]["name"]
        artist = current["item"]["artists"][0]["name"]

        if _current_playing != [track, album, artist]:
            muzon = "🎧 Spotify | " + artist + " - " + track
           
            with TelegramClient('anon', api_id, api_hash) as client:
                result = client(functions.account.UpdateProfileRequest(about=muzon))
            print(f"🎧 Spotify | {track} - {artist}")

        return [track, album, artist]

    if not _current_playing is None:
        print("None")
   
    return
И далее зацикливаем:
Python:
if __name__ == '__main__':
    try:
        while True:
            # print("Получаю обновления")
            current_playing = update_status(current_playing)
            time.sleep(8)

    except Exception as e:
        print(e)
3. Пишем конфиг-файл:
Вот он(config.py):

Python:
#====Telegram====
api_id = your api_id #my.telegram.org
api_hash = 'your api_hash' #my.telegram.org
#====Spotify==== All lines in https://developer.spotify.com/dashboard/applications/
client_id = "your client_id"
client_secret = "your client_secret"
redirect_uri = "http://localhost:8888/callback" #Dont touch!!!
spotiusername = "your name in Spotify"

3.1 Telegram:

Сначала идём сюда: my.telegram.org, далее логинимся, и нажимаем сюда:
1607928464109.png

Создаём приложение и в приложение выбираем тип Web.
В итоге получится вот так:
1607928635440.png

НИКОМУ НЕ СООБЩАЙТЕ ЭТИ ДАННЫЕ! ИНАЧЕ ПОТЕРЯЕТЕ АККАУНТ СО ВСЕМИ ПЕРЕПИСКАМИ!
Далее пишем в config.py api_id и api_hash.
3.2 Spotify
Перейдём к настройке спотифай api

Перейдите к
1607928908317.png

И создайте новое приложение (У меня оно уже было создано)
Перейдите в придожение, и перейдите в его настройки
1607928994324.png

И измените строку Redirect URIs line на
1607929049827.png

И обязательно сохраните результат:
1607929092514.png

4. Установа библиотек и запуск
Создайте файл requirements.txt и впишите в него:

Код:
certifi
chardet
idna
python-dotenv
requests
six
spotipy
urllib3
Telethon
pyTelegramBotAPI
И пропишите: pip install -r requirements.txt
4.1 Запуск:
Запустите main.py, который создали выше, после запуска он потребует пройти регистрацию на открывшемся сайте и в коммандной строке пройти регистрацию в телеграме (Всё выполняем)
На этом всё! Вот полный код: XuliGan4eg2006/Stream-music-from-Spotify
 

Вложения

  • 1607928700492.png
    1607928700492.png
    8,8 КБ · Просмотры: 178
  • Нравится
Реакции: zalexdev
Здравствуйте, все работатет , но возник вопрос, можно ли сделать так , когда не играет трек на его место возвращалось старое био?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!