Комментарии 60
А мне всегда было интересно сделать флешку VK. Кстати тут проскакивала статья про псевдо фс на stm, надо будет попробовать.
Давно когда-то была интересная статья на эту тему: VKFS — Файловая система для VKontakte на основе Fuse
Вы о ней? И что за идея с «флешкой»?
Вы о ней? И что за идея с «флешкой»?
Не совсем, идея скорее всего маразматична. Но мысль в том что бы на лету через 3G грузить файлы. и подсовывать файловой системе магнитолы. Но это больше не реализуемо, чем реализуемо
Я посмотрел тот ресурс, что вам кинул. Похоже, что автор упёрся в капчу, которую на магнитоле не ввести.
Кстати, тогда, получается, я помню была ещё одна статья, где файловую систему симулировали на каком-то контроллере. Как раз можно было бы обмануть магнитолу.
Кстати, тогда, получается, я помню была ещё одна статья, где файловую систему симулировали на каком-то контроллере. Как раз можно было бы обмануть магнитолу.
Написал похожее же под айфон, потому что там ни одно бесплатное приложение из эппстора не соглашается кешировать музыку из вк(платные не смотрел). Это сохраняет их на диск и требует инета только для получения списка песен(потом и это будет кешироваться, пока некогда заняться)
github.com/MaxPovver/VKPlayer
В эппсторе нет, но если вы эпплоразраб, можете под себя исходники перекомпилить, только с id приложения не уверен будет ли работать. Ну и вк-сдк в репозитории нет — сессия, не до того, но, думаю, сами найдете.
github.com/MaxPovver/VKPlayer
В эппсторе нет, но если вы эпплоразраб, можете под себя исходники перекомпилить, только с id приложения не уверен будет ли работать. Ну и вк-сдк в репозитории нет — сессия, не до того, но, думаю, сами найдете.
ну ему пришлось сильно функционал порезать, чтобы пропустили. и еще пишут, что оно не может в бэкграунд, а в моем смысл именно в этом — запустил, и играет оно себе в фоне, пока ты в том же приложении хабра сидишь
На последней iOS даже не показывает интерефейса и сразу закрывается. Был бы рад посмотреть, но увы.
потому что там ни одно бесплатное приложение из эппстора не соглашается кешировать музыку из вк(платные не смотрел)Ну не знаю как там эппстор, но гугл плей подобные вещи банит относительно активно. Даже платные.
офф приложение вк кешировало, по крайней мере последний раз когда я андроид использовал…
офф приложение вроде не выдаёт оригинальные файлы (т.е. даёт слушать только внутри), чем сторонние приложения вроде не хворают
Я почти вручную качал:
Если вставить этот код в developer console, то скачается файл vk_music.txt, в нем будет:
Затем
var list = document.querySelectorAll('div.audio.fl_l');
var files = [];
for (var i = 0; i < list.length; i++) {
var tel = list[i];
var f_name = tel.querySelector('.title_wrap').innerText;
var f_url = tel.querySelector('input').value;
files.push(f_url+'\t'+f_name+'.mp3');
}
var a = document.createElement('a');
a.download = 'vk_music.txt';
var oUrl = URL.createObjectURL(new Blob([files.join("\n")], {type: 'text/plain'}));
a.href = oUrl;
a.click();
delete a;
URL.revokeObjectURL(oUrl);
Если вставить этот код в developer console, то скачается файл vk_music.txt, в нем будет:
URL<tab>track title.mp3
Все песни, которые видны на странице (без прокрутки)Затем
cat vk_music.txt |while read url name; do wget "$url" -O "$name" --no-check-certificate; done;
Спасибо!
Уж сколько раз собирался скрипт накидать, да всё руки не доходили. А тут так просто и легко для поддержки…
Добавил для авто-прокрутки в начало:
полностью:
Уж сколько раз собирался скрипт накидать, да всё руки не доходили. А тут так просто и легко для поддержки…
Добавил для авто-прокрутки в начало:
var scrollTop = -1;
var iv = setInterval( function() {
if (document.body.scrollTop > scrollTop) {
scrollTop = document.body.scrollTop;
document.body.scrollTop = scrollTop + 10000;
} else {
clearInterval(iv);
/* код загрузки */
}
}, 1000);
полностью:
function getUrlList() {
var list = document.querySelectorAll('div.audio.fl_l');
var files = [];
for (var i = 0; i < list.length; i++) {
var tel = list[i];
var f_name = tel.querySelector('.title_wrap').innerText;
var f_url = tel.querySelector('input').value;
files.push(f_url+'\t'+f_name+'.mp3');
}
var a = document.createElement('a');
a.download = 'vk_music.txt';
var oUrl = URL.createObjectURL(new Blob([files.join("\n")], {type: 'text/plain'}));
a.href = oUrl;
a.click();
delete a;
URL.revokeObjectURL(oUrl);
}
var scrollTop = -1;
var iv = setInterval( function() {
if (document.body.scrollTop > scrollTop) {
scrollTop = document.body.scrollTop;
document.body.scrollTop = scrollTop + 10000;
} else {
clearInterval(iv);
getUrlList();
}
}, 1000);
Ну и для тех, кто под виндой — Powershell скрипт
PS. у кого винда семерка надо раскомментить последнюю строчку и закомментить предпоследнюю, на восьмерке ничего менять не надо
$dest = "C:\temp"
$lines = Get-Content -Encoding UTF8 vk_music.txt | Where {$_ -notmatch '^\s+$'}
foreach ($line in $lines){
$url = $line.Split('?')[0];
$s = $line.Split(',')[1];
$title = $s.substring(4);
$path = $dest, $title -join "\";
Write-Output "Downloading ($title) .....";
Invoke-WebRequest $url -OutFile $path;
# (new-object System.Net.WebClient).DownloadFile($url,$path);
}
PS. у кого винда семерка надо раскомментить последнюю строчку и закомментить предпоследнюю, на восьмерке ничего менять не надо
Подобная качалка для node-webkit. Только приложение вроде уже забанили, так что надо заменить его ID. Писалось для себя, сильно не пинать.
Немного критики, если Вы не против.
1. Используйте urllib.urlencode. В итоге создание url-ов выглядело бы вот так:
2. Эти переменные лишние
и этот код тоже:
После json.loads Вы можете приступить к процессу сохранения файлов на жесткий диск. Будет выглядеть примерно так (код не проверял):
3. Ну и используйте больше os.path:
4. Посмотрите на либу requests.
1. Используйте urllib.urlencode. В итоге создание url-ов выглядело бы вот так:
payload = {
'client_id': 4591034,
...
'response_type': 'token',
}
driver.get("http://api.vkontakte.ru/oauth/authorize?%s" % urllib.urlencode(payload))
2. Эти переменные лишние
# Создаем листы для хранения данных
artists_list = []
titles_list = []
links_list = []
number = 0
и этот код тоже:
for i in my_dict['response']:
artists_list.append(i['artist'])
titles_list.append(i['title'])
links_list.append(i['url'])
number += 1
После json.loads Вы можете приступить к процессу сохранения файлов на жесткий диск. Будет выглядеть примерно так (код не проверял):
my_dict = json.loads(html)
for data in my_dict.get('response', {}).values():
filename = os.path.join(path, "%s-%s.mp3" % (data['artist'], data['title']))
if not os.path.exists(filename):
urllib.urlretrieve(data['url'].split("?")[0], filename)
3. Ну и используйте больше os.path:
root = os.path.realpath(os.path.dirname(__file__))
path = os.path.join(root, "downloads")
4. Посмотрите на либу requests.
А что за ограничение в 6000 аудиозаписей? Это ограничение Вконтакте на максимальное количество аудиозаписей у пользовател? Или что-то другое?
vk.com/dev/audio.get выделено на сером фоне это ограничение
можно же просто count=0 указать, или 0 автоматически ограничивается шестью тысячами?
Тут было предложение указать offset, но
Обратите внимание, что даже с использованием параметра offset получить информацию об аудиозаписях, находящихся после первых 6 тысяч в списке пользователя или сообщества, невозможно.
> После перехода на Ubuntu 14.10 возникли проблемы в виде полного зависания компьютера во время прослушивания аудиозаписей через браузер Google Chrome для linux систем.
Убунта такая убунта… спасибо за информацию, планировал переходить с 14.04, — теперь не буду.
Убунта такая убунта… спасибо за информацию, планировал переходить с 14.04, — теперь не буду.
Конечно же, виновата убунта.
Я не уверен, что виновата именно Ubuntu, но источник проблемы локализировать не смог. Зависания возникали только при прослушивании музыки.
Однажды, это было в далеком 2009 году, мы смотрели в свежей Ubuntu 9.10 мультик, и плеер после 10 минут показа упал с ошибкой. Я перезапустил, но минут через 15 плеер снова упал. Когда плеер упал в третий раз, моя дочь, которой тогда было 7 лет, спросила меня: «Папа, а знаешь почему мы не можем посмотреть мультфильм?» — «Почему же?» — и тут дочь мне говорит: «Потому что это Линукс!»
Проблема была в библиотеке gstreamer. Я отправил баг на Launchpad. Баг был подтвержден, передан в работу, провисел в статусе «в работе» несколько лет. Его закрыли впоследствии. В связи с прекращением поддержки релиза. А сам баг проявлялся еще года полтора, пока разработчики gstreamer наконец его не пофиксили.
Грустно, что подобные неприятные баги вылезают не только в осенних релизах, которые на моей памяти все проблемные (хотя я иногда ставлю их в качестве основной ОС на домашем ПК), но и в LTS. Впрочем, LTS ведь означает лишь long time support а не «очень стабильный» релиз.
Проблема была в библиотеке gstreamer. Я отправил баг на Launchpad. Баг был подтвержден, передан в работу, провисел в статусе «в работе» несколько лет. Его закрыли впоследствии. В связи с прекращением поддержки релиза. А сам баг проявлялся еще года полтора, пока разработчики gstreamer наконец его не пофиксили.
Грустно, что подобные неприятные баги вылезают не только в осенних релизах, которые на моей памяти все проблемные (хотя я иногда ставлю их в качестве основной ОС на домашем ПК), но и в LTS. Впрочем, LTS ведь означает лишь long time support а не «очень стабильный» релиз.
Конечно, убунта никогда ни в чем не виновата. Но читаем в отраслевых новостях:
«Разработчики Ubuntu признали наличие ошибки в установщике дистрибутива, которая приводит к полному удалению всех данных с жесткого диска. Первое сообщение об ошибке появилось в декабре 2013 г., но только сейчас — после появления достаточного количества жалоб — на нее обратили внимание. В общей сложности о наличии ошибки заявил 91 пользователь.
Один из предпринимателей, которого коснулась эта же проблема и который долгое время выступал за открытое ПО и перевел на него свою компанию, заявил, что его сотрудники теперь готовы платить любые деньги за проприетарный софт, лишь бы он не приносил таких сюрпризов. Еще один пользователь полагает, что подобные ошибки могут оказать негативное влияние на репутацию Ubuntu. Все они добавляют, что являются опытными пользователями дистрибутива».
Подробнее: www.cnews.ru/news/top/index.shtml?2014/08/29/584343
После этого убунту язык не поворачивается назвать дружелюбной и уж тем более — продуктом.
И, судя по прежнему личному опыту общения с техподдержкой Canonical, — вполне возможно, что этот критикал до сих пор не закрыт :)
«Разработчики Ubuntu признали наличие ошибки в установщике дистрибутива, которая приводит к полному удалению всех данных с жесткого диска. Первое сообщение об ошибке появилось в декабре 2013 г., но только сейчас — после появления достаточного количества жалоб — на нее обратили внимание. В общей сложности о наличии ошибки заявил 91 пользователь.
Один из предпринимателей, которого коснулась эта же проблема и который долгое время выступал за открытое ПО и перевел на него свою компанию, заявил, что его сотрудники теперь готовы платить любые деньги за проприетарный софт, лишь бы он не приносил таких сюрпризов. Еще один пользователь полагает, что подобные ошибки могут оказать негативное влияние на репутацию Ubuntu. Все они добавляют, что являются опытными пользователями дистрибутива».
Подробнее: www.cnews.ru/news/top/index.shtml?2014/08/29/584343
После этого убунту язык не поворачивается назвать дружелюбной и уж тем более — продуктом.
И, судя по прежнему личному опыту общения с техподдержкой Canonical, — вполне возможно, что этот критикал до сих пор не закрыт :)
Я делал похоже (github), но я не понимаю, зачем у тебя webdriver?
Уж слишком надуманная причина, чтобы «забэкапить свой плэйлист» и писать никому не нужный плеер. Нет, чтобы источник проблемы устранить — обязательно нужен еще один костыль-велосипед.
Возможно он никому не нужный, но сам процесс познавательный, по крайней мере мне.
geekgirl.io/concurrent-http-requests-with-python3-and-asyncio/
на python3 достаточно просто сделать асинхронную загрузку в 100 потоков, либо на tornado
попробуйте, познавательно)
на python3 достаточно просто сделать асинхронную загрузку в 100 потоков, либо на tornado
попробуйте, познавательно)
А я только недавно изучаю Python. У меня версия 3. При вводе вашего кода посыпались ошибки. Про print() я не говорю… А вот urllib2 пишет, что уже нет такого модуля. Теперь urllib3. А в нём нет функции page.read(). Подскажите как же мне на urllib3 создать page= и html=, чтобы их смог увидеть json? А ещё возникает ошибка, что нужен сертификат…
Заранее спасибо!
Я новичок в питоне, не ругайте.
Заранее спасибо!
Я новичок в питоне, не ругайте.
PS: а ещё и urllib.urlretrieve не может найти… беда совсем.
Ещё сейчас вылез момент: если в названии файла есть символы типа "/" (а Контакт их допускает), то скрипт не может записать такой файл и сваливается. Мелочь, но может кому пригодится…
Для этого использую плагин для браузера VKOpt
Выложите ссылку на скачивание готового скрипта плиз
Касательно авторизации — можно было запросить токен, срок действия которого никогда не истекает, тогда можно было бы его просто в коде прописать и не эмулировать ввод логина и пароля в браузере.
Ограничение в 6000 треков можно обойти, если разместить треки по альбомам. Правда, один трек может быть лишь в одном альбоме почему-то. Но в вашем случае — это лишь упрощает скачивание.
Хорошо, что вы лишь список треков получаете. Мне потребовалось загрузить ВКонтакте около 4000 треков (для теста караоке), так ВК запрашивало капчу примерно каждый 30 трек.
И, кстати, никакого «обновления существующей библиотеки» в вашем коде я не нашел. Или речь о том, что уже скачанные файлы второй раз не скачиваются, если имя совпадает?)
Ограничение в 6000 треков можно обойти, если разместить треки по альбомам. Правда, один трек может быть лишь в одном альбоме почему-то. Но в вашем случае — это лишь упрощает скачивание.
Хорошо, что вы лишь список треков получаете. Мне потребовалось загрузить ВКонтакте около 4000 треков (для теста караоке), так ВК запрашивало капчу примерно каждый 30 трек.
И, кстати, никакого «обновления существующей библиотеки» в вашем коде я не нашел. Или речь о том, что уже скачанные файлы второй раз не скачиваются, если имя совпадает?)
После перехода на Ubuntu 14.10 возникли проблемы в виде полного зависания компьютера во время прослушивания аудиозаписей через браузер Google Chrome для linux систем.
Такое наблюдалось только в Хроме и только под Убунтой?
Сталкивался с проблемой, когда при прослушивании музыки в ВК вкладка отъедала всю оперативную память. Смог наблюдать такое и на Linux-е и на Windows, причём в разных браузерах. Техподдержка ответила, что это из-за моего провайдера (Ростелеком):
Мы посмотрели отчёт и поняли, в чём дело. Ваш провайдер передаёт данные через несколько шлюзов одновременно. Из-за этого запросы к сайту идут параллельно с разных IP-адресов, что и приводит к проблемам. Имеет смысл обратиться в поддержку Вашего провайдера и пожаловаться на это. Либо просто подключиться к другому провайдеру. Если будете обращаться в поддержку, обязательно заострите их внимание на том, что проблема не в динамическом IP-адресе, а в параллельно идущих запросах с разных IP-адресов. Это следствие плохо реализованного распределения нагрузки между разными внешними каналами провайдера.
Кстати, если кому интересно, можете посмотреть в моём репозитории такую же утилиту, написанную на C++ github.com/junc/vk-music-sync. Комментарии и замечания приветствуются.
Есть замечательная штука: github.com/kidig/vk-audio-sync
В отличие от топикстартера, не использует никаких тяжеловесных селениумов, работает и под Win, и под Ubuntu.
Плюс ко всему — ставит правильные ID3 теги, чтобы в плеере/мобилке правильно отображались названия.
Автор: habrahabr.ru/users/kidig/
В отличие от топикстартера, не использует никаких тяжеловесных селениумов, работает и под Win, и под Ubuntu.
Плюс ко всему — ставит правильные ID3 теги, чтобы в плеере/мобилке правильно отображались названия.
Автор: habrahabr.ru/users/kidig/
Тоже для себя делал нечто подобное — github.com/kanemra/vkmusic
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Бекап аудиозаписей с плейлиста ВКонтакте (до 6000) средствами Python и Vk API