Russian Qt Forum
Ноябрь 24, 2024, 02:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как выкачать видео с ютуба  (Прочитано 6608 раз)
Ubuntu_linux
Гость
« : Март 17, 2013, 04:54 »

Какой алгоритм использовать?
Записан
Bepec
Гость
« Ответ #1 : Март 17, 2013, 07:52 »

http://freehabr.ru/blog/php/797.html

Это для php, но в принципе алгоритм можно понять. И хотя б на джаву перенести )
Записан
Ubuntu_linux
Гость
« Ответ #2 : Март 17, 2013, 12:25 »

http://freehabr.ru/blog/php/797.html

Это для php, но в принципе алгоритм можно понять. И хотя б на джаву перенести )
Спасибо, ютуб дает ответ на запрос, но каждий раз он чуточку разный  в 'fmt_url_map' и тут незню как бить. Плюс попадаются два itag с разными значениями в одном линке. Что делать?
Записан
Bepec
Гость
« Ответ #3 : Март 17, 2013, 13:38 »

Не сетевик, незнаю Улыбающийся

PS я с сайтов трансляций качал "нескачиваемые" матчи тупым заливом куков. Но эт молодой был, неопытный.
Записан
Ubuntu_linux
Гость
« Ответ #4 : Март 17, 2013, 15:36 »

Не сетевик, незнаю Улыбающийся

PS я с сайтов трансляций качал "нескачиваемые" матчи тупым заливом куков. Но эт молодой был, неопытный.
Воощето я делаю ето на js, но то не суть важно. Главное почему ютуб себя коварно ведет и как ето побороть?
Записан
Bepec
Гость
« Ответ #5 : Март 17, 2013, 23:32 »

Вкратце - у него дофига серверов для раздачи, это раз. Во вторых за показ рекламы во время просмотра они неплохо дерут бабки Веселый Потому и выдумывают поболе Веселый
Записан
kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #6 : Март 17, 2013, 23:56 »

SMPlayer умеет играть видео с ютуба, можно в его исходниках поискать.
Записан
Ubuntu_linux
Гость
« Ответ #7 : Март 18, 2013, 03:20 »

SMPlayer умеет играть видео с ютуба, можно в его исходниках поискать.
Ок, вот оно:
Код
C++ (Qt)
void RetrieveVideoUrl::gotVideoPage(QNetworkReply *reply)
{
   if(reply->error() != QNetworkReply::NoError)
   {
       emit errorOcurred(m_title, (int)reply->error());
       return;
   }  
   QByteArray arr = reply->readAll();    
   if(arr.isEmpty())
   {
       fetchYTVideoPage(id, m_title);
       return;
   }
   QString replyString = QString::fromUtf8(arr.constData(), arr.size());        
   QRegExp regex("\\\"url_encoded_fmt_stream_map\\\"\\s*:\\s*\\\"([^\\\"]*)");
   regex.indexIn(replyString);
   QString fmtArray = regex.cap(1);    
   fmtArray = sanitizeForUnicodePoint(fmtArray);
   fmtArray.replace(QRegExp("\\\\(.)"), "\\1");
   htmlDecode(fmtArray);
   QStringList codeList = fmtArray.split(',');
   foreach(QString code, codeList)
   {
// (2012-12-20) Youtube Fix by RVM for SMPlayer (http://smplayer.sourceforge.net)
 
/* qDebug("RetrieveYoutubeUrl::parse: code: '%s'", code.toLatin1().constData()); */
 
int itag = 0;
QString n_url;
QString url;
QString s_itag;
 
QStringList par_list = code.split(QRegExp("&|\\?"));
foreach(QString par, par_list) {
/* qDebug("RetrieveYoutubeUrl::parse: par: %s", par.toLatin1().constData()); */
 
if (par.startsWith("url=")) url = par.mid(4);
else
if (par.startsWith("itag=")) {
if (s_itag.isEmpty()) {
s_itag = par;
QRegExp rx("itag=(\\d+)");
if (rx.indexIn(s_itag) != -1) itag = rx.cap(1).toInt();
/* qDebug("RetrieveYoutubeUrl::parse: itag: %d", itag); */
}
}
else {
if (!n_url.isEmpty()) n_url += "&";
n_url += par;
}
}
n_url = url + "?" + s_itag + "&" + n_url;
n_url.replace("&sig=", "&signature=");
 
/* qDebug("RetrieveYoutubeUrl::parse: n_url: '%s'", n_url.toLatin1().constData()); */
 
urlMap[itag] = n_url;
   }
 
   emit gotUrls(urlMap, m_title, id);    
}

