joonsei
Hello, world!
joonsei
전체 방문자
오늘
어제
  • 분류 전체보기 (32)
    • nodejs (7)
    • javascript (3)
    • Elasticsearch (11)
    • Electron (1)
    • oracle (1)
    • etc (7)
    • MongoDB (1)

인기 글

최근 댓글

최근 글

joonsei
nodejs

youtube 영상 다운로드

2020. 3. 17. 14:56

app.js

const request = require('request');

app.post("/getYoutube", (req, res) => {
    const cookies = "lang=en; _ga=GA1.2.1682187592.1407390651; _dc=1;";
    const options = {
        url : "http://en.savefrom.net/savefrom.php",
        form: {
            sf_url: req.body.sf_url,
            sf_submit: ""
        },
        method: "POST",
        headers: {
            "Cache-Control" : "max-age=0",
            "Connection"    : "keep-alive",
            "Content-Type"  : 'application/x-www-form-urlencoded',
            "Host"          : "en.savefrom.net",
            "Referer"       : "http://en.savefrom.net",
            "Origin"        : "http://en.savefrom.net",
            "Cookie"        : cookies
        }
    };

    const sRequest = request(options, (request, incomingMessage, responseBody) => {
        res.send(responseBody);
        sRequest.end();
    });
});

html & JS

<div class="youtubeArea">
    <div class="clearfix">
        <div class="tarea-wrap">
              <input type="text" name="sf_url" id="sf_url" value="" placeholder="Enter the URL" >
        </div>
        <button type="submit" onclick="getYoutube()">Download</button>
    </div>
    <div class="box clearfix"></div>
</div>

<div id="dummy" style="display:none"></div>




<script type="text/javascript">
function getYoutube(){
    var params = {
        "sf_url" : $("#sf_url").val()
    };
    $(".spinner, .dimd").show()
    $.post("/getYoutube", params, function(data){
        gResult = "";

        data = data.split(';');
        data[data.length - 3] = '';
        data[data.length - 4] = "gResult = " + data[data.length - 4].replace("var", "");
        data = data.join(';');
        data = data.replace("(function(){", "").replace("})();", "");

        $('#dummy').empty();
        $('#dummy').append(data);
        gResult = decodeURIComponent(gResult).split(';');

        while(gResult.pop() == ""){};

        gResult = gResult.join(';');
        gResult = eval(gResult);

        gResult = decodeURIComponent(gResult);
        gResult = JSON.parse(gResult.match(/window.parent.sf.videoResult.show\((.*)\);/)[1]);

        var downloadFlag = false;
        $.each(gResult.url, function(index, url) {
            if(downloadFlag) return;

            if(url.name == "MP4") {
                downloadFlag = true;
                location.href = url.url;
            }
        });
    })
    .always(function(){ $(".spinner, .dimd").hide() })
}
</script>
저작자표시 (새창열림)
    'nodejs' 카테고리의 다른 글
    • nodejs ejs render 대신 html 사용하기
    • body-parser (urlencoded, extended 옵션)
    • req.body null 일때
    • nodejs 기본 메모리 제한
    joonsei
    joonsei
    IT 개발자의 소소한 기술 이야기.

    티스토리툴바