Аватар Вконтакте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ilyhamas, 10 May 2010.

  1. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    Необходимо получить фотографию из профиля в Image. Как это осуществить?
    Язык Delphi
     
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    var
    Img : TJpegImage;
    Ms : TMemoryStream;

    begin

    Img := TJpegImage.Create;
    Ms := TMemoryStream.Create;
    try
    Http.Get('http://vkontakte.ru/ссыль на аву', Ms);
    except end;
    Ms.Position := 0;
    img.LoadFromStream(ms);
    form1.Image1.Picture.Graphic := img;
     
    1 person likes this.
  3. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    1n0y

    Как получить определённую картинку это понятно.
    Мне нужно при авторизации. Ссылку картинки я не знаю
     
  4. nitx

    nitx Elder - Старейшина

    Joined:
    4 Jan 2008
    Messages:
    214
    Likes Received:
    31
    Reputations:
    10
    то есть тебе известен линк на саму страницу? Тогда почти так же, нужно только отпарсить из полученного хтмл кода линк на картинку.
     
  5. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    именно это мне и надо
     
  6. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    все просто

    Code:
    var
      Page : TStringList;
      I : Integer;
      url : string;
    begin
      Page := TStringList.Create;
      Page.Text := HTTP.Get('http://vkontakte.ru/idxxxxxx');
      For I := 0 to Page.Count -1 do
      begin
        if Pos('<div id="profilePhoto"', page[i]) <> 0 then
        begin
          url := page[i +1];
          url := Copy(url, Pos('http://', url), Length(url));
          Delete(url, Pos('/>', url), Length(url));
        end;
      end;
    page.Free;
    end;
    
    // url - ссылка на аву)))
    
     
    1 person likes this.
  7. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    Только возникает ошибка JPEG error #42
     
  8. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    как ты картинку отображаешь? приведи код
     
  9. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    второй пост
     
  10. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    дайка сорс, так не понять ниче.. залей на slil
     
  11. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    отправил в ЛС часть кода
     
  12. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    скажи, а почему ты запрашиваешь страницу не авторизировавшись? оО щас намучу авторизацию
     
  13. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    ссылку дал в лс. У тебя там ошибка:

    Code:
      idhttp1.Get(url); // Ты запрашиваешь контент, но никуда его не записываешь
    правильнее будет так:
      idhttp1.Get(url, ms); 
    
    коли юзаешь инди, файл idCookieManager.pas залей в папку lib
     
  14. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    теперь ошибка JPEG error #53
     
  15. Ferrari california

    Joined:
    17 Mar 2010
    Messages:
    0
    Likes Received:
    16
    Reputations:
    0
    я delphi не изучаю и не буду.(изучаю С#)
    Но вот выложу алгоритм.

    1.Авторизуемся VK как те удобно уйма способов,лучше winapi.
    2.После авторизации,циклом на странице ишиш profilePhoto.
    3.Парсиш и сохроняеш в Image.
    p.s.Сильно не критиковать вроде все верно описал.
     
  16. ilyhamas

    ilyhamas Banned

    Joined:
    25 Oct 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    всё разобрался в чём проблема была.
    всем спасибо!
     
  17. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    Code:
    var
      Page : TStringList;
      I : Integer;
      url : string;
    begin
      Page := TStringList.Create;
      Page.Text := HTTP.Get('http://vkontakte.ru/idxxxxxx');
      url := Copy( Page.Text, Pos('img src=http://cs', Page.Text)+8, 70);
      Delete(url, Pos('/>', url), Length(url));
      page.Free;
    end;
    
    
    RedFern.89, так лучше, т.к. эта строчка в коде уникальна. ну или юзайте break; после нахождения строки, сами понимаете зачем :)