Ссылки на аудио в VK

280
14 марта 2017, 15:24

Есть страница со списком аудиозаписей в ВКонтакте. Например, вот её кусочек:

К сожалению, ВК с середины декабря закрыл доступ к работе с аудио, а использовать обходные пути не хочется, ведь это мне и не совсем нужно. В чём заключается вопрос: Мне нужно получить список всех аудиозаписей с открытой страницы в виде audio62802565_456239214. Есть расширение vk.opt, которое может делать следующее:

Если нажать на "wiki", появится следующее окошко:

Только проблема в том, что аудиозаписей может быть и 20, и 100, и 10000, и вручную сделать это не получится. Нужно как-то это автоматизировать. В исходном коде есть все ссылки на аудио без слова "audio", но вычленить их оттуда, например, парсером, будет трудновато.

Прошу помощи :) Нужно будет впоследствии использовать множество аудиозаписей, но прикреплять их можно только имея ссылку на них. Буду рад помощи.

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

Answer 1

Прилагаю код автоскроллера:

var script = document.createElement('script'); 
script.src = "https://code.jquery.com/jquery-1.12.4.min.js"; 
document.querySelector('head').appendChild(script); 
 
script.addEventListener('load', function() { 
  var position = 0; 
  var timeStep = 1000; // время между шагами скролла 
  var scrollStep = 100; // на сколько пикселей скроллить за раз 
  var w = $(window); // просто экономим буковки :) 
 
  var i = setInterval(function() { 
    w.scrollTop(position + scrollStep); 
    if (w.scrollTop() > position) { 
      position = w.scrollTop(); 
      console.log(position); 
    } else { 
      clearInterval(i); 
      // доскроллили до конца, делаем, что нам надо 
    } 
  }, 1000); 
 
});
div { 
  font-size: 70px; 
  width: 60px; 
  word-break: break-all; 
  background: #F00; 
}
<div>Автоскроллер</div>

Тут придется "поиграть" параметрами timeStep и scrollStep, в зависимости от того, сколько у вас записей на странице и насколько быстро они грузятся.

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

Answer 2

Просто вставьте код в консоль браузера на странице с аудиозаписями.

var audios = document.getElementsByClassName('audio_row');
Array.prototype.map.call(audios, function(audio) {
    return audio.dataset.fullId;
});
READ ALSO
Uncaught TypeError: Cannot read property &#39;contact_name&#39; of null

Uncaught TypeError: Cannot read property 'contact_name' of null

В зависимости от того, что вернет определенный метод в res, там может быть contact_name или нетЕсли нет, приходит ошибка "Cannot read property 'contact_name' of null"

192
получить в переменную по клику имя класса javascript

получить в переменную по клику имя класса javascript

Доброго времени! есть такой блок

254
Rxjs Observable.ajax() как передать данные в formData пост запроса

Rxjs Observable.ajax() как передать данные в formData пост запроса

Нужно передать данные в пост запросе, используя formDataContent-type application/x-www-form-urlencoded

232
Выполнить анимацию css из javascript

Выполнить анимацию css из javascript

Есть такого рода анимация:

153