Но все равно, что то ютуб у меня выделывается...

« Последнее редактирование: Март 18, 2013, 03:24 от Ubuntu_linux » Записан
IGreench
Гость
« Ответ #8 : Март 28, 2013, 07:43 »

Вот реализация на питоне http://rg3.github.com/youtube-dl/index.html
Очень удобная и хорошая

Вот gui обёртка на него, написанная на Qt https://sourceforge.net/projects/gyd/

Не знаю, для каких задач нужен алгоритм, но я бы не стал его переписывать на Qt, а вот обёртку бы свою написал  Улыбающийся

И напишите свои соображения, находки и прочее. Тема интересная и, порой, актуальная.
Записан
Ubuntu_linux
Гость
« Ответ #9 : Март 28, 2013, 15:20 »

Вот реализация на питоне http://rg3.github.com/youtube-dl/index.html
Очень удобная и хорошая

Вот gui обёртка на него, написанная на Qt https://sourceforge.net/projects/gyd/

Не знаю, для каких задач нужен алгоритм, но я бы не стал его переписывать на Qt, а вот обёртку бы свою написал  Улыбающийся

И напишите свои соображения, находки и прочее. Тема интересная и, порой, актуальная.
Спасибо, но я сам раскрыл тайну ютуба, вот что получилось:
http://hdconvert.com/#youtube
Сколько я тестил, все работало как часики.
Записан
Ubuntu_linux
Гость
« Ответ #10 : Март 28, 2013, 15:29 »

Я, вот, дописываю АПИ под все это дело, если кому интересно... Может подключиться без проблем и получать ссилочки на видео всех доступных форматов!
Если что, то напишите что хотели бы чтоб сервер отдавал в ответ.!

Сейчас сервер отдает ответ в формате JSON с несколькими комбинациями:
1) Полностью все ссилки по порядку вормат-качество + названия ролика+ продолжительность ролика+автор+звездочки
2) аналогично п.1 но с конкретно запрашиваемой ссилочкой с соответственными параметрами формат-качество
3) Просто единственная запрашиваемая, формат-качество, ссилочка в текстовом виде
Записан
Ubuntu_linux
Гость
« Ответ #11 : Март 28, 2013, 15:33 »

В чем фишка? - Когда ютуб опять что-то поменяет, то не надо перерисовать/компилировать приложения достаточно МНЕ изменить серверную логику....
Есть вопросы  Непонимающий
Записан
IGreench
Гость
« Ответ #12 : Март 28, 2013, 21:15 »

Круто! Мне нравится.
Хочу апи к такой сладости =)
И конвертирование, и скачивание с ютуба было бы круто.

Если не секрет, то было бы здорово узнать тайну алгоритма   Подмигивающий
Записан
Ubuntu_linux
Гость
« Ответ #13 : Март 28, 2013, 21:40 »

Круто! Мне нравится.
Хочу апи к такой сладости =)
И конвертирование, и скачивание с ютуба было бы круто.

Если не секрет, то было бы здорово узнать тайну алгоритма   Подмигивающий

Все очень сложно и просто  как бы. %) На словах тяжело объяснить... Тай зачем, если есть апи?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 23.