Как извлечь закрытую транскрипцию подписи из видео YouTube?

можно ли извлечь закрытую транскрипцию заголовка из видео Youtube?

У нас есть более 200 веб-трансляций на youtube, и каждый по крайней мере один час. Youtube закрыл заголовок для всех видео, но, похоже, пользователи не имеют возможности его получить.

Я попробовал URL в этом блоге, но он не работает с нашими видео.

http://googlesystem.blogspot.com/2010/10/download-youtube-captions.html

спасибо

7 ответов


документ говорит только владелец канала может сделать это через стандартный интерфейс youtube: https://developers.google.com/youtube/2.0/developers_guide_protocol_captions?hl=en

дешевый ремонт: Вы можете нажать на кнопку" interactive transscript " - и скопировать содержимое таким образом. Конечно, таким образом вы теряете миллисекунды.

чрезвычайно дешевое исправление: Общий аккаунт YouTube - чтобы несколько человек могли редактировать и загружать файлы подписей.

сложные решения: API youtube позволяет загружать и загружать файлы субтитров через HTTP... Вы можете написать приложение youtube API, чтобы предоставить пользовательский интерфейс браузера для загрузки или скачивания для любого пользователя или конкретных пользователей.

вот пример проекта для этого в Java http://apiblog.youtube.com/2011/01/youtube-captions-uploader-web-app.html

вот очень простой пример рабочей загрузки для все: http://yt-captions-uploader.appspot.com/


вот как получить транскрипт видео YouTube (когда доступно):

  • перейдите на YouTube и откройте видео по вашему выбору.
  • Нажмите кнопку "Дополнительные действия" (3 горизонтальные точки), расположенную рядом с кнопкой "Поделиться".
  • нажмите "Открыть транскрипт"

хотя синтаксис может быть немного тупым, это довольно хорошее решение.

источник: http://ccm.net/faq/40644-youtube-how-to-get-the-transcript-of-a-video


вы можете просмотреть/скопировать / загрузить XML-файл с временным кодом закрытого файла субтитров youtube, обратившись к

http://video.google.com/timedtext?lang=[LANGUAGE]&v=[YOUTUBE VIDEO IDENTIFIER]
http://video.google.com/timedtext?lang=pt&v=WSVKbw7LC2w

Примечание: этот метод не скачать субтитры автоматически, даже если вы получаете язык права (может есть специальный код на языках автоматически).


(обязательно 'это, вероятно, внутренний youtube.com интерфейс и может сломаться в любое время')

вместо ссылки на другой инструмент, который делает это, вот ответ на вопрос "как это сделать"

я Саша проверить youtube.com HTTP-трафик, и есть ответ от /api/timedtext который содержит информацию о закрытом заголовке как XML.

кажется, что такой ответ:

    <p t="0" d="5430" w="1">
        <s p="2" ac="136">we&#39;ve</s>
        <s t="780" ac="252"> got</s>
    </p>
    <p t="2280" d="7170" w="1">
        <s ac="243">we&#39;re</s>
        <s t="810" ac="233"> going</s>
    </p>

средства по время 0 слово we've и 0+780 слово got и 2280+810 слово going, etc. На этот раз в миллисекундах, поэтому для времени 3090 вы хотите добавить &t=3 к URL.

вы можете использовать любой инструмент для сшивания XML во что-то читаемое, но вот мой мощность Би рабочего стола скрипт для поиска таких слов, как"привилегия":

let
    Source = Xml.Tables(File.Contents("C:\Download\body.xml")),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Attribute:format", Int64.Type}}),
    body = #"Changed Type"{0}[body],
    p = body{0}[p],
    #"Changed Type1" = Table.TransformColumnTypes(p,{{"Attribute:t", Int64.Type}, {"Attribute:d", Int64.Type}, {"Attribute:w", Int64.Type}, {"Attribute:a", Int64.Type}, {"Attribute:p", Int64.Type}}),
    #"Expanded s" = Table.ExpandTableColumn(#"Changed Type1", "s", {"Attribute:ac", "Attribute:p", "Attribute:t", "Element:Text"}, {"s.Attribute:ac", "s.Attribute:p", "s.Attribute:t", "s.Element:Text"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Expanded s",{{"s.Attribute:t", Int64.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type2",{"s.Attribute:t", "s.Element:Text", "Attribute:t"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Other Columns",null,0,Replacer.ReplaceValue,{"s.Attribute:t"}),
    #"Filtered Rows" = Table.SelectRows(#"Replaced Value", each [#"s.Element:Text"] <> null),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "Time", each [#"Attribute:t"] + [#"s.Attribute:t"]),
    #"Filtered Rows1" = Table.SelectRows(#"Added Custom", each ([#"s.Element:Text"] = " privilege" or [#"s.Element:Text"] = " privileged" or [#"s.Element:Text"] = " privileges" or [#"s.Element:Text"] = "privilege" or [#"s.Element:Text"] = "privileges"))
in
    #"Filtered Rows1"

выбрать Open Transcript с ... выпадающий список справа от голосования вверх / вниз и поделиться ссылками.

Это откроет Transcript прокрутка div с правой стороны.

затем вы можете использовать Copy. Обратите внимание, что вы не можете использовать Select All но нужно щелкнуть верхнюю строку, затем прокрутите вниз с помощью большого пальца прокрутки, а затем shift-нажмите на последнюю строку.

обратите внимание, что вы также можете искать в этом тексте, используя обычный поиск веб-страницы.


вы можете скачать потоковые субтитры с YouTube с помощью KeepSubs DownSub.

вы можете выбрать из автоматического транскрипта или автора, поставляемых близких подписей. Он также предлагает возможность автоматического перевода английских субтитров на другие языки с помощью Google Translate.


Я просто получил это легко сделать вручную, открыв транскрипт в начале видео и щелкнув левой кнопкой мыши и перетащив в то время 00:00 маркер с клавишей shift, нажатой на несколько строк в начале.

затем я продвинул видео ближе к концу. Когда видео остановилось, я щелкнул конец последнего предложения, удерживая клавишу shift еще раз. С помощью CTRL-C я скопировал текст в буфер обмена и вставить его в редактор.

готово!

предостережение: убедитесь, что нет RDP-Windows обмена буфера обмена или программного обеспечения, такого как Teamviewer работает в то же время, как эта процедура будет переполнять свои буферы, где копируется большое количество текста.