Загрузка музыки ВКонтакте / Хабр
Доброго времени суток всем.
Захотелось мне скачать всю мою музыку со ВКонтакте на флешку, как в старые добрые времена. Немного погуглив и не найдя практически ничего более менее приемлемого, я решил действовать своими силами. Спустя пол часа получился вполне себе рабочий скрипт. Итак, начнём.
Для работы нужно скачать модули vk_api и request!
Для начала подключим необходимые модули и объявим некоторые переменные:
import os import pickle import vk_api import requests from vk_api import audio from time import time vk_file = "vk_config.v2.json" REQUEST_STATUS_CODE = 200 path = 'vk_music/'
Теперь напишем метод авторизации в аккаунт ВКонтакте:
def Auth(new=False): try: USERDATA_FILE = r"AppData/UserData.datab" #файл хранит логин, пароль и id global my_id # объявляем переменную глобально, дабы иметь к ней доступ из других методов # проверяем, нет ли сохранённых данных авторизации? Если есть, то загружаем if (os.path.exists(USERDATA_FILE) and new == False): with open(USERDATA_FILE, 'rb') as DataFile: LoadedData = pickle.load(DataFile) login = LoadedData[0] password = LoadedData[1] my_id = LoadedData[2] else: # если есть, но пользователь выбрал новую авторизацию, то удаляем данных и просим ввести новые if (os.path.exists(USERDATA_FILE) and new == True): os.remove(USERDATA_FILE) login = str(input("Введите логин\n> ")) password = str(input("Введите пароль\n> ")) my_id = str(input("Введите id профиля\n> ")) SaveUserData(login, password, my_id) SaveData = [login, password, my_id] with open(USERDATA_FILE, 'wb') as dataFile: pickle.dump(SaveData, dataFile) # сохраняем введённые данные vk_session = vk_api.VkApi(login=login, password=password) try: vk_session.auth() # пробуем авторизоваться, если возникнет исключение, значит у пользователя включена двухфакторная аутентификация. Просим ввести код. except: vk_session = vk_api.VkApi(login=login, password=password, auth_handler=auth_handler) # auth_handler=auth_handler - вызываем метод, см. далее vk_session.auth() print('Вы успешно авторизовались.') vk = vk_session.get_api() global vk_audio # объявляем глобально, дабы иметь доступ из других методов vk_audio = audio.VkAudio(vk_session) except KeyboardInterrupt: print('Вы завершили выполнение программы.')
Метод будет проверять, не авторизовывались ли мы уже раньше? Если такое было, то можно будет продолжить в этом аккаунте, или авторизоваться по-новой. В этом случае старые данные будут стёрты.
Далее напишем метод auth_handler, который нужен для авторизации в аккаунтах, в которых включена двухфакторная аутентификация:
def auth_handler(): code = input("Введите код подтверждения\n> ") remember_device = True # True - запоминаем и не просим каждый раз вводить код return code, remember_device
И так, теперь мы можем авторизоваться во ВКонтакте. В методе Auth упомянался метод SaveUserData(), он нужен для сохранения данных. Напишем его:
def SaveUserData(login, password, profile_id): USERDATA_FILE = r"AppData/UserData.datab" if (not os.path.exists("AppData")): # если нет папки AppData - создадим ее os.mkdir("AppData") SaveData = [login, password, profile_id] # список данных для сохранения with open(USERDATA_FILE, 'wb') as dataFile: # собственно записываем данные в файл pickle.dump(SaveData, dataFile)
Данные будут записаны в бинарном виде, дабы не хранить логин и пароль пользователя в открытом виде.
Осталось написать метод загрузки аудио со ВКонтакте, давайте это и сделаем:
def main(): try: if (not os.path.exists("AppData")): os.mkdir("AppData") if not os.path.exists(path): os.makedirs(path) # спросим пользователя, нужно ли авторизоваться по-новой или продолжить старую сессию auth_dialog = str(input("Авторизоваться заново? yes/no\n> ")) if (auth_dialog == "yes"): Auth(new=True) elif (auth_dialog == "no"): Auth(new=False) else: print('Ошибка, неверный ответ. ') main() print('Подготовка к скачиванию...') os.chdir(path) #меняем текущую директорию audio = vk_audio.get(owner_id=my_id)[0] print('Будет скачано:', len(vk_audio.get(owner_id=my_id)), 'аудиозаписей.') count = 0 time_start = time() print("Скачивание началось...\n") # этим циклом, собственно, и скачиваем нашу музыку. for i in vk_audio.get(owner_id=my_id): try: print('Скачивается: ' + i["artist"] + " - " + i["title"]) count += 1 r = requests.get(audio["url"]) if r.status_code == REQUEST_STATUS_CODE: print('Скачивание завершено: ' + i["artist"] + " - " + i["title"]) with open(i["artist"] + ' - ' + i["title"] + '.mp3', 'wb') as output_file: output_file.write(r.content) except OSError: print("!!! Не удалось скачать аудиозапись №", count) time_finish = time() print("" + vk_audio.get(owner_id=my_id) + " аудиозаписей скачано за: ", time_finish - time_start + " сек.") except KeyboardInterrupt: print('Вы завершили выполнение программы.')
Ну вот и всё. Теперь у нас есть рабочий скрипт для загрузки аудиозаписей из ВКонтакте.
Вот так выглядит весь исходный код:
Показать исходный код
import os import pickle import vk_api import requests from vk_api import audio from time import time __version__ = 'VK Music Downloader v1.0' APP_MESSAGE = ''' _ . ___ /\\ | | | \\ | | | \\ / | / /__\\ | | | \\ | | | \\ / |/ / \\ |___| |__/ | |___| \\/ |\\ ''' vk_file = "vk_config.v2.json" REQUEST_STATUS_CODE = 200 path = 'vk_music/' def auth_handler(remember_device=None): code = input("Введите код подтверждения\n> ") if (remember_device == None): remember_device = True return code, remember_device def SaveUserData(login, password, profile_id): USERDATA_FILE = r"AppData/UserData.datab" SaveData = [login, password, profile_id] with open(USERDATA_FILE, 'wb') as dataFile: pickle.dump(SaveData, dataFile) def Auth(new=False): try: USERDATA_FILE = r"AppData/UserData.datab" #файл хранит логин, пароль и id global my_id if (os.path.exists(USERDATA_FILE) and new == False): with open(USERDATA_FILE, 'rb') as DataFile: LoadedData = pickle.load(DataFile) login = LoadedData[0] password = LoadedData[1] my_id = LoadedData[2] else: if (os.path.exists(USERDATA_FILE) and new == True): os.remove(USERDATA_FILE) login = str(input("Введите логин\n> ")) password = str(input("Введите пароль\n> ")) my_id = str(input("Введите id профиля\n> ")) SaveUserData(login, password, my_id) SaveData = [login, password, my_id] with open(USERDATA_FILE, 'wb') as dataFile: pickle. dump(SaveData, dataFile) vk_session = vk_api.VkApi(login=login, password=password) try: vk_session.auth() except: vk_session = vk_api.VkApi(login=login, password=password, auth_handler=auth_handler) vk_session.auth() print('Вы успешно авторизовались.') vk = vk_session.get_api() global vk_audio vk_audio = audio.VkAudio(vk_session) except KeyboardInterrupt: print('Вы завершили выполнение программы.') def main(): try: if (not os.path.exists("AppData")): os.mkdir("AppData") if not os.path.exists(path): os.makedirs(path) auth_dialog = str(input("Авторизоваться заново? yes/no\n> ")) if (auth_dialog == "yes"): Auth(new=True) elif (auth_dialog == "no"): Auth(new=False) else: print('Ошибка, неверный ответ.') main() print('Подготовка к скачиванию. ..') os.chdir(path) #меняем текущую директорию audio = vk_audio.get(owner_id=my_id)[0] print('Будет скачано:', len(vk_audio.get(owner_id=my_id)), 'аудиозаписей.') count = 0 time_start = time() # сохраняем время начала скачивания print("Скачивание началось...\n") # собственно циклом загружаем нашу музыку for i in vk_audio.get(owner_id=my_id): try: print('Скачивается: ' + i["artist"] + " - " + i["title"]) # выводим информацию о скачиваемой в данный момент аудиозаписи count += 1 r = requests.get(audio["url"]) if r.status_code == REQUEST_STATUS_CODE: print('Скачивание завершено: ' + i["artist"] + " - " + i["title"]) with open(i["artist"] + ' - ' + i["title"] + '.mp3', 'wb') as output_file: output_file.write(r.content) except OSError: print("!!! Не удалось скачать аудиозапись №", count) time_finish = time() print("" + vk_audio. get(owner_id=my_id) + " аудиозаписей скачано за: ", time_finish - time_start + " сек.") except KeyboardInterrupt: print('Вы завершили выполнение программы.') if __name__ == '__main__': print(APP_MESSAGE) print(__version__ + "\n") main()
Я только учусь, поэтому буду рад всем замечаниям в коде. Спасибо за внимание.
Download Mp3 Vk Mp3 Download Chrome or Listen Free [1.19 MB] ~ MP3 Music Download
Descargue Vk Mp3 Download Chrome mp3 gratis, rápido y fácil ~ Vk Mp3 Download Chrome (1.19 MB) canción y escuche Vk Mp3 Download Chrome (00: 52 мин.) популярные песни в формате MP3 Music Download.
00:52 1,19 МБ 582
vk mp3 downloader, chrome vk mp3 downloader, скачать мп3 вконтакте
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
01:06 1,51 МБ 151 557 862
Бегите так быстро, как только можете, через метро и уворачивайтесь от встречных поездов. Помогите Джейку, Трикки и остальной команде сбежать от инспектора и…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
01:02 1,42 МБ 279
Как скачать музыку с помощью мобильных данных на Android или iPhone IOS Подпишитесь на How to Media, чтобы получить больше решений ваших проблем! Если это видео…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
00:30 703,13 КБ 28 460
vk. com mp3 загрузчик, vkontake mp3 загрузчик, vk mp3 загрузчик, vk загрузчик музыки, vkontakte загрузчик музыки vkdownloader.net
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
04:53 6,71 МБ 1 918 005 253
Настало время для пляжного буйства! Говорящая Анджела и Говорящий Том обсуждают однодневную поездку на море, чтобы повеселиться на солнышке! Убедись в…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
03:52 5,31 МБ 5 539
Скачать музыкальный мусор из гугл хром
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
08:10 11,22 МБ 7 133
если вы проводите много времени в вконтакте, и у вас много интересных видео, вы можете легко скачать эти видео на свой компьютер. Есть много…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
02:42 3,71 МБ 7 601
VK Music Player — неофициальное приложение для прослушивания музыки из социальной сети ВКонтакте • Все ваши аудиозаписи доступны в…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
01:19 1,81 МБ 18 429
Это видео-урок по скачиванию песен из интернета, конкретно с vk. com. Отвечает на такие вопросы, как скачивание песен с…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
15:30 21,29 МБ 242 459 350
Влад и Ники — новые смешные истории про игрушки — видео подборка с игрушками для детей Пожалуйста подпишитесь! Скачать приложение Влад и Ники: …
Download MP4
Download MP3
Fast Download
Download Video
Download Mp3 Download Vk Mp3 or Listen Free [1.81 MB] ~ MP3 for Mp3 Download mp3 fast
9 бесплатно easy ~ Скачать песню Vk Mp3 (1.81 MB) и прослушать популярную песню Download Vk Mp3 (01:19 Min) на MP3 Music Download.01:19 1,81 МБ 18 429
Это видео-урок по скачиванию песен из интернета, конкретно с vk. com. Отвечает на такие вопросы, как скачивание песен с…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
04:52 6,68 МБ 540 823 741
Дети с удовольствием играют в полицейских и гонщиков. Мама и дети играют в магазин мороженого. Дети изображают игру в суши-кафе. Веселые игровые истории с Владом, Никитой…
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
01:12 1,65 МБ 16 816
Это видео-мануал как легально скачать музыку с vk. com с помощью Download Music Pro
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
02:12 3,02 МБ 4 135
Есть 5 простых шагов, чтобы скачать музыку из вк.
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
03:52 5,31 МБ 5 539
Скачать музыкальный мусор из гугл хром
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
02:37 3,59 МБ 807
Вы можете бесплатно скачать все новые старые треки из ВК! На iPhone любых моделей Не забудь поставить лайк и подписку, начинаю снимать новые. ..
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
00:30 703,13 КБ 28 460
vk.com mp3 загрузчик, vkontake mp3 загрузчик, vk mp3 загрузчик, vk загрузчик музыки, vkontakte загрузчик музыки vkdownloader.net
Скачать MP4
Скачать MP3
Быстрая загрузка
Скачать видео
02:42 3,71 МБ 7 601
VK Music Player — неофициальное приложение для прослушивания музыки из социальной сети ВКонтакте • Все ваши аудиозаписи доступны в.
Ваш комментарий будет первым