Этой статьей я хотел бы начать работу с видеозаписями в ВК. Ближайшая серия статей будет посвещена именно работе с видеозаписями, то есть будем искать видеозаписи по определенному запросу, получать список видеозаписей на которых отмечен пользователь, работать с комментариями к видеозаписи и много другое. В этой статье мы рассмотрим как можно найти видеозаписи по определенному запросу. Итак, что для этого нам понадобится, во-первых как всегда создадим в нашем проекте новую вкладку и зададим ей 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('https://api.vkontakte.ru/api.php',PostVK);
PostVK.Free;
ListBox14.Clear;
i:=1;
while (i<=length(logVK)) do
begin
if pos('<id>',logVK)<>0 then
begin
ListBox14.Items.Add(Pars(logVK,'<id','</id>',0));
delete(logVK,1,pos('</id>',logVK));
i:=0;
end;
inc(i);
end;
except
on e:Exception do
begin
PostVK.Free;
end;
end;
end;
Вот тут мы получили идентификаторы видеозаписей, в следующей статье мы рассмотрим как можно получить информацию о конкретной видеозаписи.
Полный исходники проекта можно скачать тут