Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posted

Привет вам! Целый день  понемногу мастырил по надобности парсинг галереи с ВК на форум.  Все практически пахает, тока вот в тупик зашел....
Код: 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' не хотят начинать с __. Помогите пожалуйста добить, кому не в лом.

  • Author

На первых парах практически всё...

<!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

Практически закончил...

Через кУРЛ:

$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

Заимев немного свободного времени, начал раскуривать методы получения всех изображений из альбома.

Привлёк метод 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

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.