Здравствуйте, в этой статье я хотел бы опять вернуться к API в ВК. На этот раз хотел бы рассмотреть метод API, с помощью которого можно получить все фотографии с альбомов. Довольно интересный метод, а также довольно полезный, так как можно вполне данную функцию сделать довольно привлекательной в вашем проекте, в виде слайд-шоу или что-то в этом вроде. Хочу сказать сразу, что все фотографии пользователя с фотоальбома данный метод возвращает в антихронологическом порядке. Скажу сразу, что данный метод позволяет получить ссылки на ваши фотографии в разных размерах фотографий, а точнее их 3 это:
src - среднее разрешение
src_big - полноразмерная фотография
src_small - самое маленькое разрешение
То есть если Вы будете получать отображать, например, в TImage src_big, то естественно фотографии там будут четкие, хорошего разрешения, ну а другие будут менее эффективные, но зато будут «тянуть» меньше трафика.
Теперь давайте перейдем непосредственно к самому методу, данный метод называется
photos.getAll
Он имеет следующие параметры
api_id - идентификатор приложения
sig - подпись безопастности
v - версия API, в документации VK 2.0, рабочая — 3.0
owner_id - идентификатор пользователя, для которого необходимо смотреть список фотографий
offset - смещения, необходимое для выборки определенного подмножества фотографий
count — количество фотографий, которое можно получать за 1 раз, по умолчанию 100
format - формат, получаемых данных JSON или XML
test_mode - если равен 1, то разрешает тестовые запросы к данным приложения
Кстати хочу сказать, что найти качественные шины для своей машины довольно сложно, тем более зимние, когда они очень необходимы. Так вот, если Вы хотите поставить качественные шины на свой автомобиль, то купить шины Киев помогут это Вам сделать.
Ну что теперь давайте получим в TListBox список url картинок действительного размера и затем сделаем ручной слайд-шоу, с помощью TImage, конечно затем сможете сделать и с помощью таймера слайд-шоу, но это уже по вашему усмотрению, а теперь код, который формирует запрос и получает url на фотографии из ваших альбомов
procedure TForm1.Button18Click(Sender: TObject);
var
sig:string;
i:integer;
begin
try
PostVK:=TStringList.Create;
sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=photos.getAllowner_id='+Edit7.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=photos.getAll');
PostVK.Add('format=XML');
PostVK.Add('owner_id='+Edit7.Text);
PostVK.Add('sid='+Pchar(LabelSid.Caption));
logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
ListBox8.Clear;
i:=1;
while i<=length(logVK) do
begin
if pos('<src_big>',logVK)<>0 then
begin
ListBox8.Items.Add(Pars(logVK,'<src_big','</src_big>',0));
delete(logVK,1,pos('</src_big>',logVK));
i:=0;
end;
inc(i);
end;
PostVK.Free;
except
on e:Exception do
PostVK.Free;
end;
end;
Не забывайте составлять подпись в алфавитном порядке и использовать версиюAPI - 3.0. У меня при авторитизации в TEdit заносится мой id, а если Вы получите список идентификаторов ваших друзей и нажмете на их идентификатор, то сможете посмотреть список фотографий в их альбоме, то есть я не использовал здесьowner_id - по умолчанию.
Теперь код, который я написал на получение фотографий — кнопка «Далее«
procedure TForm1.Button19Click(Sender: TObject);
var
Stream:TStream;
jpg:TJPEGImage;
begin
try
if count>=ListBox8.Count-1 then
count:=-1;
inc(count);
Stream:=TStringStream.Create(IdHTTP1.Get(ListBox8.Items[count]));
jpg:=TJPEGImage.Create;
jpg.LoadFromStream(Stream);
Image2.Picture.Assign(jpg);
jpg.Free;
Stream.Free;
except
on e:Exception do
begin
Stream.Free;
jpg.Free;
end;
end;
end;
Ну а теперь кнопка «Назад«
procedure TForm1.Button20Click(Sender: TObject);
var
Stream:TStream;
jpg:TJPEGImage;
begin
try
if count<=0 then
count:=1;
dec(count);
Stream:=TStringStream.Create(IdHTTP1.Get(ListBox8.Items[count]));
jpg:=TJPEGImage.Create;
jpg.LoadFromStream(Stream);
Image2.Picture.Assign(jpg);
jpg.Free;
Stream.Free;
except
on e:Exception do
begin
Stream.Free;
jpg.Free;
end;
end;
end;
Как видите ничего сложного нету. В следующей статье мы рассмотрим как можно получить список фотографий, на которых отмечен пользователь