Skip to content

Instantly share code, notes, and snippets.

@aldhinya
Created February 13, 2018 15:57
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 aldhinya/5b92016f508233c617d3bf1dc115d312 to your computer and use it in GitHub Desktop.
Save aldhinya/5b92016f508233c617d3bf1dc115d312 to your computer and use it in GitHub Desktop.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<audio id="youtube" autoplay controls loop></audio>
<script type="text/javascript">
var vid = "3r_Z5AYJJd4",
audio_streams = {};
$.get('https://cors-anywhere.herokuapp.com/https://www.youtube.com/get_video_info?video_id=' + vid, function(data) {
var data = parse_str(data),
streams = (data.url_encoded_fmt_stream_map + ',' + data.adaptive_fmts).split(',');
console.log(streams);
$.each(streams, function(n, s) {
var stream = parse_str(s),
itag = stream.itag * 1,
quality = false;
console.log(stream);
switch (itag) {
case 139:
quality = "48kbps";
break;
case 140:
quality = "128kbps";
break;
case 141:
quality = "256kbps";
break;
}
if (quality) audio_streams[quality] = stream.url;
});
console.log(audio_streams);
$("#youtube").attr({
src: audio_streams['128kbps']
});
});
function parse_str(str) {
return str.split('&').reduce(function(params, param) {
var paramSplit = param.split('=').map(function(value) {
return decodeURIComponent(value.replace('+', ' '));
});
params[paramSplit[0]] = paramSplit[1];
return params;
}, {});
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment