2017-02-16 38 views
0

我實際上正在開發一個JARVIS助理 它將會有很多模塊但是我開始時應該是一個簡單的模塊。Handle YouTube嵌入限制

Youtube One。所以,我的主窗口誰是全屏或隱藏有web瀏覽器

private static string GetYouTubeVideoPlayerHTML(string videoCode) 
    { 
     var sb = new StringBuilder(); 

     const string YOUTUBE_URL = @"http://www.youtube.com/embed/"; 

     sb.Append("<html>"); 
     sb.Append(" <head>"); 
     sb.Append("  <meta name=\"viewport\" content=\"width=device-width; height=device-height;\">"); 
     sb.Append(" </head>"); 
     sb.Append(" <body marginheight=\"0\" marginwidth=\"0\" leftmargin=\"0\" topmargin=\"0\" style=\"overflow-y: hidden\">"); 
     sb.Append($"  <iframe width=\"100%\" height=\"100%\" src =\"{YOUTUBE_URL}{videoCode}?autoplay=1&showinfo=0&controls=0\" frameborder = \"0\" allowfullscreen>"); 
     sb.Append(" </body>"); 
     sb.Append("</html>"); 

     return sb.ToString(); 
    } 

這回我WebBrowser.Navigate()

它工作得很好使用,但如果視頻內嵌限制像VEVO我不能串看到它 https://www.youtube.com/embed/wfN4PVaOU5Q 爲例這裏 一件事告訴我,它可能的,因爲在這個網站 http://codepen.io/Jebik/pen/ZLZQwX 的嵌入式工作就像一個魅力.... 因此它可能是東西,我沒有得到有關此限制。

任何idéa和解決方案是welcomming。 但我寧願有一個合法的解決方案,如「你必須註冊你的域名,並問在https網頁」比「你可以用這種方法破解這個安全性」

回答

0

我發現了一種方式,我不知道爲什麼它作品

我用一臺服務器,我必須上傳網頁

從https
<!DOCTYPE html> 
<html> 
    <body> 
    <div id="player"></div> 
    <script> 
     var player; 
     var body = document.body; 
     var html = document.documentElement; 
     var height = Math.max(body.scrollHeight, body.offsetHeight, 
         html.clientHeight, html.scrollHeight, html.offsetHeight); 
     var width = Math.max(body.scrollWidth, body.offsetWidth, 
         html.clientWidth, html.scrollWidth, html.offsetWidth); 
     window.onresize = resize; 
     var tag = document.createElement('script'); 
     tag.src = "https://www.youtube.com/iframe_api"; 
     var firstScriptTag = document.getElementsByTagName('script')[0]; 
     firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
     function onYouTubeIframeAPIReady() 
     { 
     player = new YT.Player('player', { 
      height: height, 
      width: width, 
      playerVars: { 'autoplay': 1, 'controls': 0, 'showinfo': 0, 'enablejsapi':1, 'iv_load_policy':3, 'modestbranding':1, 'showinfo':0}, 
      videoId: '<?php echo $_GET["v"]; ?>', 
      events: { 
      'onReady': onPlayerReady 
      } 
     }); 
     } 
     function resize() 
     { 
     height = Math.max(body.scrollHeight, body.offsetHeight, 
         html.clientHeight, html.scrollHeight, html.offsetHeight); 
     width = Math.max(body.scrollWidth, body.offsetWidth, 
         html.clientWidth, html.scrollWidth, html.offsetWidth); 
     if(player != null) 
     { 
      player.setSize(width, height); 
     } 
     } 
     function onPlayerReady(event) { 
     event.target.playVideo(); 
     } 
     function playVideo() 
     { 
     player.playVideo(); 
     } 
     function pauseVideo() 
     { 
     player.pauseVideo(); 
     } 
    </script> 
    </body> 
</html> 

的網頁必須是ACCES我完全不知道爲什麼 也許YouTube使用的certificat知道的真實位置網站(檢查它在哪裏註冊而不是ip)

而且taht後,我由WebBrowser.Navigate($"https://domain.fr/youtube.php?v={VideoCode}");

改變我WebBrowser.NavigateToString這樣我在全屏YouTube播放器,在我的WPF窗口,我可以讀取大多數的YouTube視頻像VEVO的限制之一。

這已解決,但如果有人知道爲什麼我很好奇知道