На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
Страницы: (4) 1 [2] 3 4  все  ( Перейти к последнему сообщению )  
> Delphi+YouTube , Как?
    Rouse_ возник впрос а перехватить как-нибудь разве нельзя адреса роликов, например, посылая запросы на YouTube ... ;)
      Цитата andrew.virus @
      а перехватить как-нибудь разве нельзя адреса роликов, например, посылая запросы на YouTube

      Мне такие способы не известны :)
        Ура! Я разобрался...

        В аттаче мой енот, с помощью которого можно скачивать видео с www.youtube.com

        Угощаемся =)

        P.S.
        Код мальца кривой, но рабочий!
        Сообщение отредактировано: Attack -

        Прикреплённый файлПрикреплённый файлGetYTVFile.zip (1.33 Кбайт, скачиваний: 1090)
          Attack спасибо ...
            пробывал этот код переделать под наш баштуб но неполучилось ничего.
            Можете переделать эту программу под скачку видео дял сервиса http://bashtube.ru/ ?
              Tapac, перекроил под bashtube.ru=) пользуем...
              Сообщение отредактировано: Attack -

              Прикреплённый файлПрикреплённый файлGetBTVFile.zip (1.22 Кбайт, скачиваний: 404)
                Вот пример использования, так на всякий слуай =)
                Прикреплённый файлПрикреплённый файлBD.zip (3.06 Кбайт, скачиваний: 500)
                  ага, этот BD.zip при запуске требует какойто компонент(((
                    Обновлённый енот для bashtube.ru

                    ExpandedWrap disabled
                      ////////////////////////////////////////////////////////////////////////////////
                      ///                                                                          ///
                      ///                -------= GetBashTubeVideoFile  =-------                   ///
                      ///                                                                          ///
                      ///  Ссылка должна быть вида:                                                ///
                      ///                 http://bashtube.ru/video/XXXX/                           ///
                      ///                                                                          ///
                      ///  Пример использования:                                                   ///
                      ///                                                                          ///
                      ///     if GetVideoFile('http://bashtube.ru/video/XXXX/',                    ///
                      ///         'C:\VideoFile.flv') then                                         ///
                      ///         ShowMessage('Файл получен!')                                     ///
                      ///         else ShowMessage('Ошибка');                                      ///
                      ///                                                                          ///
                      ////////////////////////////////////////////////////////////////////////////////
                      unit GetBTVFile;
                       
                      interface
                       
                      uses
                           Windows,
                           SysUtils,
                           Wininet,
                           Classes,
                           IdHTTP;
                       
                      Function GetVideoFile(const URL, SaveFileName : String) : Boolean;
                       
                      implementation
                       
                      function GetInetFile(const fileURL, FileName: String): boolean;
                      const
                           BufferSize = 1024;
                      var
                           hSession,
                           hURL      :    HInternet;
                           Buffer    :    array[1..BufferSize] of Byte;
                           BufferLen :    DWORD;
                           f         :    File;
                      begin
                           Result:=False;
                       
                           hSession := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG,
                                nil, nil, 0);
                           try
                                hURL := InternetOpenURL(hSession,
                                     PChar(fileURL),nil,0,0,0);
                                try
                                     AssignFile(f, FileName);
                                     Rewrite(f,1);
                                     repeat
                                          InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
                                          BlockWrite(f, Buffer, BufferLen)
                                     until BufferLen = 0;
                                     CloseFile(f);
                                     Result:=True;
                                finally
                                     InternetCloseHandle(hURL)
                                end
                           finally
                                InternetCloseHandle(hSession)
                           end
                      end;
                       
                      Function GetVideoFile(const URL, SaveFileName : String) : Boolean;
                           function fAnsiPos(const Substr, S: AnsiString; FromPos: integer) : Integer;
                           var
                                P    :    PAnsiChar;
                           begin
                                   Result := 0;
                                   P := AnsiStrPos(PAnsiChar(S) + fromPos - 1, PAnsiChar(SubStr));
                                   if P <> nil then
                                   Result := Integer(P) - Integer(PAnsiChar(S)) + 1;
                           end;
                      var
                           IdHTTP         :    TIdHTTP;
                           WebDoc         :    TStringStream;
                           X1,
                           X2             :    Integer;
                           FullURLFile    :    String;
                      Begin
                           Result := false;
                           IdHTTP := TIdHTTP.Create(nil);
                           try
                                WebDoc := TStringStream.Create('');
                                try
                                     with IdHTTP do
                                     Begin
                                          Request.UserAgent := 'MSIE';
                                          Request.Host := 'www.bashtube.ru';
                                     End;
                                     IdHTTP.Get(URL + 'play.xml?123', WebDoc);
                       
                                     X1 := fAnsiPos('<location>', WebDoc.DataString, Pos('</creator>', WebDoc.DataString) + 10)+10;
                                     X2 := fAnsiPos('</location>', WebDoc.DataString, X1);
                       
                                     FullURLFile := copy(WebDoc.DataString, X1, X2-X1);
                       
                                     if GetInetFile(FullURLFile, SaveFileName) then Result := true;
                                finally
                                WebDoc.Free;
                                end;
                           finally
                                IdHTTP.Free;
                           end;
                      End;    
                      end.


                    Хочу заметить, что енот написан и тестирован на Delphi 2009
                      Цитата Rouse_ @
                      а откуда проигрыватель его бует известно только ему самому

                      Есть ли возможность как-то это узнать, например с помощью снифера?
                        ну лично я понял откуда берётся видео разбирая исходник.
                        Например открывает ссылку http://bashtube.ru/video/10181/
                        И просто напросто добавим туда play.xml?123
                        И у нас выходит ссылка http://bashtube.ru/video/10181/play.xml?123

                        И у нас будет написано http://bashtube.ru/spotajob1.swf http://www.ufanet.ru/ overlay http://bashtube.ru/files/93/93dc089120dbbe0130fbdf3f06ac0d54.flv

                        Вот ссылка http://bashtube.ru/files/93/93dc089120dbbe0130fbdf3f06ac0d54.flv и есть тот самый видос !!!



                        А не знаете ли как зделать эту программу чтобы например мона было грузить более 2-ух видосов сразу !
                        А то ведь вставляешь ссылку в прогу и всё, пока нескачает нельзя к ней обращаться. Я имею ввиду то, чтобы зделать 1 оболочку, и зделать 1 программу которая будет запускаться из-под оболочки и сохранять видосы
                          Tapac, вроде привели вверху код. Осталось только потоки создавать, передавать в них разные ссылки на скачку и усе :)
                            Пример для YouTube не работает.

                            Качаем файл:
                            http://www.youtube.com/watch?v=Y0a1e2wvhCs

                            FullURLFile в функции GetVideoFile становится следующим:
                            http://www.youtube.com/get_video?video_id=Y0a1e2wvhCs&t=t

                            И никакого FLV по этому адресу нет.
                              Такая же проблема
                              ну что с ютубом делать?
                                pkotenev, ZILOSOFT, всё дело в том что ребята из youtube просто изменили код странички...

                                Переписал Unit, теперь всё работает, по крайней мере пока!

                                ExpandedWrap disabled
                                  ////////////////////////////////////////////////////////////////////////////////
                                  ///                                                                          ///
                                  ///                -------= GetYouTubeVideoFile  =-------                    ///
                                  ///                                                                          ///
                                  ///  Ссылка должна быть вида:                                                ///
                                  ///                 http://www.youtube.com/watch?v=XXXXXXXXXXX               ///
                                  ///                                                                          ///
                                  ///  Пример использования:                                                   ///
                                  ///                                                                          ///
                                  ///     if GetVideoFile('http://www.youtube.com/watch?v=XXXXXXXXXXX',        ///
                                  ///         'C:\VideoFile.flv') then                                         ///
                                  ///         ShowMessage('Файл получен!')                                     ///
                                  ///         else ShowMessage('Ошибка');                                      ///
                                  ///                                                                          ///
                                  ///------------------>>> Написано на Delphi 2009 <<<-------------------------///
                                  ///             с предыдущими версиями работать НЕ должно!                   ///
                                  ////////////////////////////////////////////////////////////////////////////////
                                  unit GetYTVFile;
                                   
                                  interface
                                   
                                  uses
                                      Windows,
                                      SysUtils,
                                      Wininet,
                                      Classes,
                                       IdHTTP;
                                   
                                  Function GetVideoFile(const URL, SaveFileName : String) : Boolean;
                                   
                                  implementation
                                   
                                  function GetInetFile(const fileURL, FileName: String): boolean;
                                  const
                                      BufferSize = 1024;
                                  var
                                      hSession,
                                       hURL       :   HInternet;
                                      Buffer  :   array[1..BufferSize] of Byte;
                                      BufferLen   :   DWORD;
                                      f       :   File;
                                  begin
                                      Result:=False;
                                   
                                      hSession := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG,
                                              nil, nil, 0);
                                      try
                                          hURL := InternetOpenURL(hSession,
                                          PChar(fileURL),nil,0,0,0);
                                          try
                                                  AssignFile(f, FileName);
                                                  Rewrite(f,1);
                                                  repeat
                                                      InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
                                                      BlockWrite(f, Buffer, BufferLen)
                                                  until BufferLen = 0;
                                                  CloseFile(f);
                                                  Result:=True;
                                          finally
                                              InternetCloseHandle(hURL)
                                          end
                                      finally
                                          InternetCloseHandle(hSession)
                                      end
                                  end;
                                   
                                  Function GetVideoFile(const URL, SaveFileName : String) : Boolean;
                                       function fAnsiPos(const Substr, S: string; FromPos: integer) : Integer;
                                       var
                                            tmp  :    String;
                                            p   :    Integer;
                                       begin
                                            Result := 0;
                                            tmp := copy(S, FromPos, (Length(S) - FromPos));
                                            p :=  pos(Substr, tmp);
                                            if p <> 0 then Result := p + FromPos - 1;
                                       end;
                                  const
                                       BeginURLFile   =   'http://www.youtube.com/get_video?video_id=';
                                  var
                                       IdHTTP     :   TIdHTTP;
                                       WebDoc     :   TStringStream;
                                       X1,
                                       X2,
                                       X4,
                                       X5         :   Integer;
                                       FullURLFile    :   String;
                                  Begin
                                      Result := false;
                                      IdHTTP := TIdHTTP.Create(nil);
                                      try
                                          WebDoc := TStringStream.Create('');
                                            try
                                          with IdHTTP do
                                              Begin
                                                  Request.UserAgent := 'MSIE';
                                                      Request.Host := 'www.youtube.com';
                                              End;
                                              IdHTTP.Get(URL, WebDoc);
                                   
                                                 X1 := fAnsiPos('"', WebDoc.DataString, Pos('"video_id":', WebDoc.DataString) + 11)+1;
                                                 X2 := fAnsiPos('"', WebDoc.DataString, X1);
                                                 FullURLFile := BeginURLFile;
                                   
                                                 FullURLFile := FullURLFile + copy(WebDoc.DataString, X1, X2-X1) + '&t=';
                                   
                                                 X4 := fAnsiPos('"', WebDoc.DataString, Pos('"t"', WebDoc.DataString) + 3)+1;
                                                 X5 := fAnsiPos('"', WebDoc.DataString, X4+1);
                                   
                                                 FullURLFile := FullURLFile + copy(WebDoc.DataString, X4, X5-X4);
                                   
                                                 if GetInetFile(FullURLFile, SaveFileName) then Result := true;
                                            finally
                                            WebDoc.Free;
                                            end;
                                       finally
                                          IdHTTP.Free;
                                       end;
                                  End;    
                                  end.


                                написано и протестировано на Delhpi 2009

                                А вообще ребята, парсер вам в помощь, я этот енот написал чисто для того, чтобы новичкам было от чего отталкиваться! А обновляю его от делать нечего ))
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (4) 1 [2] 3 4  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1057 ]   [ 15 queries used ]   [ Generated: 24.10.26, 05:49 GMT ]