Проект VK API в Delphi. Получение фотографий

Здравствуйте, в этой статье я хотел бы опять вернуться к 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;

Как видите ничего сложного нету. В следующей статье мы рассмотрим как можно получить список фотографий, на которых отмечен пользователь
Добавлено: 15 Августа 2013 06:18:57 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...