• Регулярка. Как определить наличие определенного фрагмента внутри [] и заменить его?

    neluzhin
    @neluzhin
    Предыдущий ответ, где вам порекомендовали регулярку, похожую на сиськи, от части верный, но только от части. Проблема в том, что в квадратных скобках может быть и не ссылка на группу, паблик, мероприятие или человека. Например, [x|test] в социальной сети не преобразуется в гиперссылку и отобразится плейн текстом, а вы создадите гиперссылку, ведующую на 404-ю страницу.

    Вы должны обрабатывать только гиперссылки, начинающиеся с club или id, и заканчивающиеся числом. В любом другом формате ВКонтакте гиперссылки не хранит. Правильное регулярное выражение выглядит примерно так:

    /\[((?:club|id)[0-9]+)\|(.+)\]/

    И вставить это добро можно так:

    <a href="//vk.com/$1">$2</a>

    Ну и наглядный пример на PHP для самых маленьких:

    $comment = preg_replace('/\[((?:club|id)[0-9]+)\|(.+)\]/', '<a href="//vk.com/$1">$2</a>', $comment);

    Следует отметить, что публичные страницы (паблики) и мероприятия (ивенты) в виде гиперссылок также имеют приставку club, а не public и event.
    Ответ написан
    Комментировать
  • Почему не загружается фото на сервер Вконтакте?

    neluzhin
    @neluzhin
    Перед именем файла вы потеряли собачку. То есть у вас должно быть что-то вроде такого:
    $post_params['file'.$i] = '@myscreenshot.png';

    Для пущей наглядности кусок моего кода:
    $ch = curl_init();
    $parameters = array(
    	"file1" => '@'.__DIR__.'/path/to/myscreenshot.png'
    );
    		
    curl_setopt($ch, CURLOPT_URL, $upl_server);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    
    $curl_result = curl_exec($ch);
    curl_close($ch);
    Ответ написан
    Комментировать
  • Как средствами VK API создать в группе обсуждение с опросом?

    neluzhin
    @neluzhin
    Через API создать обсуждение с опросом нельзя.
    Ответ написан
    Комментировать
  • Как с помощью метода wall.post расшарить видео youtube?

    neluzhin
    @neluzhin
    В первую очередь, добавьте видео в видеозаписи пользователя или группы методом video.save. При вызове метода укажите в параметре link ссылку на ваше видео, загруженное на YouTube. После успешного выполнения метода вам вернется upload_url - к этому адресу надо будет сделать пустой POST-запрос (думаю, можно и GET). После обращения к upload_url вам сообщат ID загруженной аудиозаписи, который можно будет использовать в методе wall.post.
    Ответ написан
    1 комментарий
  • Как выглядит аналог curl для JS чтобы отправить запрос серверу?

    neluzhin
    @neluzhin
    Если вы про браузерный JavaScript, то CORS не даст вам этого сделать с VK API своими средствами. Для работы с VK API через браузер надо использовать Open API.
    Ответ написан
    3 комментария
  • Как проверить что пользователь состоит в группе ВК после нажатия на Лайк?

    neluzhin
    @neluzhin
    Предполагаю, что лучшей схемой будет что-то вроде такого:
    1. Просите пользователя поставить лайк;
    2. Поместите где-нибудь возле виджета лайка кнопку авторизации через ВК, получите ID пользователя и методом groups.isMember узнайте, состоит ли пользователь в группе.
    Ответ написан
  • Как публиковать ссылки в сообщество «В контакте» через контекстное меню браузера или через кнопку «Поделиться» на сайтах?

    neluzhin
    @neluzhin
    Если вы хотите сделать так, чтобы мимопроходящий на вашем сайте человек смог нажать кнопку "Поделиться" и сделать репост ссылки в свое сообщество, то у вас такое реализовать не получится. Но если пользователь авторизуется на вашем сайте через свою учетную запись ВК с правами на доступ к его сообществам, то нехитрым способом вы сможете это реализовать самостоятельно. Вы даже сможете повторить функционал Фейсбука, дав возможность выбора между репостом на свою стену, в группу или в ЛС другу. Однако, у пользователя могут возникнуть подозрения, когда он увидит, что приложение ВК, связанное с вашим сайтом, запрашивает у него доступ к его сообществам, стене и личным сообщениям.

    По поводу контекстного меню. Насколько мне известно, пока что (и не факт, что в будущем будут) браузеры не разрешают разработчикам сайтов вносить какие-либо изменения в контестное меню. Единственный способ повлиять на контекстное меню - создать расширение для браузера и просить пользователя установить его. Но это всё, разумеется, не отменит той возни, о которой я рассказал выше.

    Но если вам экспорт ссылок в вашу группу ВК необходим для личного пользования, то я предлагаю вам почитать документацию к расширениям для вашего браузера. Написать собственный экспортер ссылок через контекстное меню - не очень сложная задачка, особенно если вы владете базовыми знаниями JavaScript и VK API.
    Ответ написан
    Комментировать
  • Как узнать список пользователей, у которых в аудиозаписях есть данный исполнитель?

    neluzhin
    @neluzhin
    Никто не отвечает, отвечу я. VK API, а также возможности самой социальной сети, не предусматривают подобный функционал. Но.

    Если хочется острых ощущений, можете смотреть в сторону методов audio.get и execute и начать перебирать все ID'ы пользователей ВКонтакте, проверяя у каждого наличие той или определенной песни. Не знаю, сколько дней у вас займет один такой перебор, но если прям очень хочется, то попробуйте.
    Ответ написан
    4 комментария
  • Как считать лайки перепостов в VK?

    neluzhin
    @neluzhin
    Сам никогда не думал, что такое возможно реализовать. Сейчас покопался в API - похоже, такое действительно по человечески нельзя сделать. Единственный близкий к вашей идее метод на данный момент (версия API 5.45) - это wall.getReposts, и он возвращает информацию только о профилях людей, сделавших репост. Список записей возвращается только в том случае, если во время репоста человек что-нибудь написал. То есть, если 8 человек просто сделали репост, а 2 из них сделали репост и что-то написали, то данный метод вернет только 2 записи. Данный метод также сообщает количество лайков на этих самых записях.

    Для вас есть 3 выхода:
    1. Забить на реализацию сего инструмента или проводить конкурсы в других форматах;
    2. Просить пользователей в обязательном порядке писать что-нибудь к записи, которую они репостят;
    3. Написать какой-нибудь безумный алгоритм, который данным методом получит список пользователей, сделавших репост, а потом будет сканировать стены этих пользователей либо методом wall.search, либо методом wall.get. Но это извращение.
    Ответ написан
  • Как перенести комментарии из темы в группе vk на сайт?

    neluzhin
    @neluzhin
    Задуманное вами сделать не получится. Виджет комментариев - это комментарии, которые будут привязаны к вашему сайту (а точнее - к приложению). Грубо говоря, виджет комментариев - это некая "виртуальная" стена на вашем сайте.

    Чтобы вывести все ответы из обсуждения на ваш сайт, используйте метод API board.getComments. После того, как вы авторизуете пользователя через его учетную запись ВКонтакте, он сможет прямо с вашего сайта с помощью метода board.addComment оставлять комментарии в обсуждении, который отображается на вашем сайте. Эти сообщения будут дублироваться и в обсуждении в группе ВК.

    Если вы провернете фишку с авторизацией пользователя, то перед отправкой комментария обязательно предупредите его о том, что его комментарий появится в таком-то обсуждении.
    Ответ написан
    Комментировать
  • Разные урл для приложения ВКонтакте?

    neluzhin
    @neluzhin
    Предполагаю, что вашу задачу решит добавление хэша в ссылку на приложение. Например, если вы захотите показать пользователю именно холодильники, то следует отредактировать ссылку примерно так: vk.com/app123456#holodilniki.

    В таком случае при запуске приложения будет отправлен GET-параметр hash, который будет содержать всё, что находится после знака # в ссылке на приложение. Вот тут перечислены все параметры, передающиеся в приложение при первом запуске.

    Если вы захотите передать в приложение несколько параметров, то никакого "удобного" способа вы не найдете. Единственный способ - это передавать дополнительные параметры в том же хэше, например vk.com/app123456#holodilniki-page1, а дальше уже парсить этот параметр на стороне сервера или клиента.

    Обратите внимание на то, что массив данных, которые представлены по ссылке на документацию выше, отправляются только один раз при запуске приложения. Если пользователь перейдет по какой-нибудь внутренней ссылке внутри вашего приложения, то эти параметры еще раз не отправятся.
    Ответ написан
    1 комментарий