Этой статьей я хотел бы начать работу с видеозаписями в ВК. Ближайшая серия статей будет посвещена именно работе с видеозаписями, то есть будем искать видеозаписи по определенному запросу, получать список видеозаписей на которых отмечен пользователь, работать с комментариями к видеозаписи и много другое. В этой статье мы рассмотрим как можно найти видеозаписи по определенному запросу. Итак, что для этого нам понадобится, во-первых как всегда создадим в нашем проекте новую вкладку и зададим ей Caption — «Видеозаписи». Далее на ней мы расположим следующие компоненты

  • TButton
  • TEdit
  • TListBox

В TListBox мы будем размещать после парсинга, например, идентификаторы видеозаписей или полное название, найденной видеозаписи. Итак теперь перейдем к самому методу

  • video.search

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

  • api_id - идентификатор приложения
  • sig - подпись безопасности
  • v - версия API, версия в документации ВК — 2.0, а на самом деле текущая версия API — 3.0
  • q - строка поискового запроса. То есть то, что мы будет искать по всем видеозаписям
  • sort — вид сортировки видеозаписей в ответе с сервера, 1 — по длительности видеозаписи, 0 — по дате добавления
  • hd — если не равен нулю, то поиск будет осуществляться по видеозаписям только высокого качества.
  • count - количество возвращаемых видеозаписей, но не больше 200
  • offset - смещение для выборки определенного подмножества
  • format - формат, возвращаемых данных XML или JSON
  • test_mode - если равен 1, то разрешает тестовые запросы к данным приложения

Первые четыре параметры являются обязательными при составлении запроса.

Итак, также не забываем использовать AnsiToUtf8, чтобы запрос передался в правильно кодировки. Также тут необходимо правильно составить подпись безопасности. Пропарсить результат можно удобным для Вас способом. Ну что теперь на событие OnClick напишем следующий код и получим список идентификаторов нашего видео.

procedure TForm1.Button25Click(Sender: TObject);
var
 sig:string;
 i:integer;
begin
   try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=video.searchq='+AnsiToUtf8(Edit8.Text)+'v=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Clear;
    PostVK.Add('api_id=1918788');
    PostVK.Add('sig='+sig);
    PostVK.Add('v=3.0');
    PostVK.Add('method=video.search');
    PostVK.Add('format=XML');
    PostVK.Add('q='+AnsiToUtf8(Edit8.Text));
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    PostVK.Free;
    ListBox14.Clear;
    i:=1;
    while (i<=length(logVK)) do
     begin
      if pos('',logVK)<>0 then
       begin
        ListBox14.Items.Add(Pars(logVK,','',0));
        delete(logVK,1,pos('',logVK));
        i:=0;
       end;
      inc(i);
     end;
   except
    on e:Exception do
     begin
      PostVK.Free;
     end;
   end;
end;

Вот тут мы получили идентификаторы видеозаписей, в следующей статье мы рассмотрим как можно получить информацию о конкретной видеозаписи.

Полный исходники проекта можно скачать тут

Автор статьи - Andrey53

Метки: , , , , ,




К записи “Проект VK API в Delphi. Поиск видеозаписей в ВК” оставлено комментариев: 9.

  1. Daria:

    Using CD Mailers To Leverage Your ROI…

    https://zaokomtek.ru/?p=323

  2. Вадим:

    Скажите, какая у вас версия делфи? Просто я на делфи 2010, сначала сам пробовал написать поиск, потом пробовал ваш вариант( в принципе у меня было тоже самое), так вот, если запрос английскими буквами, то все нормально, а если русскими, то выдается ошибка 4 incorrect signature. Я так понимаю, что неправильно создается md5. Я пробовал и гет запросы, и URLEncode и UTF8Encode, уже всю голову сломал, не подскажите в чем может быть проблема?

  3. Andrey53:

    2Вадим
    Если такая ошибка 4 incorrect signature, то Вы не правильно создаете подпись безопастности, посмотрите чтобы все было в алфавитном порядке, у меня версия Delphi 7

  4. Вадим:

    sig:=mid+’api_id=2137292format=XMLmethod=audio.searchq=’+AnsiToUtf8(Edit1.Text)+’v=3.0’+secret;
    sig:=md5(sig);
    подпись считаю вот так, впринципе как у вас. Если запрос на английском — проблем нет. Что-то с кодировкой, все из-за юникодности 2010 версии.

  5. Andrey53:

    2Вадим
    Если Вы в подписи безопасности пишите AnsiToUtf8, то и в самом запросе не забывайте это делать, если не получилось, то скорее всего из-за версии Инди, потому что у меня на Delphi 7 работает как и с русскими, так и с английскими без проблем, на Delphi 2010, XE не проверял

  6. Вадим:

    Спасибо, попробую обновить версию Инди. Просто не хочется возвращатся к 7 версии делфи, уже привык к 2010)))

  7. Ravil:

    Вопрос автору — подскажите, как лучше реализовать поиск Вконтакте по людям? Например, ине надо найти людей, у которых в интересах указано «рок-н-ролл» ну или подобное?
    Если ли в VK API методы, позволяющие это сделать? Я сам больше по толстым клиентам да по СУБД специализируюсь :))
    Спасибо.

    • Andrey:

      прочитайте официальную документацию по VK API, там есть такие методы для поиска людей по конкретным параметрам

Оставить комментарий

Вы можете использовать следующие теги:

*