
Есть много прог/плагинов, которые позволяют качать свои аудизаписи с ВК. Но что делать, если нужно скачать все аудио с паблика?
Самый простой вариант - это парсинг html. Изобретать велосипед не стал - скролил страницу кнопкой End до первого поста. Думаю, можно было бы заюзать фугкцию wall.showMore(10), но было лень.
В общем, готовый файл весил 25 метров.
Скрипт написан на скорую руку, лишь бы работало!
Да, использую библиотеку CDom. https://github.com/amal/CDom . Лень было писать свой парсер.
require_once __DIR__ . '/CDom-master/CDom.php'; $matches = array(); $myfile = fopen("links.txt", "w"); $i = 100; $link = ''; $handle = fopen(__DIR__ . '/8bit_full.html', "r"); if ($handle) { while (($line = fgets($handle)) !== false) { if (strpos($line,'
Скрипт читает сохраненный html и сохраняет пару url file в файл.
Дальше решил сделать с помощью bash
#!/bin/sh while read url file; do while [[ "$(pgrep -fc wget)" -gt 9 && $c -gt 10 ]]; do sleep 1; done; ((c++)); echo "Launching $url ($c)"; mkdir -p "${file%/*}" wget -c -O "$file" "$url" >/dev/null 2>&1 && echo "$c finsihed" & #wget --post-data="$post" $url >/dev/null 2>&1 && echo "$c finsihed" & done
В этом скрипте я параллельно запускаю по 10 закачек. Распарареливание с помощью wget в действии!!
Итого с сообщества 8битной музыки https://vk.com/e_music_8bit было сграблено 3437 треков.
Решение кастомной и не претендует на универсальность. Писал же для себя)
Добавить комментарий