Здравствуйте, в этой статье я хотел бы опять вернуться к 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('' ,logVK)<>0 then
begin
ListBox8.Items.Add(Pars(logVK,',' ',0));
delete(logVK,1,pos('',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;
Как видите ничего сложного нету. В следующей статье мы рассмотрим как можно получить список фотографий, на которых отмечен пользователь
Исходники полного проекта качаем тут
Автор статьи - Andrey53
Похожие записи
Метки: API, Idhttp, VK API, vkontakte, vkontakte API, вконтакте API
Отличные статьи! Спасибо! Вам бы Вконтакт это отправить, а то они нормального описания с примерами так и не сделали.
Простите, я делаю приложение и мне хотелось бы узнать метод отправки фото в альбом ВК?
И интересует вопрос с авторизацией, что бы пользователь мог авторизоваться и отправить себе на страницу фото?
Спасибо)))
Кстати а загрузить фото с помощью api в альбом можно?
Отлично, спасибо Вам, будем применять данные методы на сайте http://www.iti-pgu.ru
У меня почему-то программа возвращает не все фотографии, которые есть у моих друзей. Почему?
там сейчас с апи вконтакте, какие-то изменения, надо переделывать смотреть
Спасибо, а то думал, что-то не так делаю.