JSFiddle - React, Tailwind, and code Playground

HTML

Input YouTube video URL:<br />
<input type="text" id="url" oninput="search(this.value)" /><br />

<br />

<div class="data" id="data"></div>

JavaScript

window.search = function (url)
{
	if (url.indexOf("?") === -1 || url.indexOf("v=") === -1)
	return;
	
	var query_string = url.substr(url.indexOf("?")+1),
		arr = [];
	
	parse_str(query_string, arr);
	
	var xhr = new XMLHttpRequest();
	
	xhr.onload = function(oEvent)
	{
		if (xhr.status == 200 && xhr.responseText)
		{
			var obj = JSON.parse(xhr.responseText);
			
			var content = [];
			
			content.push(
                '<img src="//img.youtube.com/vi/' + arr['v'] + '/0.jpg" style="width:80px; height:80px;" />', 
				obj.entry.title['$t'],
				url,
				obj.entry['media$group']['media$description']['$t'],
				obj.entry.author[0].name['$t']
			);
			
			document.getElementById('data').innerHTML = content.join('<br /><br />');
		}
	}
	
	xhr.open("GET", "https://gdata.youtube.com/feeds/api/videos/" + arr['v'] + "?v=2&alt=json", false)
	xhr.send(null);
}


window.parse_str = function (str, array)
{
	var strArr = String(str).replace(/^&/, '').replace(/&$/, '').split('&'),
		sal    = strArr.length,
		fixStr = function (str)
		{
			return decodeURIComponent(str.replace(/\+/g, '%20'));
		},
		i, j, ct, p, lastObj, obj, lastIter, undef, chr, tmp, key, value, postLeftBracketPos, keys, keysLen;

	
	if (!array)
	array = this.window;


	for (i = 0; i < sal; i++)
	{
		tmp   = strArr[i].split('=');
		key   = fixStr(tmp[0]);
		value = (tmp.length < 2) ? '' : fixStr(tmp[1]);

		while (key.charAt(0) === ' ')
		key = key.slice(1);
		
		if (key.indexOf('\x00') > -1)
		key = key.slice(0, key.indexOf('\x00'));
		
		if (key && key.charAt(0) !== '[')
		{
			keys = [];
			postLeftBracketPos = 0;
		
			for (j = 0; j < key.length; j++)
			{
				if (key.charAt(j) === '[' && !postLeftBracketPos)
				{
					postLeftBracketPos = j + 1;
				}
				else if (key.charAt(j) === ']')
				{
					if (postLeftBracketPos)
					{
						if (!keys.length)
						keys.push(key.slice(0, postLeftBracketPos - 1));
						
						keys.push(key.substr(postLeftBracketPos, j -...