Jump to content

Парс галереи с ВК в посты IPB. Помогите доделать

Featured Replies

Posted
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 &amp; 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}' />&nbsp;&nbsp;#{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&section=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' не хотят начинать с __. Помогите пожалуйста добить, кому не в лом.

comment_32328

Я вообще ничего не понял, начиная с задумки

 


'filename' и 'thumb' не хотят начинать с __. П

Ну так подпиши в код

 '__'

Edited by Fedya

comment_32337

Если хотите, чтобы нажимать можно было не только на текст но и на блок в котором он лежит, юзайте

.css style{
display:block
}
  • Author
comment_32343

Не размножает фотки, если выше. Ниже, в области где нужно размножать, то  выше переменные неизвестные.

  • 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 &amp; 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}' />&nbsp;&nbsp;#{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 by Respected

  • 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}' />&nbsp;&nbsp;#{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 by Respected

  • Author
comment_32746

Люди, подскажите, как все фотки с галереи ВК парсить???

comment_32756

Ruskat, никому это не нужно, поэтому  даже разбираться никто не хочет.

  • Author
comment_32773

Respected, В том то и проблема, что практически все хотят готовых результатов...  А вот помочь их добиться... :(

  • 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 альбома

Теперь нуно снова переделывать листалку...

  • Author
comment_33536

Сделал. Как можно реализовать, чтобы можно было фреймить ссылку вида сайт.ua/vkalbum?/vk.com/album-id-group_id-album , чтобы обрабатывалась ссылка на альбом и выводился результат - галерея. Как это сделать?

  • Author
comment_33593

практически конец... Ещё только с условиями и фильтрами нужно разобраться... Поможет кто-то?

post-1294-0-29371600-1370002497_thumb.jp

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.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.