1

一個非常常見的問題是「如何獲取Youtube視頻的網址?」。大多數答案都涉及到一些視頻頁面的html拼寫和重新編碼,或者訴諸'使用這個第三方工具或網站'。Javascript - 如何以編程方式獲取Youtube視頻的URL? (自我回答)

在任何Youtube視頻頁面的任何瀏覽器中,它都可以通過開發工具控制檯輕鬆完成。

請參閱下面的答案。

+1

有**自答案**有趣的概念,樣本輸出 - 不知道這是可能發佈一個問題,並立即回答,以追蹤知識... –

+1

@MichalStefanow是的,有一些關於它的文件。 http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – Geuis

+0

@MichalStefanow,我知道對不對?不得不書籤鏈接incase我需要拉出「官方」的證據有一天(**如果**這樣的答案導致問題)... –

回答

3

例子是在這裏:

https://gist.github.com/geuis/8b1b2ea57d7f9a9ae22f80d4fbf5b97f

// Run from the dev tools console of any Youtube video 
// Accurate as of June 12, 2016 
var videoUrls = {}; 
ytplayer.config.args.url_encoded_fmt_stream_map.split(',').forEach(function (item) { 
    var obj = {}; 

    item.split('&').forEach(function (param) { 
    param = param.split('='); 
    obj[param[0]] = decodeURIComponent(param[1]); 
    }); 

    videoUrls[obj.quality] = obj; 
}); 

console.log(videoUrls); 

https://www.youtube.com/watch?v=9bZkp7q19f0

{ 
    "hd720": { 
    "url": "https://r3---sn-n4v7sn76.googlevideo.com/videoplayback?ms=au&mv=m&mt=146577…zA3KgkxMjcuMC4wLjE&ip=108.233.85.171&key=yt6&requiressl=yes&itag=22&cnr=14", 
    "quality": "hd720", 
    "s": "1BEF82C7D9487809555E4B5124CA244FD93857C62.7869EB3FE7E8BE955B85E19F769DD80C49F3A87CB", 
    "itag": "22", 
    "type": "video/mp4;+codecs=\"avc1.64001F,+mp4a.40.2\"" 
    }, 
    "medium": { 
    "url": "https://r3---sn-n4v7sn76.googlevideo.com/videoplayback?ms=au&mv=m&mt=146577…AxLnNqYzA3KgkxMjcuMC4wLjE&ip=108.233.85.171&key=yt6&requiressl=yes&itag=18", 
    "quality": "medium", 
    "s": "35ADDCF2F151540B9AE72455ED9CD079B3A166669.F168091B130653FCACA72506C01625B74E46C1A7D", 
    "itag": "18", 
    "type": "video/mp4;+codecs=\"avc1.42001E,+mp4a.40.2\"" 
    }, 
    "small": { 
    "url": "https://r3---sn-n4v7sn76.googlevideo.com/videoplayback?ms=au&mv=m&mt=146577…AxLnNqYzA3KgkxMjcuMC4wLjE&ip=108.233.85.171&key=yt6&requiressl=yes&itag=17", 
    "quality": "small", 
    "s": "0C397549D581241F0F39D3EB8BF6E9B9067F65AFD.76B46A360178C4B001E96166C46AEAE5CF0D6A35F", 
    "itag": "17", 
    "type": "video/3gpp;+codecs=\"mp4v.20.3,+mp4a.40.2\"" 
    } 
} 
+0

任何語言應該如何訪問瀏覽器的開發工具?想象一下,我需要用C++ \ C#\ Java \ Swift \ Python \ PHP等製作我的應用程序的Youtube URL。「console.log」變得無關緊要,所以這就是爲什麼需要正則表達式/刮取HTML頁面或涉及一些解析工具。 –

+0

@ VC.One您的問題是一個有效的問題,但它不在本文的範圍內。這就是爲什麼我設置'javascript'語言標籤。我已經回去並添加了開發工具標籤,以使其更清晰。 – Geuis

+0

@ VC.One您需要使用[YouTube數據API](https://developers.google.com/youtube/v3/getting-started)而不是'get_video_info'端點,因爲它不會發送一個CORS響應('Access-Control-Allow-Origin'頭部)。 –

相關問題