Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2020, 15:45   #11
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Код:
function ExtractVideoIDFromURL(VidURL : string) : string;
var
  i : Integer;
begin
  if (Pos('http://www.twitch.tv/videos/', VidURL) = 1) or
     (Pos('https://www.twitch.tv/videos/', VidURL) = 1) then
  begin
    i := Pos('s/', VidURL);
    if i > 0 then
    begin
      Result := VidURL;
      Delete(Result, 1, i + 1);
      i := Pos('?', Result);
      if i > 0 then
      Result := Copy(Result, 1, i - 1);
    end else
    Result := '';
  end else
  Result := '';
end;
BLACK_RAIN вне форума Ответить с цитированием
Старый 09.11.2020, 15:50   #12
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

И последняя константа TWITCH_VIDEO_INFO_URL
tarakan1983 вне форума Ответить с цитированием
Старый 09.11.2020, 16:11   #13
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Код:
  TWITCH_VIDEO_INFO_URL = 'https://api.twitch.tv/kraken/videos/<video_id>';
BLACK_RAIN вне форума Ответить с цитированием
Старый 09.11.2020, 16:45   #14
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

в функции Https_Get я после
Код:
RecvText := ResponseText;
вставил
Код:
RecvText := StringReplace(RecvText,'//thumb/','/thumb/',[rfReplaceAll, rfIgnoreCase]);
и у меня все отработало на ура.

Код:
function Https_Get(sURL : string; var RecvText : AnsiString) : Integer;
const
  sUserAgent = 'Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101';
var
  hInet, hConnect, hRequest : HINTERNET;
  lpdwBufferLength: DWORD;
  lpdwReserved    : DWORD;
  dwBytesRead     : DWORD;
  lpdwNumberOfBytesAvailable : DWORD;
  _pos : Cardinal;
  ServerName, Resource, Header : string;
  ResponseText : AnsiString;
  p : PChar;
begin
  Result := -1;
  _pos := Pos('://', sURL);
  Header := Copy(sURL, 1, _pos + 2);
  Delete(sURL, 1, _pos + 2);
  _pos := Pos('/', sURL);
  ServerName := Copy(sURL, 1, _pos - 1);
  Delete(sURL, 1, _pos - 1);
  Resource := sURL;
  hInet := InternetOpen(PChar(sUserAgent), INTERNET_OPEN_TYPE_PRECONFIG,
                        nil, nil, 0);
  if Assigned(hInet) then
  begin
    hConnect := InternetConnect(hInet, PChar(ServerName),
                  INTERNET_DEFAULT_HTTPS_PORT, nil, nil,
                  INTERNET_SERVICE_HTTP, 0, 0);
    if Assigned(hConnect) then
    begin
      p := PChar('Accept: ' + TWITCH_V5_ACCEPT + #0);
      hRequest := HttpOpenRequest(hConnect, 'GET', PChar(Resource),
                  HTTP_VERSION, '', @p, INTERNET_FLAG_SECURE, 0);
      if Assigned(hRequest) then
      begin
        Header := 'Client-ID: ' + TWITCH_CLIENT_ID;
        if not HttpSendRequest(hRequest, PChar(Header), Length(Header), nil, 0) then
        begin
          InternetCloseHandle(hRequest);
          InternetCloseHandle(hConnect);
          InternetCloseHandle(hInet);
          Exit;
        end;

        lpdwBufferLength := SizeOf(dword);
        lpdwReserved := 0;
        if not HttpQueryInfo(hRequest,
                             HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER,
                             @result, lpdwBufferLength, lpdwReserved) then
        begin
          InternetCloseHandle(hRequest);
          InternetCloseHandle(hConnect);
          InternetCloseHandle(hInet);
          Exit;
        end;

        if Result = 200 then
        begin
          _Pos := 1;
          ResponseText := '';
          repeat
            if not InternetQueryDataAvailable(hRequest,
                                lpdwNumberOfBytesAvailable, 0, 0) then
            begin
              InternetCloseHandle(hRequest);
              InternetCloseHandle(hConnect);
              InternetCloseHandle(hInet);
              Exit;
            end;
            SetLength(ResponseText, Length(ResponseText) +
                           Integer(lpdwNumberOfBytesAvailable));
            InternetReadFile(hRequest, @ResponseText[_pos],
                            lpdwNumberOfBytesAvailable, dwBytesRead);
            Inc(_Pos, dwBytesRead);
          until dwBytesRead = 0;
          RecvText := ResponseText;

          //*********************************
          //*********************************
          RecvText := StringReplace(RecvText,'//thumb/','/thumb/',[rfReplaceAll, rfIgnoreCase]);
          //*********************************
          //*********************************
          //if Pos('//thumb',RecvText) > 0 then
          //  ShowMessage('');


        end;
        InternetCloseHandle(hRequest);
      end;
      InternetCloseHandle(hConnect);
    end;
    InternetCloseHandle(hInet);
  end;
end;
А по сути у этой картинки и есть такой URL через два слеша.

Последний раз редактировалось tarakan1983; 09.11.2020 в 16:51.
tarakan1983 вне форума Ответить с цитированием
Старый 10.11.2020, 12:57   #15
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от tarakan1983 Посмотреть сообщение
А по сути у этой картинки и есть такой URL через два слеша.
Прикольно. Первый раз такое вижу. Я думал это глюк.
Я по ошибке проверял на устаревшем JSON'е, по-этому получал ошибку 404. Там уже всё удалили, а я думал, что это из-за двух слешей. На новых JSON'ах всё работает.
Первый раз вижу в ссылке два слеша подряд.
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSON PTyTb32 Общие вопросы Delphi 0 02.06.2018 10:44
Работа с JSON (System.JSON) nibufep Общие вопросы Delphi 3 19.04.2016 18:21
JSON Exception [org.apache.json] spectrum988 Помощь студентам 3 11.12.2015 09:25
Снова я и снова геморрой, только уже с многопоточностью FleXik Общие вопросы Delphi 26 07.07.2013 16:48
MDIChild снова и снова... Siber_Dec Общие вопросы Delphi 2 13.12.2009 03:24