WordPress как на ладони
wordpress jino

Как скачать все стикеры с 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 не сложно. Но у меня знаний не хватает.

Помогите пожалуйста написать такой код, спасибо!

1
Гость год назад
  • 0
    Kama4696

    Вставляйте след. код в какой-нибудь php файл рабочего сайта и используйте ссылку вида http://site.ru/?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://site.ru/?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);
    }
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.