GithubHelp home page GithubHelp logo

qwertyadrian / vk-music-downloader Goto Github PK

View Code? Open in Web Editor NEW
28.0 28.0 4.0 917 KB

Программа для скачивания музыки пользователей (и не только) ВКонтакте

License: GNU General Public License v3.0

Python 96.22% Makefile 0.32% CSS 1.69% HTML 1.77%
audio audio-library music vk vk-audio vk-music vk-music-downloader vkontakte

vk-music-downloader's Introduction

Metrics

vk-music-downloader's People

Contributors

qwertyadrian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vk-music-downloader's Issues

Ошибки получения аудиозаписей

Ловлю ошибки при получении аудиозаписей, когда метод аутентификации вызывается с 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.

Если нет замечаний к описанному выше, могу заняться, но вряд ли в ближайшее время.

Mediainfo:

Оригинал:

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 : ISCID

Audio
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.5

Audio
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

ValueError

При получение альбомов
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

Множество неприятных багов\фишек

В последнем обновлении появился противный мелкий баг: в случае, если аудиозаписи пользователя закрыты, то программа вылетает. Также нет никакой инструкции по скачиванию и/или больших кнопок, как в предыдущих версиях.

Ошибка[3] Unknown method passed

Привет! Программа выдает такую ошибку. Логин пароль и ссылку на свой профиль прописал. Аккаунт открытый. Когда нажиму. кнопку получить аудиозаписи, выдает такую ошибку. ОС Windows. Запускал через PyCharm. В чем может быть дело?

Uncatched exception in audio_app.py:143

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)

API auth error (no login cookies)

Не может залогиниться, без логина приложуха не работает, надо менять авторизацию.

P.S: Если проект заброшен, напиши тогда в readme.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.