Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить адрес потока видео с Youtube [D7]


Artem78 ©   (2016-10-28 03:26:00) 

Нужно по ссылке на видео с Youtube (например: https://www.youtube.com/watch?v=tPVmFDjAfp8) получить ссылку на сам видео поток ( http://r16---sn-5hne6nl6.googlevideo.com/videoplayback?dur=748.402&upn=SijNsBoqZZs&pl=19&id=o-AMVzNhAP1BaGGT2jtcLM6DAGjP_Zmi3USNMmIkrds8JC&source=youtube&ratebypass=yes&signature=0FC292202109AB47606851DE70BF1257E56DD38B.... и т.д.). Этот адрес можно получить здесь: http://www.youtube.com/get_video_info?video_id=tPVmFDjAfp8. Структура как видете очень запутанная, потоков тут много, нужно выдрать хотябы первый попавшийся.

Посоветуйте, как его можно подцепить? Может где-нибудь есть уже готовый модуль для этого?

P.S. Есть рабочий код на php для этой задачи - http://stackoverflow.com/a/13968020/4108542. PHP я знаю хорошо, но испытываю трудности с переносом этого кода на Delphi.


Германн   (2016-11-13 01:51:00) [1]

Удалено модератором


Artem78   (2016-11-13 01:28:00) [2]

Удалено модератором


Artem78   (2016-11-13 01:26:00) [3]

Немного подумав, таки решил задачу. Выкладываю код, может кому-нибудь ещё пригодится:

unit uYoutube;

interface

uses
 Classes,
 SysUtils,
 httpsend, ssl_openssl, synacode, PerlRegEx,
 Windows;

function GetYoutubeDownloadLink(const VideoID: string): string;
function MemoryStreamToString(M: TMemoryStream): string;

implementation

function GetYoutubeDownloadLink(const VideoID: string): string;
var
 HTTPSender: THTTPSend;
 Str: string;
 RegexObj: TPerlRegEx;
begin
 Result := '';
 HTTPSender := THTTPSend.Create;
 try
   HTTPSender.HTTPMethod('GET', ' https://www.youtube.com/get_video_info?video_id=' + VideoID);
   if (HTTPSender.ResultCode >= 100) and (HTTPSender.ResultCode


stas   (2016-10-29 16:39:00) [4]

RegExp в помощь.


kilkennycat   (2016-10-29 03:24:00) [5]

я могу помочь. что именноу тебя не получается?


Artem78   (2016-10-28 16:05:00) [6]

Неужели никто не может помочь? очень нужно


Наверх

Титульная страница Поиск, карта сайта Написать письмо