2017-02-16 5 views
0

Я действительно разрабатываю помощника JARVIS У него будет много модулей. Но я начинаю с того, что было легко.Ручка Youtube Вставить ограничение

Youtube One. Так что мой MainWindow кто полноэкранный или скрытый имеет WebBrowser

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 Embeded работы как шарм .... Так что это, вероятно, то, что я не получаю об этом ограничении.

Любые идеи и решения приветствуются. Но я бы предпочел иметь законное решение вроде «человек, которому вы должны зарегистрировать свой домен и спросить страницу в https», чем «вы можете взломать эту защиту этим методом»

ответ

0

Я нашел способ, который не знаю, почему его работы

Я использую сервер я должен загрузить на веб-странице

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

веб-страница должна быть из-доступ по протоколу HTTPS я не знаю точно, почему Может быть YouTube использовать Certificat знать реальное местоположение веб-сайт (проверка, где он зарегистрирован вместо ip)

И после того, как я TAHT изменить WebBrowser.NavigateToString на WebBrowser.Navigate($"https://domain.fr/youtube.php?v={VideoCode}");

Таким образом, у меня есть игрок в юности всего экрана в моем окне WPF и я могу читать большинство YouTube видео, как VEVO ограничивается одним.

Это разрешено, но если кто-нибудь знает, почему мне интересно узнать

Смежные вопросы