Posted 21 мая, 201311 yr comment_32317 Привет вам! Целый день понемногу мастырил по надобности парсинг галереи с ВК на форум. Все практически пахает, тока вот в тупик зашел.... Код: PHP <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "__www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xml:lang="en" lang="en" xmlns="__www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>СЛАЙД-ШОУ - Dzhulia & Alexander - Галерея - Rustenerife.com</title> <script type="text/javascript"> //<![CDATA[ window.__CF=window.__CF||{};window.__CF.AJS={"clky":{"sid":"100596475","uid":"0"},"abetterbrowser":{"ie":"8"}}; //]]> </script> <script type="text/javascript"> //<![CDATA[ try{if (!window.CloudFlare) { var CloudFlare=[{verbose:0,p:1368992593,byc:0,owlid:"cf",mirage:{responsive:0,lazy:0},oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/abv=378448694/"},atok:"8562156d03a5455df599913ab3fc70d2",zone:"rustenerife.com",rocket:"0",apps:{"clky":{"sid":"100596475","uid":"0"},"abetterbrowser":{"ie":"8"}}}];var a=document.createElement("script"),b=document.getElementsByTagName("script")[0];a.async=!0;a.src="//ajax.cloudflare.com/cdn-cgi/nexp/abv=4035706501/cloudflare.min.js";b.parentNode.insertBefore(a,b);}}catch(e){}; //]]> </script> <link rel="shortcut icon" href="favicon.ico"/> <link rel="stylesheet" type="text/css" href="__rustenerife.com/public/style_css/css_6/ipgallery_slideshow.css?ipbv=bb345fbe6aaf1eb0cf080b3a5460203c"/> <!--[if lte IE 7]> <link rel="stylesheet" type="text/css" title='Main' media="screen" href="__rustenerife.com/public/style_css/css_6/ipb_ie.css" /> <![endif]--> <script type='text/javascript'> jsDebug = 0; /* Must come before JS includes */ USE_RTE = 1; var inACP = false; var isRTL = false; var rtlIe = ''; var rtlFull = ''; </script> <script type='text/javascript' src='__rustenerife.com/public/js/3rd_party/prototype.js'></script> <script type='text/javascript' src='__rustenerife.com/public/js/ipb.js?load=quickpm,slideshow,rating,gallery'></script> <script type='text/javascript' src='__rustenerife.com/public/js/3rd_party/scriptaculous/scriptaculous-cache.js'></script> <script type="text/javascript" src='__rustenerife.com/cache/lang_cache/2/ipb.lang.js'></script> <script type='text/javascript'> //<![CDATA[ /* ---- URLs ---- */ ipb.vars['base_url'] = '__rustenerife.com/index.php?'; ipb.vars['board_url'] = '__rustenerife.com'; ipb.vars['loading_img'] = '__rustenerife.com/public/style_images/rustenerife/loading.gif'; ipb.vars['active_app'] = 'gallery'; ipb.vars['upload_url'] = '__rustenerife.com/uploads'; /* ---- Member ---- */ ipb.vars['member_id'] = parseInt( 0 ), ipb.vars['is_supmod'] = parseInt( 0 ), ipb.vars['is_admin'] = parseInt( 0 ), ipb.vars['secure_hash'] = '880ea6a14ea49e853634fbdc5015a024'; ipb.vars['session_id'] = '5f86e518d9e00d51ba3e0617927dba48'; ipb.vars['can_befriend'] = true; ipb.vars['auto_dst'] = parseInt( 0 ); ipb.vars['dst_in_use'] = parseInt( ); ipb.vars['is_touch'] = false; ipb.vars['member_group'] = {"g_mem_info":"0"} /* ---- cookies ----- */ ipb.vars['cookie_id'] = ''; ipb.vars['cookie_domain'] = '.rustenerife.com'; ipb.vars['cookie_path'] = '/'; /* ---- Rate imgs ---- */ ipb.vars['rate_img_on'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star.png'; ipb.vars['rate_img_off'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star_off.png'; ipb.vars['rate_img_rated'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star_rated.png'; /* ---- Uploads ---- */ ipb.vars['swfupload_swf'] = '__rustenerife.com/public/js/3rd_party/swfupload/swfupload.swf'; ipb.vars['swfupload_enabled'] = true; ipb.vars['use_swf_upload'] = ( '' == 'flash' ) ? true : false; ipb.vars['swfupload_debug'] = false; /* ---- other ---- */ ipb.vars['highlight_color'] = "#ade57a"; ipb.vars['charset'] = "UTF-8"; ipb.vars['use_rte'] = 1; ipb.vars['image_resize_force'] = 0; ipb.vars['seo_enabled'] = 1; ipb.vars['seo_params'] = {"start":"-","end":"/","varBlock":"?","varPage":"page-","varSep":"&","varJoin":"="}; /* Templates/Language */ ipb.templates['ajax_loading'] = "<div id='ajax_loading'>" + ipb.lang['loading'] + "</div>"; ipb.templates['close_popup'] = "<img src='__rustenerife.com/public/style_images/rustenerife/close_popup.png' alt='x' />"; ipb.templates['rss_shell'] = new Template("<ul id='rss_menu'>#{items}</ul>"); ipb.templates['rss_item'] = new Template("<li><a href='#{url}' title='#{title}'>#{title}</a></li>"); ipb.templates['resized_img'] = new Template("<span>Уменьшено до #{percent}% (было #{width} x #{height}) - нажмите для увеличения</span>"); ipb.templates['autocomplete_wrap'] = new Template("<ul id='#{id}' class='ipb_autocomplete' style='width: 250px;'></ul>"); ipb.templates['autocomplete_item'] = new Template("<li id='#{id}' data-url='#{url}'><img src='#{img}' alt='' width='#{img_w}' height='#{img_h}' /> #{itemvalue}</li>"); ipb.templates['page_jump'] = new Template("<div id='#{id}_wrap' class='ipbmenu_content'><h3 class='bar'>Перейти на страницу</h3><input type='text' class='input_text' id='#{id}_input' size='8' /> <input type='submit' value='Далее...' class='input_submit add_folder' id='#{id}_submit' /></div>"); Loader.boot(); //]]> </script> </head> <body id='ipboard_body' style='padding: 20px'> <div id='ipbwrapper'> <?php $url = "__vk.com/album-40908627_173637685"; //Адресс с которого будут парсится картинки $str=file_get_contents($url); // echo "---------------Вариант 1---------------"; preg_match_all("#<img.*?src="(.*?)".+?data-id="-(.*?)".+?data-src_big="(.*?)|(.*?)|(.*?)"#",$str,$ok); $str = preg_replace ("#<h1(.*)</h1>#Us", "", $str); //$str = preg_replace ('#class(.*)="-#Us', '', $str); //$str = str_replace ("class="", "", $str); for ($i=0; $i<count($ok[1]); $i++) { $path_parts = pathinfo($ok[1][$i]); //echo $path_parts['dirname'], "<br>"; //echo $path_parts['basename'], "<br>"; echo "<br>".$path_parts['dirname']."/".$path_parts['basename']." =1 ".$ok[2][$i]."=2 ".$ok[3][$i]."=3 ".$ok[4][$i]."=4 ".$ok[5][$i]."=5"; $host = $path_parts['dirname']; $path = $path_parts['basename']; } ?> <script type='text/javascript'> /* URL to full-size images */ ipb.slideshow.imageURL = "__cs403527.vk.me/"; /* The image ID's in order to be displayed */ var IMAGES = [ 193 ]; /* Array of image data, order doesn't matter. Key is image ID to match above array */ var IMAGE_DATA = $H({ 193: { 'title': '0001', 'filename': 'v403527622/7c5c/D2sH_BjFo4k.jpg', 'thumb': 'v403527622/7c5d/ZB1bA3K5RPI.jpg', 'author': { 'id': 24, 'name': 'Eugenia Biryukova', 'photo': '__rustenerife.com/uploads/profile/photo-thumb-24.jpg?_r=1369008243', 'width': '50', 'height': '50' } }, }); /* URL to where user photos will be */ ipb.slideshow.userPhotoURL = ""; /* Just templates */ ipb.slideshow.userInfo = new Template("<div id='info_#{id}' class='info' style='display: none'><img src='#{photo}' width='#{width}' height='#{height}' class='photo' /><div class='info_body'><h1>#{title}</h1><h2>От #{name}</h2></div>"); ipb.slideshow.thumbnail = new Template("<div id='thumb_#{id}' class='thumb'></div>"); </script> <div id='slideshow'> <div id='image_info'></div> <div id='thumbnail_bar'> <div id='thumbnails'> <div id='thumbnail_wrap'></div> </div> <div id='button_left'></div> <div id='button_right'></div> </div> <div id='image_holder'></div> <div id='slideshow_controls'> <div id='controls'><a href='#' id='c_PREV' class='control' title='Предыдущее изображение'>&nsbp;</a><a href='#' id='c_PAUSE_PLAY' class='control' title='СтартСтоп слайдшоу'>&nsbp;</a><a href='#' id='c_NEXT' class='control' title='Следующий'>&nsbp;</a></div> <div id='loading'></div> </div> <a href='__rustenerife.com/gallery/album/8-dzhulia-alexander/' id='close_slideshow'>Go back</a> </div> <div style='display: none'> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/next.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/next_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/prev.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/prev_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/pause.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/play.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/pause_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/play_hover.png'/> </div> </div> </body> </html> одолжил у них. IPB-шный скрипт <![CDATA[{parse js_module="slideshow"} <script type='text/javascript'> /* URL to full-size images */ <if test="$this->settings['gallery_images_url']"> ipb.slideshow.imageURL = "{$this->settings['gallery_images_url']}/"; <else /> ipb.slideshow.imageURL = ipb.vars['base_url'] + "app=gallery&module=images§ion=img_ctrl"; </if> /* The image ID's in order to be displayed */ var IMAGES = [ {$imageIds} ]; /* Array of image data, order doesn't matter. Key is image ID to match above array */ var IMAGE_DATA = $H({ <foreach loop="$imageData as $r"> {$r['image_id']}: { 'title': '{$r['image_caption']}', <if test="$this->settings['gallery_images_url']"> 'filename': '{$r['image_directory']}/{$r['image_masked_file_name']}', 'thumb': '{$r['image_directory']}/tn_{$r['image_masked_file_name']}', <else /> 'filename': '&img={$r['image_id']}', 'thumb': '&img={$r['image_id']}&tn=1', </if> 'author': { 'id': {$r['image_member_id']}, 'name': '{$r['members_display_name']}', 'photo': '{$r['_photo']['pp_small_photo']}', 'width': '{$r['_photo']['pp_small_width']}', 'height': '{$r['_photo']['pp_small_height']}' } }<if test="$lastID != $r['image_id']">,</if> </foreach> }); /* URL to where user photos will be */ ipb.slideshow.userPhotoURL = ""; /* Just templates */ ipb.slideshow.userInfo = new Template("<div id='info_#{id}' class='info' style='display: none'><img src='#{photo}' width='#{width}' height='#{height}' class='photo' /><div class='info_body'><h1>#{title}</h1><h2>{$this->lang->words['by_ucfirst']} #{name}</h2></div>"); ipb.slideshow.thumbnail = new Template("<div id='thumb_#{id}' class='thumb'></div>"); </script> <div id='slideshow'> <div id='image_info'></div> <div id='thumbnail_bar'> <div id='thumbnails'> <div id='thumbnail_wrap'></div> </div> <div id='button_left'></div> <div id='button_right'></div> </div> <div id='image_holder'></div> <div id='slideshow_controls'> <div id='controls'><a href='#' id='c_PREV' class='control' title='{$this->lang->words['previous_image']}'>&nsbp;</a><a href='#' id='c_PAUSE_PLAY' class='control' title='{$this->lang->words['ss_playpause']}'>&nsbp;</a><a href='#' id='c_NEXT' class='control' title='{$this->lang->words['ss_next_img']}'>&nsbp;</a></div> <div id='loading'></div> </div> <a href='{$containerUrl}' id='close_slideshow'>{$this->lang->words['ss_back']}</a> </div> <div style='display: none'> <img src='{$this->settings['img_url']}/gallery/slideshow/next.png' /> <img src='{$this->settings['img_url']}/gallery/slideshow/next_hover.png' /> <img src='{$this->settings['img_url']}/gallery/slideshow/prev.png' /> <img src='{$this->settings['img_url']}/gallery/slideshow/prev_hover.png' /> <img src='{$this->settings['img_url']}/gallery/slideshow/pause.png' /> <img src='{$this->settings['img_url']}/gallery/slideshow/play.png' /> <img src='{$this->settings['img_url']}/gallery/slideshow/pause_hover.png' /> <img src='{$this->settings['img_url']}/gallery/slideshow/play_hover.png' /> </div>]]> В тупике потому, что разные адреса серверов - не могу адекватно загнать в переменную потому. и еще потому, что переменная ipb.slideshow.imageURL в скрипте хочет держать в себе сервер а 'filename' и 'thumb' не хотят начинать с __. Помогите пожалуйста добить, кому не в лом.
21 мая, 201311 yr comment_32328 Я вообще ничего не понял, начиная с задумки 'filename' и 'thumb' не хотят начинать с __. П Ну так подпиши в код '__' Edited 21 мая, 201311 yr by Fedya
21 мая, 201311 yr comment_32337 Если хотите, чтобы нажимать можно было не только на текст но и на блок в котором он лежит, юзайте .css style{ display:block }
21 мая, 201311 yr Author comment_32343 Не размножает фотки, если выше. Ниже, в области где нужно размножать, то выше переменные неизвестные.
21 мая, 201311 yr Author comment_32353 На первых парах практически всё... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "__www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xml:lang="en" lang="en" xmlns="__www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>СЛАЙД-ШОУ - Dzhulia & Alexander - Галерея - Rustenerife.com</title> <link rel="shortcut icon" href="favicon.ico"/> <link rel="stylesheet" type="text/css" href="__rustenerife.com/public/style_css/css_6/ipgallery_slideshow.css?ipbv=bb345fbe6aaf1eb0cf080b3a5460203c"/> <!--[if lte IE 7]> <link rel="stylesheet" type="text/css" title='Main' media="screen" href="__rustenerife.com/public/style_css/css_6/ipb_ie.css" /> <![endif]--> <script type='text/javascript'> jsDebug = 0; /* Must come before JS includes */ USE_RTE = 1; var inACP = false; var isRTL = false; var rtlIe = ''; var rtlFull = ''; </script> <script type='text/javascript' src='__rustenerife.com/public/js/3rd_party/prototype.js'></script> <script type='text/javascript' src='__rustenerife.com/public/js/ipb.js?load=quickpm,slideshow,rating,gallery'></script> <script type='text/javascript' src='__rustenerife.com/public/js/3rd_party/scriptaculous/scriptaculous-cache.js'></script> <script type='text/javascript'> //<![CDATA[ /* ---- URLs ---- */ ipb.vars['base_url'] = '__rustenerife.com/index.php?'; ipb.vars['board_url'] = '__rustenerife.com'; ipb.vars['loading_img'] = '__rustenerife.com/public/style_images/rustenerife/loading.gif'; ipb.vars['active_app'] = 'gallery'; ipb.vars['upload_url'] = '__rustenerife.com/uploads'; /* ---- Member ---- */ ipb.vars['member_id'] = parseInt( 0 ), ipb.vars['is_supmod'] = parseInt( 0 ), ipb.vars['is_admin'] = parseInt( 0 ), ipb.vars['secure_hash'] = '880ea6a14ea49e853634fbdc5015a024'; ipb.vars['session_id'] = '5f86e518d9e00d51ba3e0617927dba48'; ipb.vars['can_befriend'] = true; ipb.vars['auto_dst'] = parseInt( 0 ); ipb.vars['dst_in_use'] = parseInt( ); ipb.vars['is_touch'] = false; ipb.vars['member_group'] = {"g_mem_info":"0"} /* ---- cookies ----- */ ipb.vars['cookie_id'] = ''; ipb.vars['cookie_domain'] = '.rustenerife.com'; ipb.vars['cookie_path'] = '/'; /* ---- Rate imgs ---- */ ipb.vars['rate_img_on'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star.png'; ipb.vars['rate_img_off'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star_off.png'; ipb.vars['rate_img_rated'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star_rated.png'; /* ---- Uploads ---- */ ipb.vars['swfupload_swf'] = '__rustenerife.com/public/js/3rd_party/swfupload/swfupload.swf'; ipb.vars['swfupload_enabled'] = true; ipb.vars['use_swf_upload'] = ( '' == 'flash' ) ? true : false; ipb.vars['swfupload_debug'] = false; /* ---- other ---- */ ipb.vars['highlight_color'] = "#ade57a"; ipb.vars['charset'] = "UTF-8"; ipb.vars['use_rte'] = 1; ipb.vars['image_resize_force'] = 0; ipb.vars['seo_enabled'] = 1; ipb.vars['seo_params'] = {"start":"-","end":"/","varBlock":"?","varPage":"page-","varSep":"&","varJoin":"="}; /* Templates/Language */ ipb.templates['ajax_loading'] = "<div id='ajax_loading'>" + ipb.lang['loading'] + "</div>"; ipb.templates['close_popup'] = "<img src='__rustenerife.com/public/style_images/rustenerife/close_popup.png' alt='x' />"; ipb.templates['rss_shell'] = new Template("<ul id='rss_menu'>#{items}</ul>"); ipb.templates['rss_item'] = new Template("<li><a href='#{url}' title='#{title}'>#{title}</a></li>"); ipb.templates['resized_img'] = new Template("<span>Уменьшено до #{percent}% (было #{width} x #{height}) - нажмите для увеличения</span>"); ipb.templates['autocomplete_wrap'] = new Template("<ul id='#{id}' class='ipb_autocomplete' style='width: 250px;'></ul>"); ipb.templates['autocomplete_item'] = new Template("<li id='#{id}' data-url='#{url}'><img src='#{img}' alt='' width='#{img_w}' height='#{img_h}' /> #{itemvalue}</li>"); ipb.templates['page_jump'] = new Template("<div id='#{id}_wrap' class='ipbmenu_content'><h3 class='bar'>Перейти на страницу</h3><input type='text' class='input_text' id='#{id}_input' size='8' /> <input type='submit' value='Далее...' class='input_submit add_folder' id='#{id}_submit' /></div>"); Loader.boot(); //]]> </script> </head> <body id='ipboard_body' style='padding: 20px'> <div id='ipbwrapper'> <?php ?> <script type='text/javascript'> /* URL to full-size images */ ipb.slideshow.imageURL = "__"; /* The image ID's in order to be displayed */ var IMAGES = [<?PHP $url = "__vk.com/album-40908627_173637685"; //Адресс с которого будут парсится картинки $str=file_get_contents($url); preg_match_all("#<img.*?src="(.*?)".+?data-id="-(.*?)".+?data-src_big="(.*?)|(.*?)|(.*?)"#",$str,$ok); $str = preg_replace ("#<h1(.*)</h1>#Us", "", $str); for ($i=0; $i<count($ok[1]); $i++){ $id_img = substr($ok[2][$i], -9); // возвращает "cde" Ідентифікатор echo $id_img.","; };?>]; /* Array of image data, order doesn't matter. Key is image ID to match above array */ var IMAGE_DATA = $H({ <?php $str=file_get_contents($url); preg_match_all("#<img.*?src="(.*?)".+?data-id="-(.*?)".+?data-src_big="(.*?)|(.*?)|(.*?)"#",$str,$ok); $str = preg_replace ("#<h1(.*)</h1>#Us", "", $str); for ($i=0; $i<count($ok[1]); $i++){ $path_parts_thumb = array_values(array_filter(explode('//',$ok[1][$i]))); $path_parts_file = array_values(array_filter(explode('//',$ok[3][$i]))); // echo "<br>".$path_parts_file['1']." =1 ".$ok[2][$i]."=2 ".$path_parts_thumb['1']."=3 ".$ok[4][$i]."=4 ".$ok[5][$i]."=5"; $path_parts_file['1']; // Оригінальний файл $id_img = substr($ok[2][$i], -9); // возвращает "cde" Ідентифікатор $path_parts_thumb['1']; //Мініатюрка $ok[4][$i]; //Висота $ok[5][$i]; //Ширина echo " {$id_img}: { 'title': '0001', 'filename': '{$path_parts_file['1']}', 'thumb': '{$path_parts_thumb['1']}', 'author': { 'id': 24, 'name': 'Eugenia Biryukova', 'photo': '__rustenerife.com/uploads/profile/photo-thumb-24.jpg?_r=1369008243', 'width': '50', 'height': '50' } }, "; } echo "});"; ?> /* URL to where user photos will be */ ipb.slideshow.userPhotoURL = ""; /* Just templates */ ipb.slideshow.userInfo = new Template("<div id='info_#{id}' class='info' style='display: none'><img src='#{photo}' width='#{width}' height='#{height}' class='photo' /><div class='info_body'><h1>#{title}</h1><h2>От #{name}</h2></div>"); ipb.slideshow.thumbnail = new Template("<div id='thumb_#{id}' class='thumb'></div>"); </script> <div id='slideshow'> <div id='image_info'></div> <div id='thumbnail_bar'> <div id='thumbnails'> <div id='thumbnail_wrap'></div> </div> <div id='button_left'></div> <div id='button_right'></div> </div> <div id='image_holder'></div> <div id='slideshow_controls'> <div id='controls'><a href='#' id='c_PREV' class='control' title='Предыдущее изображение'>&nsbp;</a><a href='#' id='c_PAUSE_PLAY' class='control' title='СтартСтоп слайдшоу'>&nsbp;</a><a href='#' id='c_NEXT' class='control' title='Следующий'>&nsbp;</a></div> <div id='loading'></div> </div> <a href='__' id='close_slideshow'>Go back</a> </div> <div style='display: none'> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/next.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/next_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/prev.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/prev_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/pause.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/play.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/pause_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/play_hover.png'/> </div> </div> </body> </html> Из нюансов:Фотки берутся только из групп, Колличество фоток - не больше 20 с чем-то.... Видать подгрузка. Из планов, хотклось бы еще указать вверху надпись автора фоно, аватарку и может какую-то надпись. Помогайте, не стесняйтесь. Edited 26 мая, 201311 yr by Respected
24 мая, 201311 yr Author comment_32583 Практически закончил... Через кУРЛ: $lta = "__vk.com/photos-40908627"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $lta); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $url = curl_exec($ch); curl_close($ch); $str = $url; $host = parse_url($lta); $hst = $host['host'] ; $resultat = $str ; $string = explode('offset:',$resultat); $resultat = $string[1] ; $string = explode(',',$resultat); $repl_substr = substr($string[1],-2); $str = preg_replace ("#offset: 40,#", "offset: 33,", $str); echo "Показано ".$string[0]." фоток з ". $repl_substr; preg_match_all("!<a[^>]+href="?'?([^ "'>]+)"?'?[^>]*>(.*?)</a>!is",$str,$ok); $str = preg_replace ("#<h1(.*)</h1>#Us", "", $str); for ($i=0; $i<count($ok[1]); $i++) echo $hst,$ok[1][$i]." = ".$ok[2][$i]."<br>"; И как хотел... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "__www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xml:lang="en" lang="en" xmlns="__www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>СЛАЙД-ШОУ</title> <link rel="shortcut icon" href="favicon.ico"/> <link rel="stylesheet" type="text/css" href="__rustenerife.com/public/style_css/css_6/ipgallery_slideshow.css?ipbv=bb345fbe6aaf1eb0cf080b3a5460203c"/> <!--[if lte IE 7]> <link rel="stylesheet" type="text/css" title='Main' media="screen" href="__rustenerife.com/public/style_css/css_6/ipb_ie.css" /> <![endif]--> <script type='text/javascript'> jsDebug = 0; /* Must come before JS includes */ USE_RTE = 1; var inACP = false; var isRTL = false; var rtlIe = ''; var rtlFull = ''; </script> <script type='text/javascript' src='__rustenerife.com/public/js/3rd_party/prototype.js'></script> <script type='text/javascript' src='__rustenerife.com/public/js/ipb.js?load=quickpm,slideshow,rating,gallery'></script> <script type='text/javascript' src='__rustenerife.com/public/js/3rd_party/scriptaculous/scriptaculous-cache.js'></script> <script type='text/javascript'> //<![CDATA[ /* ---- URLs ---- */ ipb.vars['base_url'] = '__rustenerife.com/index.php?'; ipb.vars['board_url'] = '__rustenerife.com'; ipb.vars['loading_img'] = '__rustenerife.com/public/style_images/rustenerife/loading.gif'; ipb.vars['active_app'] = 'gallery'; ipb.vars['upload_url'] = '__rustenerife.com/uploads'; /* ---- Member ---- */ ipb.vars['member_id'] = parseInt( 0 ), ipb.vars['is_supmod'] = parseInt( 0 ), ipb.vars['is_admin'] = parseInt( 0 ), ipb.vars['secure_hash'] = '880ea6a14ea49e853634fbdc5015a024'; ipb.vars['session_id'] = '5f86e518d9e00d51ba3e0617927dba48'; ipb.vars['can_befriend'] = true; ipb.vars['auto_dst'] = parseInt( 0 ); ipb.vars['dst_in_use'] = parseInt( ); ipb.vars['is_touch'] = false; ipb.vars['member_group'] = {"g_mem_info":"0"} /* ---- cookies ----- */ ipb.vars['cookie_id'] = ''; ipb.vars['cookie_domain'] = '.rustenerife.com'; ipb.vars['cookie_path'] = '/'; /* ---- Rate imgs ---- */ ipb.vars['rate_img_on'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star.png'; ipb.vars['rate_img_off'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star_off.png'; ipb.vars['rate_img_rated'] = '__rustenerife.com/public/style_images/rustenerife/bullet_star_rated.png'; /* ---- Uploads ---- */ ipb.vars['swfupload_swf'] = '__rustenerife.com/public/js/3rd_party/swfupload/swfupload.swf'; ipb.vars['swfupload_enabled'] = true; ipb.vars['use_swf_upload'] = ( '' == 'flash' ) ? true : false; ipb.vars['swfupload_debug'] = false; /* ---- other ---- */ ipb.vars['highlight_color'] = "#ade57a"; ipb.vars['charset'] = "UTF-8"; ipb.vars['use_rte'] = 1; ipb.vars['image_resize_force'] = 0; ipb.vars['seo_enabled'] = 1; ipb.vars['seo_params'] = {"start":"-","end":"/","varBlock":"?","varPage":"page-","varSep":"&","varJoin":"="}; /* Templates/Language */ ipb.templates['ajax_loading'] = "<div id='ajax_loading'>" + ipb.lang['loading'] + "</div>"; ipb.templates['close_popup'] = "<img src='__rustenerife.com/public/style_images/rustenerife/close_popup.png' alt='x' />"; ipb.templates['rss_shell'] = new Template("<ul id='rss_menu'>#{items}</ul>"); ipb.templates['rss_item'] = new Template("<li><a href='#{url}' title='#{title}'>#{title}</a></li>"); ipb.templates['resized_img'] = new Template("<span>Уменьшено до #{percent}% (было #{width} x #{height}) - нажмите для увеличения</span>"); ipb.templates['autocomplete_wrap'] = new Template("<ul id='#{id}' class='ipb_autocomplete' style='width: 250px;'></ul>"); ipb.templates['autocomplete_item'] = new Template("<li id='#{id}' data-url='#{url}'><img src='#{img}' alt='' width='#{img_w}' height='#{img_h}' /> #{itemvalue}</li>"); ipb.templates['page_jump'] = new Template("<div id='#{id}_wrap' class='ipbmenu_content'><h3 class='bar'>Перейти на страницу</h3><input type='text' class='input_text' id='#{id}_input' size='8' /> <input type='submit' value='Далее...' class='input_submit add_folder' id='#{id}_submit' /></div>"); Loader.boot(); //]]> </script> </head> <body id='ipboard_body' style='padding: 20px'> <div id='ipbwrapper'> <?php ?> <script type='text/javascript'> /* URL to full-size images */ ipb.slideshow.imageURL = "__"; /* The image ID's in order to be displayed */ var IMAGES = [<?PHP $url = "__vk.com/photos-40908627"; //Адресс с которого будут парсится фотки $str=file_get_contents($url); preg_match_all("#<img.*?src="(.*?)".+?data-id="-(.*?)".+?data-src_big="(.*?)|(.*?)|(.*?)"#",$str,$ok); $str = preg_replace ("#<h1(.*)</h1>#Us", "", $str); for ($i=0; $i<count($ok[1]); $i++){ $id_img = substr($ok[2][$i], -9); // Ідентифікатор echo $id_img.","; };?>]; var IMAGE_DATA = $H({ <?php $str=file_get_contents($url); preg_match_all("#<img.*?src="(.*?)".+?data-id="-(.*?)".+?data-src_big="(.*?)|(.*?)|(.*?)"#",$str,$ok); $str = preg_replace ("#<h1(.*)</h1>#Us", "", $str); for ($i=0; $i<count($ok[1]); $i++){ $path_parts_thumb = array_values(array_filter(explode('//',$ok[1][$i]))); $path_parts_file = array_values(array_filter(explode('//',$ok[3][$i]))); $path_parts_file['1']; // Оригінальний файл $id_img = substr($ok[2][$i], -9); // Обрізання для присвоєння ID $path_parts_thumb['1']; //Мініатюрка $ok[4][$i]; //Висота $ok[5][$i]; //Ширина //Підключення через CURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $vk_alb = curl_exec($ch); $vk_alb= iconv('WINDOWS-1251', 'UTF-8', $vk_alb); //Парс назви групи та к-ті фото $rs2 = explode('<title>',$vk_alb); $vk_alb = $rs2[1] ; $rs2 = explode('</title>',$vk_alb); $gr_header = array_values(array_filter(explode('|',$rs2[0]))); echo " {$id_img}: { 'title': '{$gr_header[1]}', 'filename': '{$path_parts_file['1']}', 'thumb': '{$path_parts_thumb['1']}', 'author': { 'id': 24, 'name': '{$gr_header[0]}', 'photo': '__cs301103.vk.me/g40908627/a_3a13c216.jpg', 'width': '50', 'height': '50' }}, "; } echo "});"; ?> /* то для юзера ИПБ */ ipb.slideshow.userPhotoURL = ""; /* шаблонка */ ipb.slideshow.userInfo = new Template("<div id='info_#{id}' class='info' style='display: none'><img src='#{photo}' width='#{width}' height='#{height}' class='photo' /><div class='info_body'><h1>#{title}</h1><h2> #{name}</h2></div>"); ipb.slideshow.thumbnail = new Template("<div id='thumb_#{id}' class='thumb'></div>"); </script> <div id='slideshow'> <div id='image_info'></div> <div id='thumbnail_bar'> <div id='thumbnails'> <div id='thumbnail_wrap'></div> </div> <div id='button_left'></div> <div id='button_right'></div> </div> <div id='image_holder'></div> <div id='slideshow_controls'> <div id='controls'><a href='#' id='c_PREV' class='control' title='Предыдущее изображение'>&nsbp;</a><a href='#' id='c_PAUSE_PLAY' class='control' title='СтартСтоп слайдшоу'>&nsbp;</a><a href='#' id='c_NEXT' class='control' title='Следующий'>&nsbp;</a></div> <div id='loading'></div> </div> <a href='' id='close_slideshow'>Go back</a> </div> <div style='display: none'> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/next.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/next_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/prev.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/prev_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/pause.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/play.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/pause_hover.png'/> <img src='__rustenerife.com/public/style_images/rustenerife/gallery/slideshow/play_hover.png'/> </div> </div> </body> </html> Но парсит только первые 24 или 40 фоток, а ужно получить все из альбома. Как решить это дело? И как правильно составить РНР-файл для обработки ссылки на галерею? Чтобы это было ВВ-Кодом. Edited 26 мая, 201311 yr by Respected
26 мая, 201311 yr comment_32756 Ruskat, никому это не нужно, поэтому даже разбираться никто не хочет.
26 мая, 201311 yr Author comment_32773 Respected, В том то и проблема, что практически все хотят готовых результатов... А вот помочь их добиться...
30 мая, 201311 yr Author comment_33329 Заимев немного свободного времени, начал раскуривать методы получения всех изображений из альбома. Привлёк метод photos.get. Но так, как я далёк от ихних обЪяснений, то с трудом я понял, как же самому получать списки... Все это делается ссылкой. Например: https://api.vk.com/method/photos.get.xml?oid=-40908627&aid=174693629&rev=1&extend=1&photo_sizes=1 Где: photos.get.xml - получение данных в виде *.xml файла а просто photos.get вернёт файл со списком того же содержимого, но в файлике. Вроде JSON. oid=-40908627 - группа / клуб aid=174693629 - id альбома Теперь нуно снова переделывать листалку...
31 мая, 201311 yr Author comment_33536 Сделал. Как можно реализовать, чтобы можно было фреймить ссылку вида сайт.ua/vkalbum?/vk.com/album-id-group_id-album , чтобы обрабатывалась ссылка на альбом и выводился результат - галерея. Как это сделать?
31 мая, 201311 yr Author comment_33593 практически конец... Ещё только с условиями и фильтрами нужно разобраться... Поможет кто-то?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.