Как скачать все стикеры с VK?
Мне нужно выпарсить все стикреы с соц.сети ВКонтакте. Именно нужно получить все файлы стикеров на компьютер, чтобы потом их использовать.
В силу того что я немного знаю PHP и у меня установлен сервер, мне было бы удобно выпарсить их через PHP. К сожалению, других программ для парсинга URL нет.
Логика парсинга там не сложная. Вот что мне удалось выяснить по стикерам:
Их существует 4 размера, все квадраты: 512; 256; 128; 64 и всего их 3484 штук.
Так вот чтобы например, скачать все стикеры размером 64, нужно сохранить на компьютер следующие файлы:
https://vk.com/images/stickers/1/64.png https://vk.com/images/stickers/2/64.png ... https://vk.com/images/stickers/3484/64.png
Чтобы скачать 128:
https://vk.com/images/stickers/1/128.png https://vk.com/images/stickers/2/128.png ... https://vk.com/images/stickers/3484/128.png
И т.д.
Я догадываюсь что написать такой парсер на PHP не сложно. Но у меня знаний не хватает.
Помогите пожалуйста написать такой код, спасибо!
Вставляйте след. код в какой-нибудь php файл рабочего сайта и используйте ссылку вида http://example.com/?vk_stikers&size=64&maxnum=3484, тогда стикеры размером 64 будут скачены в папку vk_stikers/64 которая создастся в корневой директории сайта.
/* * Парсим стикеры с ВК * Логика: чтобы скачать все стикеры с ВК нужно пройтись: * для 512x512 с https://vk.com/images/stickers/1/512.png по https://vk.com/images/stickers/3484/512.png * для 256x256 с https://vk.com/images/stickers/1/256.png по https://vk.com/images/stickers/3484/256.png * и тд для разных размеров: 512; 256; 128; 64 * * http://example.com/?vk_stikers&size=64&maxnum=1000 */ if( isset($_GET['vk_stikers']) ){ set_time_limit( 0 ); $size = (int) $_GET['size']; $maxnum = (int) $_GET['maxnum']; if( ! in_array( $size, array(512, 256, 128, 64) ) ) die('error: Wrong size'); $folder = $_SERVER['DOCUMENT_ROOT'] ."/vk_stikers/$size"; if( ! is_dir($folder) ) mkdir( $folder, 0777, true ); $urlpatt = "https://vk.com/images/stickers/%d/$size.png"; for( $i=1; $i<=$maxnum; $i++ ){ $putfilename = $folder ."/$i.png"; if( file_exists($putfilename) ) continue; $url = sprintf( $urlpatt, $i ); if( $content = file_get_contents( $url ) ) file_put_contents( $folder ."/$i.png", $content ); } die('Done: '. $i); }