Этой статьей я хотел бы начать работу с видеозаписями в ВК. Ближайшая серия статей будет посвещена именно работе с видеозаписями, то есть будем искать видеозаписи по определенному запросу, получать список видеозаписей на которых отмечен пользователь, работать с комментариями к видеозаписи и много другое. В этой статье мы рассмотрим как можно найти видеозаписи по определенному запросу. Итак, что для этого нам понадобится, во-первых как всегда создадим в нашем проекте новую вкладку и зададим ей 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
Похожие записи
Метки: API, Idhttp, VK API, vkontakte, vkontakte API, вконтакте API
Using CD Mailers To Leverage Your ROI…
https://zaokomtek.ru/?p=323…
[…] […]
Скажите, какая у вас версия делфи? Просто я на делфи 2010, сначала сам пробовал написать поиск, потом пробовал ваш вариант( в принципе у меня было тоже самое), так вот, если запрос английскими буквами, то все нормально, а если русскими, то выдается ошибка 4 incorrect signature. Я так понимаю, что неправильно создается md5. Я пробовал и гет запросы, и URLEncode и UTF8Encode, уже всю голову сломал, не подскажите в чем может быть проблема?
2Вадим
Если такая ошибка 4 incorrect signature, то Вы не правильно создаете подпись безопастности, посмотрите чтобы все было в алфавитном порядке, у меня версия Delphi 7
sig:=mid+’api_id=2137292format=XMLmethod=audio.searchq=’+AnsiToUtf8(Edit1.Text)+’v=3.0’+secret;
sig:=md5(sig);
подпись считаю вот так, впринципе как у вас. Если запрос на английском — проблем нет. Что-то с кодировкой, все из-за юникодности 2010 версии.
2Вадим
Если Вы в подписи безопасности пишите AnsiToUtf8, то и в самом запросе не забывайте это делать, если не получилось, то скорее всего из-за версии Инди, потому что у меня на Delphi 7 работает как и с русскими, так и с английскими без проблем, на Delphi 2010, XE не проверял
Спасибо, попробую обновить версию Инди. Просто не хочется возвращатся к 7 версии делфи, уже привык к 2010)))
Вопрос автору — подскажите, как лучше реализовать поиск Вконтакте по людям? Например, ине надо найти людей, у которых в интересах указано «рок-н-ролл» ну или подобное?
Если ли в VK API методы, позволяющие это сделать? Я сам больше по толстым клиентам да по СУБД специализируюсь :))
Спасибо.
прочитайте официальную документацию по VK API, там есть такие методы для поиска людей по конкретным параметрам