60) { unlink('sig.php'); } } function getc($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $data = curl_exec($ch); curl_close($ch); return $data; } function cut_yt($ganti) { $arayganti = array('Youtube','youtube','YouTube'); $ganti = str_replace($arayganti,'',$ganti); return $ganti; } function exformat($itag) { switch ($itag) { case "5": return "flv"; break; case "6": return "flv"; break; case "13": return "3gp"; break; case "17": return "3gp"; break; case "18": return "mp4"; break; case "22": return "mp4"; break; case "34": return "flv"; break; case "35": return "flv"; break; case "36": return "3gp"; break; case "37": return "mp4"; break; case "38": return "mp4"; break; case "43": return "webm"; break; case "44": return "webm"; break; case "45": return "webm"; break; case "46": return "webm"; break; case "59": return "mp4"; break; case "78": return "mp4"; break; case "82": return "mp4"; break; case "83": return "mp4"; break; case "84": return "mp4"; break; case "85": return "mp4"; break; case "100": return "webm"; break; case "101": return "webm"; break; case "102": return "webm"; break; case "91": return "mp4"; break; case "92": return "mp4"; break; case "93": return "mp4"; break; case "94": return "mp4"; break; case "95": return "mp4"; break; case "96": return "mp4"; break; case "132": return "mp4"; break; case "151": return "mp4"; break; case "133": return "mp4"; break; case "134": return "mp4"; break; case "135": return "mp4"; break; case "136": return "mp4"; break; case "137": return "mp4"; break; case "138": return "mp4"; break; case "160": return "mp4"; break; case "212": return "mp4"; break; case "264": return "mp4"; break; case "298": return "mp4"; break; case "299": return "mp4"; break; case "266": return "mp4"; break; case "139": return "m4a"; break; case "140": return "m4a"; break; case "141": return "m4a"; break; case "256": return "m4a"; break; case "258": return "m4a"; break; case "325": return "m4a"; break; case "328": return "m4a"; break; case "167": return "webm"; break; case "168": return "webm"; break; case "169": return "webm"; break; case "170": return "webm"; break; case "218": return "webm"; break; case "219": return "webm"; break; case "278": return "webm"; break; case "242": return "webm"; break; case "243": return "webm"; break; case "244": return "webm"; break; case "245": return "webm"; break; case "246": return "webm"; break; case "247": return "webm"; break; case "248": return "webm"; break; case "271": return "webm"; break; case "272": return "webm"; break; case "302": return "webm"; break; case "303": return "webm"; break; case "308": return "webm"; break; case "313": return "webm"; break; case "315": return "webm"; break; case "171": return "webm"; break; case "249": return "webm"; break; case "250": return "webm"; break; case "251": return "webm"; break; case "394": return "mp4"; break; case "395": return "mp4"; break; case "396": return "mp4"; break; case "397": return "mp4"; break; case "398": return "mp4"; break; case "399": return "mp4"; break; default: return $itag; break; } } $a = getc("https://www.youtube.com/embed/".$id); $ccc=explode('s/player/', $a); $ddd=explode('/www-player.css', $ccc[1]); $gsts = file_get_contents('https://www.youtube.com/s/player/'.$ddd[0].'/player_ias.vflset/en_US/base.js'); function getchiper($decipherScript) { $decipherPatterns = explode('.split("")', $decipherScript); unset($decipherPatterns[0]); foreach ($decipherPatterns as $value) { $value = explode('.join("")', explode('}', $value)[0]); if (count($value) === 2) { $value = explode(';', $value[0]); array_pop($value); unset($value[0]); $decipherPatterns = implode(';', $value); break; } } preg_match_all('/(?<=;).*?(?=\[|\.)/', $decipherPatterns, $deciphers); if ($deciphers && count($deciphers[0]) >= 2) { $deciphers = $deciphers[0][0]; $deciphersObjectVar = $decipherPatterns ; $decipher = explode($deciphers . '={', $decipherScript)[1]; $decipher = str_replace(["\n", "\r"], '', $decipher); $decipher = explode('}};', $decipher)[0]; $decipher = explode('},', $decipher); // Convert deciphers to object $deciphers = []; foreach ($decipher as &$function) { $deciphers[explode(':function', $function)[0]] = explode('){', $function)[1]; } // Convert pattern to array $decipherPatterns = str_replace($deciphersObjectVar . '.', '', $decipherPatterns); $decipherPatterns = str_replace($deciphersObjectVar . '[', '', $decipherPatterns); $decipherPatterns = str_replace(['](a,', '(a,'], '->(', $decipherPatterns); $decipherPatterns = explode(';', $decipherPatterns); $patterns =$decipherPatterns; $deciphers =$deciphers; if (!file_exists('sig.php')) { for ($i=0; $i < count($patterns); $i++) { $executes = explode('->', $patterns[$i]); $execute=explode('.', $executes[0]); $number = intval(str_replace(['(', ')'], '', $executes[1])); $execute = $deciphers[$execute[1]]; switch ($execute) { case 'a.reverse()': $processSignature = '$reverse'; break; case 'var c=a[0];a[0]=a[b%a.length];a[b]=c': $processSignature= '$length'; break; case 'var c=a[0];a[0]=a[b%a.length];a[b%a.length]=c': $processSignature= '$lengtha'; break; case 'a.splice(0,b)': $processSignature= '$splice'; break; default: die("\n==== Decipher dictionary was not found ===="); break; } $myfile = fopen('sig.php', "a+") or die("Unable to open file!"); if ($i==0) { fwrite($myfile, ' $url, 'width' => $data['width'], 'height' => $data['height'] ); array_push($vidthumb, $values); } // keywords $vidkeywords = array(); if ( isset($streamin_data_json["videoDetails"]["keywords"]) ) { foreach ($streamin_data_json["videoDetails"]["keywords"] as $data) { array_push($vidkeywords, $data); } } // output microdata $json['title']=$vidtitle; $json['videoId']=$vidId; $json['videoThumbnails']=$vidthumb; $json['description']=$viddes; $json['publishedText']=$vidpub; $json['viewCount']=$vidviewCount; $json['keywords']=$vidkeywords; $json['author']=$vidauthor; $json['authorId']=$vidauthorid; $json['authorUrl']=$vidauthourl; $json['lengthSeconds']=$vidtime; $json['liveNow']=$vidisLiveContent; // streams if (isset($streamin_data_json["streamingData"])) { if (isset($streamin_data_json["streamingData"]["formats"])) { $strF=$streamin_data_json["streamingData"]["formats"]; } if (isset($streamin_data_json["streamingData"]["adaptiveFormats"])) { $strA=$streamin_data_json["streamingData"]["adaptiveFormats"]; } $vdef = array(); if (isset($strF)) { foreach ($strF as $stream) { if (isset($stream["signatureCipher"])) { parse_str($stream["signatureCipher"],$dturl); $values = array( 'url' => $dturl['url'].'&sig='.sig($dturl['s']), 'itag' => $stream['itag'], 'type' => $stream['mimeType'], 'quality' => $stream['quality'], 'fps' => $stream['fps'], 'resolution' => $stream['qualityLabel'], 'qualityLabel' => $stream['qualityLabel'], 'container' => exformat($stream['itag']), 'size' => $stream['width'].'x'.$stream['height'], ); array_push($vdef, $values); } else { if (!empty($strF['url'])) { $values = array( 'url' => $strF['url'], ); array_push($vdef, $values); } } } } $aud = array(); $vid = array(); if (isset($strF)) { foreach ($strF as $stream) { if (isset( $stream['url'] )) { if (preg_match('/video/', $stream['mimeType'])) { $values = array( 'url' => $stream['url'], 'itag' => $stream['itag'], 'type' => $stream['mimeType'], 'quality' => $stream['quality'], 'fps' => $stream['fps'], 'resolution' => $stream['qualityLabel'], 'qualityLabel' => $stream['qualityLabel'], 'container' => exformat($stream['itag']), 'size' => $stream['width'].'x'.$stream['height'], ); array_push($vdef, $values); } } } } if (isset($strA)) { foreach ($strA as $stream) { if (isset($stream["signatureCipher"])) { parse_str($stream["signatureCipher"],$dturl); $stream['url']=$dturl['url'].'&sig='.sig($dturl['s']); } if (preg_match('/audio/', $stream['mimeType'])) { $url = $stream['url']; $values = array( 'url' => $url, 'itag' => $stream['itag'], 'type' => $stream['mimeType'], 'quality' => $stream['quality'], 'container' => exformat($stream['itag']), ); array_push($aud, $values); } if (preg_match('/video/', $stream['mimeType'])) { $values = array( 'url' => $stream['url'], 'itag' => $stream['itag'], 'type' => $stream['mimeType'], 'quality' => $stream['quality'], 'fps' => $stream['fps'], 'resolution' => $stream['qualityLabel'], 'qualityLabel' => $stream['qualityLabel'], 'container' => exformat($stream['itag']), 'size' => $stream['width'].'x'.$stream['height'], ); array_push($vid, $values); } } } $json['adaptiveFormats'] = array_merge($vid, $aud); $json['formatStreams'] = $vdef; } else { $vdef = array(); $aud = array(); $vid = array(); $json['adaptiveFormats'] = array_merge($vid, $aud); $json['formatStreams'] = $vdef; } echo json_encode($json); } else { $json = array( 'query' => 'none', ); echo json_encode($json, JSON_FORCE_OBJECT); }