2017-10-21 120 views
2

這是Does YouTube API forbid to download video captions if you are not it's owner?,Get YouTube captionsDoes YouTube API forbid to download video captions if you are not it's owner?的一個重複問題,它們基本上都說不可能,除非通過YouTube API下載字幕,除非您是所有者或第三方貢獻未啓用;然而,我的問題是如何網站像http://downsub.com/http://www.lilsubs.com/有權訪問所有字幕?某些網站如何下載YouTube標題?

換句話說,當我訪問YouTube API將自己(甚至youtubepartneryoutube.force-ssl範圍),我只能下載一些視頻的字幕,但是當我嘗試對這些其他與403: The permissions associated with the request are not sufficient to download the caption track. The request might not be properly authorized, or the video order might not have enabled third-party contributions for this caption.失敗對我來說是相同的視頻網站,它工作正常。我假設他們正在使用YouTube API來訪問字幕,但他們使用了什麼特別的醬料?一些特殊的夥伴關鍵?一個不同的API版本?他們只是從視頻本身或其他什麼東西?

+0

任何鏈接,比如你是不是能夠得到他們,但你可以通過提到的網站獲取它們嗎? –

+0

@JanisS。以下是一個示例:https://youtu.be/0db1_qWZjRA,它解析爲字幕標識zMTLb41gaOS5LWeeAi0ribdiUBImBdqb,然後失敗,並顯示403 – ryanbrainard

+0

感謝您對非官方'timedtext'的評論。這可能適用於我的用例;然而,它似乎不支持沒有簽名的'kind = asr'(即自動翻譯的字幕)。像downsub.com這樣的其他網站也包括這些。他們如何做到這一點?以下是一個示例:https://www.youtube.com/watch?v = vx6NCUyg1NE只有英文和印度尼西亞文沒有密鑰。 ASR字幕也未在此處列出https://www.youtube.com/api/timedtext?v=vx6NCUyg1NE&lang=en&type=list。 – ryanbrainard

回答

3

發送GET請求:

http://video.google.com/timedtext?lang={LANG}&v={VIDEOID} 

實例爲您的視頻中評論:http://video.google.com/timedtext?lang=ko&v=0db1_qWZjRA

讓我們來看看你的另一個例子,即https://www.youtube.com/watch?v=7068mw-6lmI(我在您的評論表示贊同分化部分) 。

有可用於視頻

  • 英語
  • 韓國
  • 西班牙
  • 韓國(自動生成),也稱爲ASR(自動語音識別)

多字幕這些代表字幕name參數(即,name =英文)。

lang代表國家代碼。 在您的例子:https://www.youtube.com/api/timedtext?lang=es-MX&v=7068mw-6lmI&name=Spanish

如果字幕軌道是可用的,這是可以做到的翻譯形成的,即使用tlang參數。

https://www.youtube.com/api/timedtext?lang=en&v=7068mw-6lmI&name=English&tlang=lv 
https://www.youtube.com/api/timedtext?lang=ko&v=7068mw-6lmI&name=Korean&tlang=lv 

這將是我的什麼,這些網站都在使用的出價,也就是可用的字幕軌的譯文(通過嘗試使用無字幕軌輸入視頻爲他們的網站的一個確認)。

至於asr簽名似乎總是需要的,但只要其中一個字幕軌道可用,您可以將其用於翻譯。例如。在OP評論例如:

https://www.youtube.com/api/timedtext?lang=en&v=vx6NCUyg1NE&tlang=lv 

貌似最後一個例子是特殊與兩個字幕軌道是asrchecked with Chrome -> Inspect -> Network),因此你需要省略字幕name參數部分。不幸的是,這種差異在YouTube視頻的設置輪中不可見。

3

有由YouTube使用這個非官方API:

https://www.youtube.com/api/timedtext?lang={LANG}&v={VIDEO_ID} 

LANG這裏是ISO 639-1 2 letter country code。爲了您的例子那就是:

https://www.youtube.com/api/timedtext?lang=ko&v=0db1_qWZjRA

您可以檢查它在網絡選項卡中,同時切換的閉合字幕按鈕:

enter image description here

+0

謝謝,這是迄今爲止最好的答案,但請參閱我對ASR字幕的評論。知道嗎? https://stackoverflow.com/questions/46864428/how-do-some-sites-download-youtube-captions#comment80807861_46864428 – ryanbrainard

+0

任何想法,即使已經提供了'lang',爲什麼在某些視頻上需要'name'參數?例如,如果沒有'name = Korean',這個URL'https://www.youtube.com/api/timedtext?v = 7068mw-6lmI&lang = ko&name = Korean'將不起作用。其他人很好。我認爲這個視頻上的ASR字幕可能有些事要做,因爲還有自動生成的韓文字幕,所以也許是區分,但只是一個猜測。 – ryanbrainard