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

Метки: , , , , ,




К записи “Проект VK API в Delphi. Получение фотографий” оставлено комментариев: 7.

  1. Alex:

    Отличные статьи! Спасибо! Вам бы Вконтакт это отправить, а то они нормального описания с примерами так и не сделали.

    • Алексей:

      Простите, я делаю приложение и мне хотелось бы узнать метод отправки фото в альбом ВК?
      И интересует вопрос с авторизацией, что бы пользователь мог авторизоваться и отправить себе на страницу фото?

      Спасибо)))

  2. Alex:

    Кстати а загрузить фото с помощью api в альбом можно?

  3. Виктор:

    Отлично, спасибо Вам, будем применять данные методы на сайте http://www.iti-pgu.ru

  4. Роман:

    У меня почему-то программа возвращает не все фотографии, которые есть у моих друзей. Почему?

  5. Роман:

    Спасибо, а то думал, что-то не так делаю.

Оставить комментарий на Алексей

Вы можете использовать следующие теги:

*