Итак, товарищи. Знаю что здесь, на CY-PR.com, есть много прекрасных программистов, поэтому требуется ваша помощь. Итак, ограничения на uCoz - php:
Код, который я нашёл в сети (парсер видео ВК)
Что по идее нужно:
1. Скрипт берёт со страницы параметр $ENTRY_TITLE$
2. Авторизуется вконтакте
3. Начинает поиск по фразе $ENTRY_TITLE$
4. Находит случайный видеоролик
5. Отдаёт его пользователю
Как уже сказал знаний в PHP - 0, но возможно кто-то сможет такое реализовать тем более, что выше преведён скрипт аналогичного действия но для другого движка.
Код |
---|
ОБЩАЯ ИНФОРМАЦИЯПри активации услуги PHP для сайта учетная запись создается на отдельном сервере, на котором происходит исполнение всех php-скриптов. Доступ к данной учетной записи, загрузка, изменение и удаление данных осуществляется по протоколу FTP с логином и паролем (указанным при активации услуги PHP), которые можно посмотреть в панели управления сайтом.При создании аккаунта автоматически создается директория scripts, в которой должны размещаться все php-скрипты, которые вызываются на страницах сайта. Все скрипты должны иметь расширение ".php", только такие файлы доступны по прямым адресным ссылкам. Все другие файлы (их содержимое) можно получать ТОЛЬКО посредством самих php-скриптов. Все учетные записи создаются со следующими ограничениями:максимальный объем занимаемого дискового пространства - 200Мбмаксимальное количество файлов и директорий - 10000максимальное количество файлов в директории - 500максимальное время исполнения скрипта - 15 секундКАК ИСПОЛЬЗОВАТЬИспользовать php-скрипты на страницах сайта можно в текущем домене через проксирование: http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA¶m1=valueB...¶mN=valueM В шаблонах для вызова php-скрипта можно использовать функцию PHPCODE следующим образом: <?$PHPCODE$("http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA¶m1=valueB...¶mN=valueM")?> где:SITE_ADDRESS - адрес сайта пользователя, на котором выполняется скриптSCRIPT_NAME - путь (относительно папки scripts) и имя скрипта, который выполняется?param0=valueA¶m1=valueB...¶mN=valueM - необязательные параметры для скрипта Данная функция выполняет GET-запрос на указанный скрипт. Ответ для нее должен быть возвращен только в формате json, т.е. при использовании данной функции в шаблонах страниц, вызываемый ею скрипт не должен менять тип возвращаемых данных на какой-либо другой (путем установки переменной $___notjson, использования функции header('Content-type: TYPE') и т.п.). Использовать ее можно 1 раз на страницу. Для вызова методом GET нескольких скриптов на одной странице можно использовать исходный javascript код функции $PHPCODE$, изменяя идентификатор (id) тега <div id="phpdiv">. Реализовать использование POST-запросов можно через формы, iframe, другие скрипты этого домена и т.д, например: в файле шаблона: <script type="text/javascript"> function updatepostdata(result) { $('#postdiv').html(result); } </script> <div id="postdiv"></div> <iframe frameborder="0" src="http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA¶m1=valueB...¶mN=valueM"></iframe> в скрипте SCRIPT_NAME.php: <? $___notjson=1; if ($_POST) { $ret="POST OK:<br>"; foreach ($_POST as $i => $val) $ret.="$i=$val<br>"; echo "<script type=\"text/javascript\"> window.parent.updatepostdata(\"$ret\"); </script>"; } echo "<form action=\"http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA¶m1=valueB...¶mN=valueM\" method=\"POST\"> <input type=\"hidden\" name=\"field0\" value=\"test_".rand()."\"> <input type=\"submit\" value=\"Go\"> </form>"; ?> ИЛИ в файле шаблона: <script type="text/javascript"> function updatepostdata(result) { $('#postdiv').html(result); } </script> <div id="postdiv"></div> <iframe frameborder="0"> <form action=\"http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA¶m1=valueB...¶mN=valueM\" method=\"POST\"> <input type=\"hidden\" name=\"field0\" value=\"test_".rand()."\"> <input type=\"submit\" value=\"Go\"> </form> </iframe> в скрипте SCRIPT_NAME.php: <? $___notjson=1; if ($_POST) { $ret="POST OK:<br>"; foreach ($_POST as $i => $val) $ret.="$i=$val<br>"; echo "<script type=\"text/javascript\"> window.parent.updatepostdata(\"$ret\"); </script>"; } else echo "No data<br>"; ?> Есть несколько параметров, которыми можно управлять в скрипте:$___notjson=1 - если данная переменная установлена в единицу, то результат работы скрипта возвращается в том виде, в каком его сформировал скрипт, иначе (по умолчанию) результат возвращается в json формате$___retval - результат работы скрипта (возвращенные им данные), может быть установлена в скрипте пользователя и будет использоваться, как результат работы$___error - используется как описание ошибки в случае, если скрипт должен ее вернуть НЕ ИСПОЛЬЗУЙТЕ __FILE__, т.к. скрипты выполняются через wrapper, и данная переменная определена как название wrapper-скрипта. Внимание! 1. Любые попытки использовать PHP-скрипты для злонамеренных действий, в частности для отправки большого числа HTTP-запросов куда-либо, наказываются удалением сайта! 2. По умолчанию результат работы скрипта возвращается В ФОРМАТЕ JSON.ОГРАНИЧЕНИЯ PHPВ данной реализации запрещено использование следующих функций языка:системные вызовы (proc_open, proc_terminate, shell_exec, system и т.д.)низкоуровневые функции по работе с файловой системой (dio_fcntl, dio_open, dio_read, dio_seek и т.д.)posix функцииshared memory функцииMySQL функции: mysql_stat, mysql_pconnectБолее практичные примеры использования скриптов можно посмотреть на phpexample.ucoz.net. Хронологию изменений и дополнений можно посмотреть на phpexample.ucoz.net/manual. |
Код |
---|
<?php if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); } $nameacc = "qwerty@mail.ru"; //e-mail от вконтакте $passacc = "4566464"; //пароль от вконтакте function strip_data($text) { $quotes = array ("\x27", "\x22", "\x60", "\t", "\n", "\r", "'", "/", "¬", ";", "@", "~", "[", "]", "{", "}", "=", ")", "(", "*", "&", "^", "%", "$", "<", ">", "?", "!", '"' ); $goodquotes = array ("-", "+", "#" ); $repquotes = array ("\-", "\+", "\#" ); $text = stripslashes( $text ); $text = trim( strip_tags( $text ) ); $text = str_replace( $quotes, '', $text ); $text = str_replace( $goodquotes, $repquotes, $text ); return $text; } function auth($email, $pass) { $cookies = ''; $email = urlencode($email); $pass = urlencode($pass); $auth_c = dle_cache("auth_c", $config['skin']); if( !$auth_c ) { $context = stream_context_create( array( 'http'=>array( 'header' => "Content-type: text/html\r\nAccept-Charset: windows-1251\r\nAccept-Language: ru-ru\r\nUser-Agent: Mozilla/4.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20036725 Firefox/2.0.0.1\r\nConnection: Close\r\n\r\n", 'method' => 'GET' ) ) ); $temp = array(); $temp['first'] = array(); $temp['second'] = array(); $temp['html'] = file_get_contents("http://vkontakte.ru/login.php?email=".$email."&pass=".$pass, false, $context); $temp['headers'] = $http_response_header; foreach($temp['headers'] as &$value){ if(substr($value, 0, 11)=='Set-Cookie:'){ $temp['parts'] = explode(';', substr($value, 12)); array_push($temp['first'], $temp['parts'][0]); } } $temp['second'] = array_unique($temp['first']); foreach($temp['second'] as &$value){ $cookies .= $value.';'; } unset($temp); $auth_c = substr($cookies, 0, -1); create_cache( "auth_c", $auth_c, $config['skin'] ); } return $auth_c; } function search_video($cookies, $query){ $query = urlencode($query); $cl = curl_init(); curl_setopt($cl, CURLOPT_URL, 'http://vkontakte.ru/gsearch.php'); curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($cl, CURLOPT_HEADER, 0); curl_setopt($cl, CURLOPT_COOKIE, $cookies); curl_setopt($cl, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($cl, CURLOPT_USERAGENT, 'Mozilla/4.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20036725 Firefox/2.0.0.1'); curl_setopt($cl, CURLOPT_CONNECTTIMEOUT, 10); // таймаут соединения curl_setopt($cl, CURLOPT_TIMEOUT, 10); // таймаут ответа curl_setopt($cl, CURLOPT_REFERER, 'http://vkontakte.ru/index.php'); // Подделываем значение - откуда пришли данные. if ($query) { curl_setopt($cl, CURLOPT_POST, 1); curl_setopt($cl, CURLOPT_POSTFIELDS, 'c[section]=video&c[q]='.$query.'&c[noiphone]=1'); } $result = curl_exec($cl); curl_close($cl); $find2 = ""; if($result==!""){ preg_match_all('|\"vid\":\"(\d+)\",\"oid\":\"(\w+)\",.*\"md_title\":\"(.*)\",.*\"hash2\":\"(\w+)\"|U', $result, $find); $count = intval(count($find['1'])); if($count>20) $count = 20; // максимальное выводимое количество видео роликов $i = 0; while ($i<$count-1) { $i++; $find['4'][$i] = str_replace('\\','',$find['4'][$i]); $find['3'][$i] = iconv('utf-8', 'windows-1251', urldecode($find['3'][$i])); $find2 .= <<<HTML <table width="100%" cellspacing="0" cellpadding="5"><tr valign="top"><td style="color: #333333;font-size:14px;font-family: Arial;line-height:normal;"><b>{$find['3'][$i]}</b></td></tr> <tr valign="top"><td> <iframe src="http://vkontakte.ru/video_ext.php?oid={$find['2'][$i]}&id={$find['1'][$i]}&hash={$find['4'][$i]}&hd=1" width="600" height="361" frameborder="0"></iframe> </td></tr><tr valign="top"><td> <div>Код плеера: <input value='<iframe src="http://vkontakte.ru/video_ext.php?oid={$find['2'][$i]}&id={$find['1'][$i]}&hash={$find['4'][$i]}" width="600" height="361" frameborder="0"></iframe>' onclick="this.focus();this.select();" type="text" class="news" style="width:300px;"></div> </td></tr></table><hr><br> HTML; } } if( !$find2 or $find2=="" ) $finds = "Ни одного видео-ролика не найдено."; else $finds = $find2; return ($finds); } $story = substr( trim( strip_tags( strip_data( $_REQUEST['q'] ) ) ), 0, 40 ); if( strlen( $story ) > 3 ) { $search = $story; $cookies = auth($nameacc, $passacc); if(!$cookies or $cookies == ""){ } else $results = search_video($cookies, $search); } else $results = ""; $form = <<<HTML <style> .vklist input {display:inline-block;font-size: 8pt;background:#ffffff;border:#dcdcdc 1px solid;padding:4px 5px;color:#535353;} .vklist hr {color:#cccccc;border: 0px none;border-top: 1px solid;width: 100%;height: 0;} .vklist {margin-left:10px;} </style> <h3 style="color: #333333;font-size:16px;font-family: Arial;line-height:normal;margin-left:10px;">Видео архив</h3> <div class="vklist"><form action='' method='post' name='route'> <table cellspacing=0> <tr><td style="padding:3px 3px 3px 0px;"> <b style="color:#333333;">название</b><br> <input type='text' style="width: 180px;" name='q' value='{$story}' size='40' /> </td><td style="padding:3px;"><br> <input type='submit' value='Поиск' class='button'> </td></tr> </table> </form></div><br><br> HTML; $box = <<<HTML <div class="vklist">{$results}</div> HTML; $tpl->load_template( 'vkvideo.tpl' ); $tpl->set( '{vkvideotable}', "<br>".$box ); $tpl->set( '{vkvideobox}', $form ); $tpl->compile('content'); $tpl->clear(); ?> |
Что по идее нужно:
1. Скрипт берёт со страницы параметр $ENTRY_TITLE$
2. Авторизуется вконтакте
3. Начинает поиск по фразе $ENTRY_TITLE$
4. Находит случайный видеоролик
5. Отдаёт его пользователю
Как уже сказал знаний в PHP - 0, но возможно кто-то сможет такое реализовать тем более, что выше преведён скрипт аналогичного действия но для другого движка.