Youtube video download URL

后端 未结 5 2006
隐瞒了意图╮
隐瞒了意图╮ 2021-01-29 18:22

I wrote a program that gets youtube video URL and downloads it
Up today I did this:
1. get video \"token\" from \"/get_video_info?video_id=ID\" like:

h         


        
5条回答
  •  梦如初夏
    2021-01-29 18:59

    Last time I was working on fixing one of the broken Chrome extensions to download YouTube video. I fixed it by altering the script part.

    (Javascript)

    var links = new String();
    var downlink = new String();
    var has22 = new Boolean();
    has22 = false;
    var Marked = false;
    
    var FMT_DATA = fmt_url_map;//This is html text that you have to grab. In case of extension it was readily available through:document.getElementsByTagName('script');
    
    var StrSplitter1 = '%2C', StrSplitter2 = '%26', StrSplitter3 = '%3D';
    if (FMT_DATA.indexOf(',') > -1) { //Found ,
        StrSplitter1 = ',';
        StrSplitter2 = (FMT_DATA.indexOf('&') > -1) ? '&' : '\\u0026';
        StrSplitter3 = '=';
    }
    
    var videoURL = new Array();
    var FMT_DATA_PACKET = new Array();
    var FMT_DATA_PACKET = FMT_DATA.split(StrSplitter1);
    
    for (var i = 0; i < FMT_DATA_PACKET.length; i++) {
        var FMT_DATA_FRAME = FMT_DATA_PACKET[i].split(StrSplitter2);
        var FMT_DATA_DUEO = new Array();
    
        for (var j = 0; j < FMT_DATA_FRAME.length; j++) {
            var pair = FMT_DATA_FRAME[j].split(StrSplitter3);
            if (pair.length == 2) {
                FMT_DATA_DUEO[pair[0]] = pair[1];
            }
        }
    
        var url = (FMT_DATA_DUEO['url']) ? FMT_DATA_DUEO['url'] : null;
    
        if (url == null) continue;
        url = unescape(unescape(url)).replace(/\\\//g, '/').replace(/\\u0026/g, '&');
        var itag = (FMT_DATA_DUEO['itag']) ? FMT_DATA_DUEO['itag'] : null;
        var itag = (FMT_DATA_DUEO['itag']) ? FMT_DATA_DUEO['itag'] : null;
        if (itag == null) continue;
        var signature = (FMT_DATA_DUEO['sig']) ? FMT_DATA_DUEO['sig'] : null;
        if (signature != null) {
            url = url + "&signature=" + signature;
        }
        if (url.toLowerCase().indexOf('http') == 0) { // validate URL 
    
            if (itag == '5') {
                links += 'FLV (240p)';
            }
            if (itag == '18') {
                links += 'MP4 (360p)';
            }
            if (itag == '35') {
                links += 'FLV (480p)';
            }
            if (itag == '22') {
                links += 'MP4 HD (720p)';
            }
            if (itag == '37') {
                links += ' MP4 HD (1080p)';
            }
            if (itag == '38') {
                links += 'MP4 HD (4K)';
            }
    
            FavVideo();
            videoURL[itag] = url;
            console.log(itag);
        }
    }
    

    You can get separate video link from videoURL[itag] array.

    The extension can be downloaded from here.

    I hope this would help someone. This is working solution (as of 06-Apr-2013)

提交回复
热议问题