KirKMS Опубликовано 3 февраля, 2022 Жалоба Поделиться Опубликовано 3 февраля, 2022 В силу того что старый метод добавления видео уже не актуален. Решил выложить новый. Зайти в файл profile.js Найти там //VIDEOS var videos = { Заменить код который ниже на новый load: function(){ video_lnk = $('#video_lnk').val(); good_video_lnk = $('#good_video_lnk').val(); if(videos.serviece(video_lnk)){ if(video_lnk != 0){ if(video_lnk != good_video_lnk){ $('#box_loading').show(); $.post('/index.php?go=videos&act=load', {video_lnk: video_lnk}, function(data){ if(data == 'no_serviece'){ $('#no_serviece').show(); } else { row = data.split(':|:'); $('#result_load').show(); $('#photo').html('<img src="'+row[0]+'" alt="" id="res_photo_ok" />'); $('#title').val(row[1]); $('#descr').val(row[2]); $('#good_video_lnk').val(video_lnk); $('#no_serviece').hide(); } $('#box_but').show(); $('#box_loading').hide(); }); } else $('#no_serviece').hide(); } else $('#result_load').hide(); } else $('#no_serviece').show(); }, serviece: function(request){ var pattern = new RegExp(/http(?:s)?:\/\/www.youtube.com|http(?:s)?:\/\/youtube.com|http(?:s)?:\/\/rutube.ru|http(?:s)?:\/\/www.rutube.ru|http(?:s)?:\/\/www.vimeo.com|http(?:s)?:\/\/vimeo.com|http(?:s)?:\/\/smotri.com|http(?:s)?:\/\/www.smotri.com/i); return pattern.test(request); }, Зайти в файл videos.php Найти там //################### Добавление видео в БД ###################// Заменить код полностью case "send": NoAjaxQuery(); if($config['video_mod_add'] == 'yes'){ $good_video_lnk = ajax_utf8(textFilter($_POST['good_video_lnk'])); $title = ajax_utf8(textFilter($_POST['title'], false, true)); $descr = ajax_utf8(textFilter($_POST['descr'], 3000)); $privacy = intval($_POST['privacy']); if($privacy <= 0 OR $privacy > 3) $privacy = 1; //Если youtube то добавляем префикс src=" и составляем ответ для скрипта, для вставки в БД if(preg_match("/src=\"https:\/\/www.youtube.com|src=\"https:\/\/youtube.com/i", 'src="'.$good_video_lnk)){ $good_video_lnk = str_replace(array('#', '!'), '', $good_video_lnk); $exp_y = explode('v=', $good_video_lnk); $exp_x = explode('&', $exp_y[1]); $result_video_lnk = '<iframe width="770" height="420" src="https://www.youtube.com/embed/'.$exp_x[0].'" frameborder="0" allowfullscreen></iframe>'; } //Если rutube, То добавляем префикс value=" if(preg_match("/value=\"https:\/\/www.rutube.ru|value=\"https:\/\/rutube.ru/i", 'value="'.$good_video_lnk)){ $exp_frutube = explode('?v=', $good_video_lnk); $result_video_lnk = '<OBJECT width="770" height="420"><PARAM name="movie" value="https://video.rutube.ru/'.$exp_frutube[1].'"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="https://video.rutube.ru/'.$exp_frutube[1].'" type="application/x-shockwave-flash" wmode="window" width="770" height="420" allowFullScreen="true" ></EMBED></OBJECT>'; } //Если vimeo, То добавляем префикс src=" if(preg_match("/src=\"https:\/\/www.vimeo.com|src=\"https:\/\/vimeo.com/i", 'src="'.$good_video_lnk)){ $exp_frutube = explode('com/', $good_video_lnk); $result_video_lnk = '<iframe src="https://player.vimeo.com/video/'.$exp_frutube[1].'" width="770" height="420" frameborder="0"></iframe>'; } //Если smotri, То добавляем префикс src=" if(preg_match("/src=\"https:\/\/www.smotri.com|src=\"https:\/\/smotri.com/i", 'src="'.$good_video_lnk)){ $exp = explode('id=', str_replace('#', '', $good_video_lnk)); $result_video_lnk = '<object id="smotriComVideoPlayer'.$exp[1].'_1314557535.5897_7726" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="770" height="420"><param name="movie" value="https://pics.smotri.com/player.swf?file='.$exp[1].'&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="bgcolor" value="#ffffff" /><embed src="http://pics.smotri.com/player.swf?file='.$exp[1].'&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml" quality="high" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="770" height="420" type="application/x-shockwave-flash"></embed></object>'; } //Формируем данные о фото $photo = $db->safesql(ajax_utf8(htmlspecialchars(trim($_POST['photo'])))); $photo = str_replace("\\", "/", $photo); $img_name_arr = explode(".", $photo); $img_format = totranslit(end($img_name_arr)); $image_name = substr(md5(time().md5($good_video_lnk)), 0, 15); //Разришенные форматы $allowed_files = array('jpg', 'jpeg', 'jpe', 'png', 'gif'); //Загружаем картинку на сайт if(in_array(strtolower($img_format), $allowed_files) && preg_match("/https:\/\//i", $photo) && $result_video_lnk){ //Директория загрузки фото $upload_dir = ROOT_DIR.'/uploads/videos/'.$user_id; //Если нет папки юзера, то создаём её if(!is_dir($upload_dir)){ @mkdir($upload_dir, 0777); @chmod($upload_dir, 0777); } //Подключаем класс для фотографий include ENGINE_DIR.'/classes/images.php'; @copy($photo, $upload_dir.'/'.$image_name.'.'.$img_format); $tmb = new thumbnail($upload_dir.'/'.$image_name.'.'.$img_format); $tmb->size_auto('175x131'); $tmb->jpeg_quality(100); $tmb->save($upload_dir.'/'.$image_name.'.'.$img_format); } if($result_video_lnk AND $title){ $photo = $config['home_url'].'uploads/videos/'.$user_id.'/'.$image_name.'.'.$img_format; $db->query("INSERT INTO `".PREFIX."_videos` SET owner_user_id = '{$user_id}', video = '{$result_video_lnk}', photo = '{$photo}', title = '{$title}', descr = '{$descr}', add_date = NOW(), privacy = '{$privacy}'"); $dbid = $db->insert_id(); $db->query("UPDATE `".PREFIX."_users` SET user_videos_num = user_videos_num+1 WHERE user_id = '{$user_id}'"); $photo = str_replace($config['home_url'], '/', $photo); //Добавляем действия в ленту новостей $generateLastTime = $server_time-10800; $row = $db->super_query("SELECT ac_id, action_text FROM `".PREFIX."_news` WHERE action_time > '{$generateLastTime}' AND action_type = 2 AND ac_user_id = '{$user_id}'"); if($row) $db->query("UPDATE `".PREFIX."_news` SET action_text = '{$dbid}|{$photo}||{$row['action_text']}', action_time = '{$server_time}' WHERE ac_id = '{$row['ac_id']}'"); else $db->query("INSERT INTO `".PREFIX."_news` SET ac_user_id = '{$user_id}', action_type = 2, action_text = '{$dbid}|{$photo}', action_time = '{$server_time}'"); //Чистим кеш mozg_mass_clear_cache_file("user_{$user_id}/page_videos_user|user_{$user_id}/page_videos_user_friends|user_{$user_id}/page_videos_user_all|user_{$user_id}/profile_{$user_id}|user_{$user_id}/videos_num_all|user_{$user_id}/videos_num_friends"); if($_POST['notes'] == 1) echo "{$photo}|{$user_id}|{$dbid}"; } } else echo 'error'; die(); break; Чуть ниже найти //################### Парсер . Загрузка данных о видео ###################// Заменить код полностью case "load": NoAjaxQuery(); $video_lnk = $_POST['video_lnk']; if(preg_match("/https:\/\/www.youtube.com|https:\/\/youtube.com|https:\/\/rutube.ru|https:\/\/www.rutube.ru|https:\/\/www.vimeo.com|https:\/\/vimeo.com|https:\/\/smotri.com|https:\/\/www.smotri.com/i", $video_lnk)){ //Открываем ссылку //Если ссылка youtube, то формируем xml ссылку для получения данных if(preg_match("/https:\/\/www.youtube.com|https:\/\/youtube.com/i", $video_lnk)){ $exp_y = explode('v=', $video_lnk); $exp_x = explode('&', $exp_y[1]); $sock = fopen('https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v='.$exp_x[0].'&format=xml', 'r'); } elseif(preg_match("/https:\/\/www.vimeo.com|https:\/\/vimeo.com/i", $video_lnk)){ $sock = fopen('https://vimeo.com/api/oembed.xml?url='.$video_lnk, 'r'); } else { $sock = fopen($video_lnk, 'r'); } if(!$sock){ echo 'no_serviece'; } else { $html = ''; //Если сервис youtube, rutube, smotri то просто выводи if(preg_match("/https:\/\/www.youtube.com|https:\/\/youtube.com|https:\/\/rutube.ru|https:\/\/www.rutube.ru|https:\/\/smotri.com|https:\/\/www.smotri.com/i", $video_lnk)){ while(!feof($sock)){ $html .= fgets($sock); } } //Если сервис Vimeo, то сразу применяем кодировку utf-8, win-1251 if(preg_match("/https:\/\/www.vimeo.com|https:\/\/vimeo.com/i", $video_lnk)){ while(!feof($sock)){ $html .= ajax_utf8(fgets($sock)); } } fclose($sock); //Если сервис Vimeo, то выводим без кодировки $data = str_replace(array('[', ']'), array('&iqu;', '&iqu2;'), $html); //Если сервис youtube применяем кодировку utf-8, win-1251 $data_all = ajax_utf8(str_replace(array('[', ']'), array('&iqu;', '&iqu2;'), $html)); //Если видеосервис youtube if(preg_match("/https:\/\/www.youtube.com|https:\/\/youtube.com/i", $video_lnk)){ preg_match_all('`(<title>[^\[]+\</title>)`si', $data_all, $parse); $res_title = rn_replace(str_replace(array('<title>', '</title>'), '', $parse[1][0])); //Делаем фотку для youtube $parse_start = explode('v=', $video_lnk); $parse_end = explode('&', $parse_start[1]); $res_img = "https://img.youtube.com/vi/{$parse_end[0]}/0.jpg"; } //Если видеосервис rutube if(preg_match("/https:\/\/rutube.ru|https:\/\/www.rutube.ru/i", $video_lnk)){ $data_rutube = iconv('koi8-u', 'windows-1251', str_replace(array('[', ']'), array('&iqu;', '&iqu2;'), $html)); preg_match_all('`(<meta property="og:title" content="[^\[]+\<meta property="og:description")`si', $data_rutube, $parse_rutube); $res_title = rn_replace(str_replace(array('<meta property="og:title" content="', '<meta property="og:description"', '" />'), '', $parse_rutube[1][0])); preg_match_all('`(<meta property="og:description" content="[^\[]+\<meta property="og:image")`si', $data_rutube, $parse_rutube_descr); $res_descr = rn_replace(str_replace(array('<meta property="og:description" content="', '<meta property="og:image"', '" />'), '', $parse_rutube_descr[1][0])); $exp_rutube_img = explode('v=', $video_lnk); $exp_img_dir = substr($exp_rutube_img[1], 0, 2); $exp_img_dir_2 = substr($exp_rutube_img[1], 2, 2); $res_img = "https://tub.rutube.ru/thumbs/{$exp_img_dir}/{$exp_img_dir_2}/{$exp_rutube_img[1]}-1.jpg"; } //Если видеосервис vimeo if(preg_match("/https:\/\/www.vimeo.com|https:\/\/vimeo.com/i", $video_lnk)){ preg_match_all('`(<title>[^\[]+\</title>)`si', $data, $parse); $res_title = str_replace(array('<title>', '</title>'), '', $parse[1][0]); preg_match_all('`(<thumbnail_url>[^\[]+\</thumbnail_url>)`si', $data, $parse_img); $res_img = str_replace(array('<thumbnail_url>', '</thumbnail_url>'), '', $parse_img[1][0]); preg_match_all('`(<description>[^\[]+\</description>)`si', $data, $parse_descr); $res_descr = myBrRn(rn_replace($parse_descr[1][0])); } //Если видеосервис smotri if(preg_match("/https:\/\/smotri.com|https:\/\/www.smotri.com/i", $video_lnk)){ $html = iconv('utf-8', 'windows-1251', $html); preg_match_all('`(<meta property="og:title" content="[^\[]+\<meta property="og:image")`si', $html, $parse_title); $res_title = rn_replace(str_replace(array('<meta property="og:title" content="', '<meta property="og:image"', '" />'), '', $parse_title[1][0])); preg_match_all('`(<link rel="image_src" href="[^\[]+\<!-- Open Graf Protocol. Facebook/Yandex -->)`si', $html, $parse_img); $res_img = rn_replace(str_replace(array('<link rel="image_src" href="', '<!-- Open Graf Protocol. Facebook/Yandex -->', '" />'), '', $parse_img[1][0])); } $result_img = $res_img; $result_title = trim(strip_tags(strtr($res_title, array(''' => "'", '"' => '"', '&iqu;' => '[', '&iqu2;' => ']')))); $result_descr = trim(strip_tags($res_descr)); if($result_img && $result_title) echo "{$result_img}:|:{$result_title}:|:{$result_descr}"; else echo 'no_serviece'; } } else echo 'no_serviece'; die(); break; Вот и всё. От плюса в репу не откажусь. 5 Ссылка на комментарий Поделиться на другие сайты Поделиться
OKLIX Опубликовано 6 февраля, 2022 Жалоба Поделиться Опубликовано 6 февраля, 2022 спасибо большое) Ссылка на комментарий Поделиться на другие сайты Поделиться
RUS67 Опубликовано 29 октября Жалоба Поделиться Опубликовано 29 октября Доброго времени суток! Есть проблема с добавлением видео с https:// RuTube.Ru отвечает Цитата Видеосервис не поддерживается либо ссылка является неправильной Остальное видео с https:// YouTube.Com, Vimeo.Com добавляются без проблем. Кто то сможет помочь исправить эту проблему? Ссылка на комментарий Поделиться на другие сайты Поделиться
kphp Опубликовано 1 ноября Жалоба Поделиться Опубликовано 1 ноября есть вот такая реализация кода case "load": NoAjaxQuery(); $video_lnk = $_POST['video_lnk']; if(preg_match("/http:\/\/www.youtube.com|http:\/\/youtube.com|http:\/\/rutube.ru|http:\/\/www.rutube.ru|http:\/\/www.vk.com|http:\/\/vk.com|http:\/\/smotri.com|http:\/\/www.smotri.com/i", $video_lnk)){ //Открываем ссылку //Если ссылка youtube, то формируем xml ссылку для получения данных if(preg_match("/http:\/\/www.youtube.com|http:\/\/youtube.com/i", $video_lnk)){ $exp_y = explode('v=', $video_lnk); $exp_x = explode('&', $exp_y[1]); $sock = fopen('http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v='.$exp_x[0].'&format=xml', 'r'); } elseif(preg_match("/http:\/\/www.rutube.ru|http:\/\/rutube.ru/i", $video_lnk)){ $exp_y = explode('rutube.ru/', $video_lnk); $xmlfile = 'http://rutube.ru/api/'.$exp_y[1]; $sock = fopen('http://www.rutube.ru/api/'.$exp_y[1], 'r'); } elseif(preg_match("/http:\/\/vk.com|http:\/\/www.vk.com/i", $video_lnk)){ //------------------Проверям на готовый код---------------- $inet = preg_match("/video_ext.php/", $video_lnk); if ($inet == 1){//парсер на прямую $inet = 'ur1'; }else{ $inet = preg_match("/vk.com\/video/", $video_lnk); if ($inet == 1){//парсер с моих видео $inet = 'ur2'; }else{echo 'no_serviece';} } //==================Конец Проверки на готовый код========== //----------------------(1)----------------------- if ($inet == 'ur1'){ //ID юзера $a1 = explode('oid=', $video_lnk); $a2 = explode('&', $a1[1]); //ID видео $z1 = explode('&id=', $video_lnk); $a3 = explode('&', $z1[1]); //hash видео $urlhash1 = explode('hash=', $video_lnk); $urlhash2 = explode('&', $urlhash1[1]); //Данные $oid = $a2[0]; $idn = $a3[0]; $hash = $urlhash2[0]; } //=====================Конец====================== //----------------------(2)----------------------- if ($inet == 'ur2'){ //hash видео $urlhash = file_get_contents($video_lnk); $urlhash1 = explode('"hash2\":\"', $urlhash); $urlhash2 = explode('\",\"is_vk\":', $urlhash1[1]); //ID юзера $a1 = explode('vk.com/video', $video_lnk); $a2 = explode('_', $a1[1]); //ID видео $a3 = explode('_', $a1[1]); //Данные $oid = $a2[0]; $idn = $a3[1]; $hash = $urlhash2[0]; } //=====================Конец====================== //парсим //vk xml видео $vkxml = file_get_contents('http://vk.com/video_ext.php?oid='.$oid.'&id='.$idn.'&hash='.$hash); //хост $b1 = explode("video_host = '", $vkxml); $b2 = explode("';", $b1[1]); //ip видео $b3 = explode("video_uid = '", $vkxml); $b4 = explode("';", $b3[1]); //номер видео $b5 = explode("video_vtag = '", $vkxml); $b6 = explode("';", $b5[1]); //формат видео $b7 = explode("video_no_flv = ", $vkxml); $b8 = explode(";", $b7[1]); if ($b8[0] == 1){ $format = '.mp4'; }else{ $format = '.flv'; } //Проверка на качество видео $fileg = fopen($b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.720'.$format, 'r'); if (!$fileg){ $fileg = fopen($b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.480'.$format, 'r'); if (!$fileg){ $fileg = fopen($b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.360'.$format, 'r'); if (!$fileg){ $fileg = fopen($b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.240'.$format, 'r'); if (!$fileg){}else{ $urlfile = $b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.240'.$format; } }else{ $urlfile = $b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.360'.$format; } }else{ $urlfile = $b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.480'.$format; } }else{ $urlfile = $b2[0].'u'.$b4[0].'/videos/'.$b6[0].'.720'.$format; } $urlvkyes = 'http://vk.com/video_ext.php?oid='.$oid.'&id='.$idn.'&hash='.$hash; $sock = fopen($urlfile, 'r'); } else { $sock = fopen($video_lnk, 'r'); } if(!$sock){ echo 'no_serviece'; } else { $html = ''; //Если сервис youtube, rutube, smotri, video.bigmir.net то просто выводи if(preg_match("/http:\/\/www.youtube.com|http:\/\/youtube.com|http:\/\/rutube.ru|http:\/\/www.rutube.ru|http:\/\/smotri.com|http:\/\/www.smotri.com/i", $video_lnk)){ while(!feof($sock)){$html .= fgets($sock);}} fclose($sock); //Если сервис youtube применяем кодировку utf-8, win-1251 $data_all = str_replace(array('[', ']'), array('&iqu;', '&iqu2;'), $html); //Если видеосервис youtube if(preg_match("/http:\/\/www.youtube.com|http:\/\/youtube.com/i", $video_lnk)){ preg_match_all('`(<title>[^\[]+\</title>)`si', $data_all, $parse); $res_title = rn_replace(str_replace(array('<title>', '</title>'), '', $parse[1][0])); //Делаем фотку для youtube $parse_start = explode('v=', $video_lnk); $parse_end = explode('&', $parse_start[1]); $res_img = "http://img.youtube.com/vi/{$parse_end[0]}/0.jpg"; $n_servis = "1"; } //RUTUBE if(preg_match("/http:\/\/rutube.ru|http:\/\/www.rutube.ru/i", $video_lnk)){ $video_lnk = file_get_contents($xmlfile); //Картинка $img1 = explode('"thumbnail_url": "', $video_lnk); $img2 = explode('"', $img1[1]); $res_img = $img2[0]; //Заголовок $title1 = explode('"title": "', $video_lnk); $title2 = explode('"', $title1[1]); //Описание $text1 = explode('"description": "', $video_lnk); $text2 = explode('"', $text1[1]); //id $id1 = explode('"embed_url": "http://rutube.ru/video/embed/', $video_lnk); $id2 = explode('"', $id1[1]); $id_url = $id2[0]; $n_servis = "2"; } //VK if(preg_match("/http:\/\/www.vk.com|http:\/\/vk.com/i", $video_lnk)){ //Картинка $img1 = explode('<img id="player_thumb" src="', $vkxml); $img2 = explode('"/>', $img1[1]); $img3 = str_replace ('v6','v4',$img2[0]); $res_img = $img3; //Заголовок $title1 = explode("var video_title = '", $vkxml); $title2 = explode("';", $title1[1]); $res_title = urldecode($title2[0]); $id_url = $urlvkyes; $n_servis = "3"; } //ДЕКОДЕР if ($n_servis == 2){ function Escape_win ($path) { $path = strtoupper ($path); return strtr($path, array("\U0430"=>"а", "\U0431"=>"б", "\U0432"=>"в", "\U0433"=>"г", "\U0434"=>"д", "\U0435"=>"е", "\U0451"=>"ё", "\U0436"=>"ж", "\U0437"=>"з", "\U0438"=>"и", "\U0439"=>"й", "\U043A"=>"к", "\U043B"=>"л", "\U043C"=>"м", "\U043D"=>"н", "\U043E"=>"о", "\U043F"=>"п", "\U0440"=>"р", "\U0441"=>"с", "\U0442"=>"т", "\U0443"=>"у", "\U0444"=>"ф", "\U0445"=>"х", "\U0446"=>"ц", "\U0447"=>"ч", "\U0448"=>"ш", "\U0449"=>"щ", "\U044A"=>"ъ", "\U044B"=>"ы", "\U044C"=>"ь", "\U044D"=>"э", "\U044E"=>"ю", "\U044F"=>"я", "\U0410"=>"А", "\U0411"=>"Б", "\U0412"=>"В", "\U0413"=>"Г", "\U0414"=>"Д", "\U0415"=>"Е", "\U0401"=>"Ё", "\U0416"=>"Ж", "\U0417"=>"З", "\U0418"=>"И", "\U0419"=>"Й", "\U041A"=>"К", "\U041B"=>"Л", "\U041C"=>"М", "\U041D"=>"Н", "\U041E"=>"О", "\U041F"=>"П", "\U0420"=>"Р", "\U0421"=>"С", "\U0422"=>"Т", "\U0423"=>"У", "\U0424"=>"Ф", "\U0425"=>"Х", "\U0426"=>"Ц", "\U0427"=>"Ч", "\U0428"=>"Ш", "\U0429"=>"Щ", "\U042A"=>"Ъ", "\U042B"=>"Ы", "\U042C"=>"Ь", "\U042D"=>"Э", "\U042E"=>"Ю", "\U042F"=>"Я", "\U00AB"=>"«", "\U00BB"=>"»", "\U2014"=>"-", "\U00A0"=>" "));} $res_title = Escape_win ($title2[0]); $res_descr = Escape_win ($text2[0]); } $result_img = $res_img; $result_title = trim(strip_tags(strtr($res_title, array(''' => "'", '"' => '"', '&iqu;' => '[', '&iqu2;' => ']')))); $result_descr = trim(strip_tags($res_descr)); if($result_img && $result_title) echo "{$result_img}:|:{$result_title}:|:{$result_descr}:|:{$n_servis}:|:{$id_url}"; else echo 'no_serviece'; } } else echo 'no_serviece'; die(); break; Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения