eshitayotgan qo'shiqingizni telegramda ulashing

Oct 10, 2024 - 410 words
g'oya asosan discordning spotify integratsiyasidan o'g'irlangan

Inspiration

Anchadan beri discordni ishlatib kelaman chunki u hozirgi eng "fun" ijtimoiy tarmoqlardan biri. U bir qancha qiziqarli qulayliklarni taklif qiladi. ulardan biri bu Spotify aqqountingizni discord profilingizga ulab qo'yish va u orqali ayni payta eshitayotgan qo'shiqingiz do'stlaringiz ko'rishi mumkin. Yaqinda Instagram ham shunga o'xshash xususiyat qo'shibti: unda siz bitta qo'shiqni tanlab uni follower laringizga tavsiya qilishingiz mumkin. Mani niyatim Discordnikiga o'xshgan narsani telegramda amalga oshirish edi.

Oxirgi eshitgan yoki anyi paytda eshitayotgan qo'shiqingizni telegram bioda ko'rsatish

Afsuski aniq jarayonni tasvirlab bero olmayman chunki bu proyektni 3 oycha avval boshlab oxiriga yetqazmasdan tashlab qo'ygan edim va bugun uni oxiriga yetqazdim. Shu sababdan ayrim jarayonlar esimdan chiqib ketgan. Ammo umumiy g'oya esimda va buni siz gam qayta yaratishingiz mumkin.

Last.fm orqali qo'shiqlarni olish

Birinchi navmatda last.fmda aqqount ochib, telefon yoki komputeringizga uning scrobbler dasturini o'rnating. U sizni spotify, soundcloud va boshqa Music Streaming service lardagi eshitgan qo'shiqlaringizni hisobini saqlaydi va uni api orqali olishingiz mumkin. Last.fm api orqali api key oling va uni havfsiz joyda saqlab qo'ying.

Telethon python

Telethon python telegram profilingizni yangilash imkonini beradi. Balkim boshqa api lar ham mavjuddir, lekin man topolganim telethon bo'ldi va uni yetarlicha sodda deb o'yliman. telethonning authentication qismini o'qib qanday profilni o'zgartishni o'rganib olishingiz mumkin. U sizdan Telegram API ID, Telegram API hash ni olishingizni so'raydi. Biz faqat shu ikki api bilan aloqa qilish orqali mo'ljallangan natijaga erisha olamiz.

Yakuniy maxsulot

Quyidagi code har 3 daqiqadi Last.fm dan ohirgi marta man eshitgan qo'shiqni olib, mani telegram bio imga qo'yadi. Mani api keylarim .env faylda joylashgan, sizgaham shuni tavfsiya qilaman. pastagi code yaxshi ko'rsatilmagan bo'lsa githubda ko'rishingiz mumkin. ishlayotgan python code:

from telethon.sync import TelegramClient
from telethon.tl.functions.account import UpdateProfileRequest

import os
from dotenv import load_dotenv

import requests
import pprint
import time


load_dotenv()

FM_API_KEY = os.getenv('FM_API_KEY') 

TG_API_ID = os.getenv('TG_API_ID') 
TG_API_HASH = os.getenv('TG_API_HASH') 
tg_client = TelegramClient('anon', TG_API_ID, TG_API_HASH)
print(tg_client)





headers = {
    'user-agent': 'nowPlaying'
}
payload = {
    'api_key': FM_API_KEY,
    'method': 'user.getrecenttracks',
    'user': 'boundless-sher',
    'limit': 10,
    'format': 'json'
}


async def get_latest_songs():
    r = requests.get('https://ws.audioscrobbler.com/2.0', headers=headers, params=payload)
    status_code = r.status_code
    print('status code', status_code)

    if(status_code == 200):
        data = r.json()
        song_info = {}
        last_track = data['recenttracks']['track'][0]
        song_name = last_track['name']
        artist = last_track['artist']['#text']

        song_info['song_name'] = song_name
        song_info['artist'] = artist
        print('song info', song_info)
        return song_info

    else:
        print('something went wrong with last.fm api, trying again...')
        get_latest_songs()


async def update_tg_bio():
    song_info = await get_latest_songs()
    await tg_client(UpdateProfileRequest(about=f"oxirgi qo'shiq: {song_info['song_name']} - {song_info['artist']}"))
    me = await tg_client.get_me()
    print(me.stringify())


while(1):
    print('main')
    with tg_client:
        print('updating')
        tg_client.loop.run_until_complete(update_tg_bio())

    time.sleep(60 * 3)