2016-07-28 53 views
0

我有一個文件,我在哪裏使用一個按鈕,稱爲MP4質量,當我點擊該按鈕時,它會打開一個彈出窗口,並要求另一個按鈕按下,下載視頻,有第一個按鈕的JavaScript,當聽到咔嗒聲,打開彈出窗口,並給第二個按鈕,從在使用PHP,現在我希望它來下載單一的點擊,用一個按鈕我想調用一個php函數以及一個javascript函數?

以下爲第一個按鈕的代碼...

<button id="videoDownloadButton" type="button" class="btn btn-info btn-lg"   data-toggle="modal" data-target="#myModal" onClick="downloadVideo();">MP4 Quality</button> 

,當點擊它,下面的JavaScript代碼運行

function downloadVideo() { 
    var videoID = player.getVideoData()['video_id'] 
    document.getElementById("downloadFormatList").innerHTML="Please wait. Processing..."; 
    if (window.XMLHttpRequest) { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp3 = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
    xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp3.onreadystatechange=function() { 
    if (xmlhttp3.readyState==4 && xmlhttp3.status==200) { 
     document.getElementById("downloadFormatList").innerHTML=xmlhttp3.responseText; 
    } 
    } 

    //keyword = keyword.replace(/ /g, '%2B'); 
    xmlhttp3.open("GET","TMB/download.php?videoid="+videoID,true); 
    xmlhttp3.send(); 

} 

,之後PHP代碼運行,PHP代碼是這樣...

if(isset($_REQUEST['videoid'])) { 
$my_id = $_REQUEST['videoid']; 

if(strpos($my_id,"https://youtu.be/") !== false) 
{ 
    $my_id = str_replace("https://youtu.be/","",$my_id); 
} 
} 


<?php 

//$my_video_info = 'http://www.youtube.com/get_video_info?&video_id='.  $my_id; 
$my_video_info = 'http://www.youtube.com/get_video_info?&video_id=' . $my_id . '&asv=3&el=detailpage&hl=en_US'; //video details fix *1 
$my_video_info = curlGet($my_video_info); 
/* TODO: Check return from curl for status code */ 
$thumbnail_url = $title = $url_encoded_fmt_stream_map = $type = $url = ''; 
parse_str($my_video_info); 
?> 



<?php 
$my_title  = $title; 
$cleanedtitle = clean($title); 
if (isset($url_encoded_fmt_stream_map)) { 
/* Now get the url_encoded_fmt_stream_map, and explode on comma */ 
$my_formats_array = explode(',', $url_encoded_fmt_stream_map); 
if ($debug) { 
    echo '<pre>'; 
    print_r($my_formats_array); 
    echo '</pre>'; 
} 
} else { 
echo '<p>No encoded format stream found.</p>'; 
echo '<p>Here is what we got from YouTube:</p>'; 
echo $my_video_info; 
} 
if (count($my_formats_array) == 0) { 
echo '<p>No format stream map found - was the video id correct?</p>'; 
exit; 
} 
/* create an array of available download formats */ 
$avail_formats[] = ''; 
$i    = 0; 
$ipbits   = $ip = $itag = $sig = $quality = ''; 
$expire   = time(); 
foreach ($my_formats_array as $format) { 
parse_str($format); 
$avail_formats[$i]['itag'] = $itag; 
$avail_formats[$i]['quality'] = $quality; 
$type       = explode(';', $type); 
$avail_formats[$i]['type'] = $type[0]; 
$avail_formats[$i]['url']  = urldecode($url) . '&signature=' . $sig; 
parse_str(urldecode($url)); 
$avail_formats[$i]['expires'] = date("G:i:s T", $expire); 
$avail_formats[$i]['ipbits'] = $ipbits; 
$avail_formats[$i]['ip']  = $ip; 
$i++; 
} 


echo '<div class="format_list">'; 
echo '<br>'; 
echo '<table>'; 

/* now that we have the array, print the options */ 
for ($i = 0; $i < 1; $i++) { 
if ($config['VideoLinkMode'] == 'direct' || $config['VideoLinkMode'] == 'both') 
?> <tr><td><?php 
echo $avail_formats[$i]['type']; 
?></td> 

    <td><small>(<?php 
    echo $avail_formats[$i]['quality']; 
?>)</small> </td> 
    <td><small><span class="size"><?php 
    echo formatBytes(get_size($avail_formats[$i]['url'])); 
?></span></small> 
    </td> 

    <td><a href="<?php 
echo $avail_formats[$i]['url']; 
?> '&title='<?php 
echo $cleanedtitle; 
?>'" class="downloadButton">Record Video</a></td> 
    </tr> 
<?php 
} 
?> 

在第一個按鈕點擊後,該按鈕就會出現,

<a href="<?php echo $avail_formats[$i]['url']; ?> '&title='<?php echo $cleanedtitle; ?>'" class="downloadButton">Record Video</a> 

現在我想單擊它,我該怎麼做......?

回答

0

嘗試在彈出頁面的底部添加此:

<script> 
    window.location = '<?php echo $avail_formats[$i]['url']; ?>'; 
</script> 
+0

什麼都不做。 .. –

0

根據你的PHP代碼中,「第二個按鈕」一詞是不正確的。 您可能會計算出質量不同的第二個按鈕。

這就是爲什麼php代碼和第二次點擊存在。

如果您想要立即下載視頻,在

if (isset($my_formats_array[0])) { 
      parse_str($my_formats_array[0]); 
      header("Location: " . urldecode($url) . '&signature=' . $sig); 
      die(); 
    } 

取代你的foreach循環在PHP代碼

foreach ($my_formats_array as $format) { 


    parse_str($format); 
    $avail_formats[$i]['itag'] = $itag; 
    $avail_formats[$i]['quality'] = $quality; 
    $type       = explode(';', $type); 
    $avail_formats[$i]['type'] = $type[0]; 
    $avail_formats[$i]['url']  = urldecode($url) . '&signature=' . $sig; 
    parse_str(urldecode($url)); 
    $avail_formats[$i]['expires'] = date("G:i:s T", $expire); 
    $avail_formats[$i]['ipbits'] = $ipbits; 
    $avail_formats[$i]['ip']  = $ip; 
    $i++; 
} 

,擺脫其他不必要的東西

+0

是的,你是對的,我不需要那件事,但我怎麼能下載這種格式,而不點擊第二個按鈕,當我把你的代碼而不是代碼,並運行它不斷地繼續處理並自動超時,並且什麼也不給。 –

+0

有可能是代碼中的錯誤,它必須被調試 – ams4fy

+0

行。讓我開始調試,如果是這樣,我會告訴你。 –

相關問題