2017-02-16 18 views
0

私は実際にJARVISアシスタントを開発しています それはモジュールがたくさんありますが、私は簡単なものと思われたものから始めます。ハンドルYoutube埋め込み制限

ユーチューブワン。だから、フルスクリーンまたは非表示になり、私のメインウィンドウには、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 Exempleがここ 一つのことが原因で、このサイト http://codepen.io/Jebik/pen/ZLZQwX 魔法のように埋め込ま仕事で私にその可能性を伝える見る.... だからそれはおそらく私がこの制限については取得しない何か。

すべてのイデアと解決策は歓迎です。 しかし、私はむしろ "この方法でこのセキュリティをハックすることができます"よりも "あなたはあなたのドメインを登録し、httpsのページに尋ねる必要があります"のような正当なソリューションを持っています

答えて

0

私は方法

に動作します、私は私が はたぶんユーチューブでの実際の位置を知るためにcertificatを使用する理由Webページがhttps からのアクセスもしてなければならない、私は正確に知っていないWebページ

<!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> 

をアップロードする必要がサーバーを使用しますウェブサイト(それがIPの代わりに登録されている場所を確認)

、私はこのようにWebBrowser.Navigate($"https://domain.fr/youtube.php?v={VideoCode}");

で私のWebBrowser.NavigateToStringを変更tahtた後、私は私のWPFウィンドウにフルスクリーンでユーチューブプレーヤーを持っており、VEVOは1を限らように私は、ユーチューブの動画のほとんどを読むことができます。

これは解決されましたが、誰かが私が知りたいと思う理由を知っている場合