def audio_row_callback(call): try: audio_split = call.data.split(';') row_number = int(audio_split[1]) song_name = call.message.json["reply_markup"]["inline_keyboard"][ row_number][0]["text"] if ".mp3" in audio_split[2]: song_name = song_name + ".mp3" # download the chosen song from the private dropbox cloud if '#' in audio_split[3]: tag = audio_split[3] folder = music_dict[tag] metadata, res = dbx.files_download(path="/Music/" + folder + "/" + song_name) bot.send_audio(call.from_user.id, res.content, title=song_name.replace(".mp3", "")) # download the chosen song from the public vk else: # autorisation process vk_session = vk_api.VkApi(vk_login, vk_password) vk_session.auth(token_only=True) vk = vk_session.get_api() vk_audio = VkAudio(vk_session) ### track = vk_audio.get_audio_by_id(int(audio_split[3]), int(audio_split[4])) res = requests.get(track['url']) bot.send_audio(call.from_user.id, res.content, title=track['artist'] + ' - ' + track['title']) except Exception as e: print('Error in audio_row_callback:', e) print(traceback.format_exc())
import vk_api import login_config from libs.RawLink import RawLink def two_factor() -> Tuple[str, bool]: code = input("Code? ") return code, True vk_session = vk_api.VkApi(login_config.LOGIN, login_config.PASSWORD, auth_handler=two_factor) vk_session.auth() vk_audio = VkAudio(vk_session) local_session = session_factory() all_audio: List[RawLink] = local_session.query(RawLink).filter( RawLink.type == 'audio').all() for audio in all_audio: audio_obj: dict = vk_audio.get_audio_by_id(audio.owner_id, audio.id) audio.url = audio_obj.get('url') audio.track_code = audio_obj.get('track_code') local_session.add(audio) local_session.commit() local_session.close()