qwertyadrian / vk-music-downloader Goto Github PK
View Code? Open in Web Editor NEWПрограмма для скачивания музыки пользователей (и не только) ВКонтакте
License: GNU General Public License v3.0
Программа для скачивания музыки пользователей (и не только) ВКонтакте
License: GNU General Public License v3.0
Ловлю ошибки при получении аудиозаписей, когда метод аутентификации вызывается с token_only=True.
Воспроизводится на аудиозаписях пользователя. Возможно требуется большое кол-во аудиозаписей.
В отладке вижу, что внутри метода tracks = self.vk_audio.get(owner_id, album_id, access_hash) от вк получаю html страницы аудиозаписей вместо json.
После установки token_only=False ошибки перестали воспроизводиться.
Логику проблемы не понимаю, но в моем скрипте получения аудиозаписей первичная аутентификация осуществляется с auth() c token_only=False по логин-паролю, потом локально сохраняется auth_token, при следующих аутентификациях передается логин+токен (логин не помню, нужен ли), при этом auth вызывается с token_only=True.
Наверное здесь тоже стоит переделать на первичную аутентификацию по логин-паролю с token_only=False, сохранять токен (тоже в keyring?) и дальше использовать его с token_only=True.
В истории репо вижу, что была какая-то аутентификация по токену, с ней были какие-то проблемы?
Привет.
Заметил, что текущий метод конвертации m3u8_to_mp3 пережимает скачиваемые треки внутри audioclip.write_audiofile.
Протестировал ручной вызов ffmpeg с параметрами -c:a copy. Результат получается значительно лучше, медиаинфо приложил ниже.
tmp_file = NamedTemporaryFile(delete=False, suffix=".mp3")
tmp_file.write(ts_content)
tmp_file.close()
import subprocess
FFMPEG_PATH = 'C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe'
subprocess.run([FFMPEG_PATH, "-y", "-i", tmp_file.name, "-c:a", "copy", name])
os.unlink(tmp_file.name)
Попробовал разными вариантами передать подобные аргументы в moviepy через ffmpeg_params или как-то по-другому починить moviepy, не разобрался и не хочется особо тратить на это время. В описании AudioFileClip написано, что он сначала переводит все форматы в wav, потом в финальный, может это как-то связано.
Предлагаю от moviepy совсем отказаться, вызывать ffmpeg вручную примерно как в коде выше.
Тогда встает вопрос с установкой ffmpeg. Можно добавить конфиг, чтобы пользователь указывал к нему путь, но предлагаю стырить код автоустановки через imageio из moviepy.
Если нет замечаний к описанному выше, могу заняться, но вряд ли в ближайшее время.
Оригинал:
General
Complete name : F:\Music\Discography\Alstroemeria Records[2013] REBIRTH DANCEHALL\09. TWOROCKS.mp3
Format : MPEG Audio
File size : 10.4 MiB
Duration : 5 min 30 s
Overall bit rate mode : Variable
Overall bit rate : 263 kb/s
Album : REBIRTH DANCEHALL
Album/Performer : Alstroemeria Records
Part/Position : 1
Part/Total : 1
Track name : TWOROCKS
Track name/Position : 9
Track name/Total : 13
Performer : 綾倉盟
Genre : Touhou
Recorded date : 2013
Writing library : LAME3.99r
Comment : Ripped by microlah @ Rizon #Comiket, EAC V1.0 beta 3, Secure Mode, Test & Copy, AccurateRip, FLAC -8
DISCID : ISCIDAudio
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 3
Format settings : Joint stereo
Duration : 5 min 30 s
Bit rate mode : Variable
Bit rate : 263 kb/s
Minimum bit rate : 32.0 kb/s
Channel(s) : 2 channels
Sampling rate : 44.1 kHz
Frame rate : 38.281 FPS (1152 SPF)
Compression mode : Lossy
Stream size : 10.4 MiB (100%)
Writing library : LAME3.99r
Encoding settings : -m j -V 0 -q 0 -lowpass 22.1 --vbr-new -b 32
Текущий код с moviepy:
General
Complete name : D:\Downloads\tmp\vkmusic\test\綾倉盟 - TWOROCKS moviepy.mp3
Format : MPEG Audio
File size : 5.04 MiB
Duration : 5 min 30 s
Overall bit rate mode : Constant
Overall bit rate : 128 kb/s
Track name : TWOROCKS
Performer : 綾倉盟Audio
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 3
Format settings : Joint stereo / MS Stereo
Duration : 5 min 30 s
Bit rate mode : Constant
Bit rate : 128 kb/s
Channel(s) : 2 channels
Sampling rate : 44.1 kHz
Frame rate : 38.281 FPS (1152 SPF)
Compression mode : Lossy
Stream size : 5.04 MiB (100%)
Прямое копирование через ffmpeg:
General
Complete name : D:\Downloads\tmp\vkmusic\test\綾倉盟 - TWOROCKS ffmpeg copy.mp3
Format : MPEG Audio
File size : 10.4 MiB
Duration : 5 min 30 s
Overall bit rate mode : Variable
Overall bit rate : 263 kb/s
Track name : TWOROCKS
Performer : 綾倉盟
Writing library : LAME3.99.5Audio
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 3
Format settings : Joint stereo
Duration : 5 min 30 s
Bit rate mode : Variable
Bit rate : 263 kb/s
Channel(s) : 2 channels
Sampling rate : 44.1 kHz
Frame rate : 38.281 FPS (1152 SPF)
Compression mode : Lossy
Stream size : 10.4 MiB (100%)
Writing library : LAME3.99.5
Не работает
Мой профиль
Где инструкция по использованию?
При получение альбомов
albums = [vk_audio.get_albums(id['id'])]
выбрасывает ошибку:
invalid literal for int() with base 10: '1,729'
<class 'ValueError'>
Если закомментировать альбомы, то все работает как надо
Тестировалось для загрузки музыки этого мсье
OS X Mojave 10.14
Python 3.7.1
vk_api 11.3.0
bs4 0.0.1
В последнем обновлении появился противный мелкий баг: в случае, если аудиозаписи пользователя закрыты, то программа вылетает. Также нет никакой инструкции по скачиванию и/или больших кнопок, как в предыдущих версиях.
Привет! Программа выдает такую ошибку. Логин пароль и ссылку на свой профиль прописал. Аккаунт открытый. Когда нажиму. кнопку получить аудиозаписи, выдает такую ошибку. ОС Windows. Запускал через PyCharm. В чем может быть дело?
File "\vk-music-downloader-master\audio_app.py", line 143, in get_audio_list
self.keyring.delete_password('vk_music_downloader', os.getlogin())
File "\Python\Python37-32\lib\site-packages\keyrings\cryptfile\file_base.py", line 188, in delete_password
raise PasswordDeleteError("Password not found")
keyring.errors.PasswordDeleteError: Password not found
Temporary fix:
if self.saveData.isChecked():
data = self.login.text() + '|' + self.password.text() + '|' + self.user_link.text()
self.keyring.set_password('vk_music_downloader', os.getlogin(), data)
else:
try:
self.keyring.delete_password('vk_music_downloader', os.getlogin())
except Exception as inst:
print(inst)
Не может залогиниться, без логина приложуха не работает, надо менять авторизацию.
P.S: Если проект заброшен, напиши тогда в readme.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.