Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kyawthet-naing/ba1d2ade8951521dd05c0de22855dbaf to your computer and use it in GitHub Desktop.
Save kyawthet-naing/ba1d2ade8951521dd05c0de22855dbaf to your computer and use it in GitHub Desktop.
Get a youtube video information from get_video_info.
request = require 'request'
youTubeMovieInfo =
youTubeMovieId: 'videoId'
url = "http://www.youtube.com/get_video_info?video_id=#{youTubeMovieInfo.youTubeMovieId}"
request.get url, (err, res, body) ->
return callback(false) if err
return callback(false) if res.statusCode isnt 200
formats = parseYoutubeInfoStringToFormats(body)
return callback(false) if formats is null
mp4StreamUrl = getMp4StreamUrlFromFormats(formats)
youTubeMovieInfo.mp4StreamUrl = mp4StreamUrl
# parse youtube api json response.
parseYoutubeInfoStringToFormats = (youtubeInfoString) ->
youtubeInfoArray = youtubeInfoString.split '&'
return null if youtubeInfoArray[0] is 'status=fail'
formatStreamArrayString = (element for element in youtubeInfoArray when element.split('=')[0] is 'url_encoded_fmt_stream_map')[0].split('=')[1]
formatStreamArray = decodeURIComponent(formatStreamArrayString).split(',')
formats = []
for formatStreamString in formatStreamArray
formatInfoArray = formatStreamString.split '&'
formatInfoMap = {}
for formatInfoElement in formatInfoArray
formatInfoElementPair = formatInfoElement.split '='
formatInfoMap[formatInfoElementPair[0]] = decodeURIComponent(formatInfoElementPair[1])
formats.push formatInfoMap
return formats
# find mp4 stream url from parsed data.
getMp4StreamUrlFromFormats = (formats) ->
return format.url for format in formats when format.itag is '18'
@Osoted56
Copy link

Hackearon mi cuenta

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment