def last_fm(update: Update, _): msg = update.effective_message user = update.effective_user.first_name user_id = update.effective_user.id username = sql.get_user(user_id) if not username: msg.reply_text("You haven't set your username yet!") return base_url = "http://ws.audioscrobbler.com/2.0" res = requests.get( f"{base_url}?method=user.getrecenttracks&limit=3&extended=1&user={username}&api_key={LASTFM_API_KEY}&format=json" ) if res.status_code != 200: msg.reply_text( "Hmm... something went wrong.\nPlease ensure that you've set the correct username!" ) return try: first_track = res.json().get("recenttracks").get("track")[0] except IndexError: msg.reply_text("You don't seem to have scrobbled any songs...") return if first_track.get("@attr"): # Ensures the track is now playing image = first_track.get("image")[3].get( "#text") # Grab URL of 300x300 image artist = first_track.get("artist").get("name") song = first_track.get("name") loved = int(first_track.get("loved")) rep = f"{user} is currently listening to:\n" if not loved: rep += f"🎧 <code>{artist} - {song}</code>" else: rep += f"🎧 <code>{artist} - {song}</code> (♥️, loved)" if image: rep += f"<a href='{image}'>\u200c</a>" else: tracks = res.json().get("recenttracks").get("track") track_dict = { tracks[i].get("artist").get("name"): tracks[i].get("name") for i in range(3) } rep = f"{user} was listening to:\n" for artist, song in track_dict.items(): rep += f"🎧 <code>{artist} - {song}</code>\n" last_user = requests.get( f"{base_url}?method=user.getinfo&user={username}&api_key={LASTFM_API_KEY}&format=json" ).json().get("user") scrobbles = last_user.get("playcount") rep += f"\n(<code>{scrobbles}</code> scrobbles so far)" buttons = InlineKeyboardMarkup([[ InlineKeyboardButton( "📺 Youtube", url= f'https://www.youtube.com/results?search_query={artist}+-+{song}') ]]) msg.reply_text(rep, reply_markup=buttons, parse_mode=ParseMode.HTML)
def last_fm(bot: Bot, update: Update): msg = update.effective_message user = update.effective_user.first_name user_id = update.effective_user.id username = sql.get_user(user_id) if not username: msg.reply_text("Anda belum menyetel nama pengguna Anda!") return base_url = "http://ws.audioscrobbler.com/2.0" res = requests.get( f"{base_url}?method=user.getrecenttracks&limit=3&extended=1&user={username}&api_key={LASTFM_API_KEY}&format=json" ) if not res.status_code == 200: msg.reply_text( "Hmm ... ada yang tidak beres.\nHarap pastikan bahwa Anda telah menyetel nama pengguna yang benar!" ) return try: first_track = res.json().get("recenttracks").get("track")[0] except IndexError: msg.reply_text("Sepertinya Anda tidak memiliki lagu apa pun...") return if first_track.get("@attr"): # Ensures the track is now playing image = first_track.get("image")[3].get( "#text") # Grab URL of 300x300 image artist = first_track.get("artist").get("name") song = first_track.get("name") loved = int(first_track.get("loved")) rep = f"{user} is currently listening to:\n" if not loved: rep += f"🎧 <code>{artist} - {song}</code>" else: rep += f"🎧 <code>{artist} - {song}</code> (♥️, loved)" if image: rep += f"<a href='{image}'>\u200c</a>" else: tracks = res.json().get("recenttracks").get("track") track_dict = { tracks[i].get("artist").get("name"): tracks[i].get("name") for i in range(3) } rep = f"{user} was listening to:\n" for artist, song in track_dict.items(): rep += f"🎧 <code>{artist} - {song}</code>\n" last_user = (requests.get( f"{base_url}?method=user.getinfo&user={username}&api_key={LASTFM_API_KEY}&format=json" ).json().get("user")) scrobbles = last_user.get("playcount") rep += f"\n(<code>{scrobbles}</code> scrobbles so far)" msg.reply_text(rep, parse_mode=ParseMode.HTML)
def last_fm(bot: Bot, update: Update): msg = update.effective_message user = update.effective_user.first_name user_id = update.effective_user.id username = sql.get_user(user_id) if not username: msg.reply_text("You haven't set your username yet!") return base_url = "https://www.last.fm/account" res = requests.get(f"{base_url}?method=user.getrecenttracks&limit=3&extended=1&user={username}&api_key={7ddc63ccc7e331e58febb45d5fd558fb}&format=json") if not res.status_code == 200: msg.reply_text("Hmm... something went wrong.\nPlease ensure that you've set the correct username!") return try: first_track = res.json().get("recenttracks").get("track")[0] except IndexError: msg.reply_text("You don't seem to have scrobbled any songs...") return if first_track.get("@attr"): # Ensures the track is now playing image = first_track.get("image")[3].get("#text") # Grab URL of 300x300 image artist = first_track.get("artist").get("name") song = first_track.get("name") loved = int(first_track.get("loved")) rep = f"{user} is currently listening to:\n" if not loved: rep += f"🎧 <code>{artist} - {song}</code>" else: rep += f"🎧 <code>{artist} - {song}</code> (♥️, loved)" if image: rep += f"<a href='{image}'>\u200c</a>" else: tracks = res.json().get("recenttracks").get("track") track_dict = {tracks[i].get("artist").get("name"): tracks[i].get("name") for i in range(3)} rep = f"{user} was listening to:\n" for artist, song in track_dict.items(): rep += f"🎧 <code>{artist} - {song}</code>\n" last_user = requests.get(f"{base_url}?method=user.getinfo&user={username}&api_key={7ddc63ccc7e331e58febb45d5fd558fb}&format=json").json().get("user") scrobbles = last_user.get("playcount") rep += f"\n(<code>{scrobbles}</code> scrobbles so far)" msg.reply_text(rep, parse_mode=ParseMode.HTML)