HanFox

YouTube HD Lite (HanFox fix)

Jan 28th, 2012
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name          YouTube HD Lite (HanFox fix)
  3. // @namespace     http://userscripts.org/users/78916
  4. // @description   Automatically plays the best quality YouTube video format and removes ads, plus several optional features
  5. // @include       http://www.youtube.com/watch*
  6. // @version       2012-01-26
  7. // ==/UserScript==
  8.  
  9. // Optional Features
  10. var use1080p = true,
  11.     use720p = true,
  12.     wideVideo = true,
  13.     hideAnnotations = false,
  14.     scrollToVideo = true,
  15.     autoPlay = true,
  16.     hideControls = true;
  17.  
  18.    
  19. // for console debug messages
  20. var debug = false;
  21.  
  22.  
  23. // ensure proper Youtube URL
  24. if ( location.href.search( "watch#!" ) != -1 ) {
  25.     var url = location.href.split( "watch#!" );
  26.     url = url[0] + "watch?" + url[1];
  27.     window.open( url, "_self" );
  28. }
  29.  
  30.  
  31. if ( scrollToVideo ) {
  32.     document.getElementById( "watch-headline-title" ).scrollIntoView( true );
  33. }
  34.  
  35. if ( wideVideo ) {
  36.     // sidebar must be moved down
  37.     var A = document.getElementById( "content" );
  38.     if ( A.className.indexOf( "watch-wide" ) == -1 ) {
  39.         A.className += " watch-wide";
  40.     }
  41.     // video
  42.     A = document.getElementById( "watch-video" );
  43.     if ( A.className.indexOf( "wide" ) == -1 ) {
  44.         A.className += " wide";
  45.     }
  46. }
  47.  
  48.  
  49. var player = document.getElementById( "movie_player" ),
  50.     myPlayer = player.cloneNode( true ),
  51.     //config = unsafeWindow.yt.getConfig( "PLAYER_CONFIG" ),
  52.     flashvars = myPlayer.getAttribute( "flashvars" );
  53.  
  54. if ( debug ) GM_log( "flashvars unmodified: " + flashvars );
  55.  
  56.  
  57. function setFlashvar( field, newVal )
  58. {
  59.     var delimited = "&" + field;
  60.     if ( flashvars.indexOf( delimited ) == -1 ) {
  61.         // field not found, so append it
  62.         flashvars += delimited + "=" + newVal;
  63.     }
  64.     else {
  65.         // modify existing field
  66.         var tmp = flashvars.split( delimited );
  67.         var tmp2 = tmp[1].indexOf( "&" );
  68.         if ( tmp2 != -1 ) {
  69.             flashvars = tmp[0] + delimited + "=" + newVal + tmp[1].substr( tmp2 );
  70.         }
  71.         else {
  72.             flashvars = tmp[0] + delimited + "=" + newVal;
  73.         }
  74.     }
  75. }
  76.    
  77.  
  78. /**********************************************
  79. //     2010.12.22 list of video formats
  80. // fmt=5    240p          vq=small     flv
  81. // fmt=18   240p or 360p  vq=medium    mp4
  82. // fmt=34   240p or 360p  vq=medium    flv
  83. // fmt=35   480p          vq=large     flv
  84. // fmt=22   720p          vq=hd720     mp4
  85. // fmt=37  1080p          vq=hd1080    mp4
  86. ***********************************************/
  87.    
  88. var start = flashvars.search("fmt_list=");
  89. var end = flashvars.indexOf("&", start);
  90. var len = end - start;
  91. var fmt_list = flashvars.substr(start, len);
  92.  
  93. if ( debug ) GM_log( " fmt_list: " + fmt_list );
  94.  
  95. // now must set the "vq" var so that the proper format is loaded
  96. //if ( use1080p && ( fmt_list.search( /37(\/[^,]+){4}/ ) != -1 )) {
  97. if ( use1080p && ( fmt_list.search("37%2F") != -1 )) {
  98.     setFlashvar( "vq", "hd1080" );
  99. }
  100. //else if ( use720p && ( fmt_list.search( /22(\/[^,]+){4}/ ) != -1 )) {
  101. else if ( use720p && ( fmt_list.search("22%2F") != -1 )) {
  102.     setFlashvar( "vq", "hd720" );
  103. }
  104. //else if ( fmt_list.search( /35(\/[^,]+){4}/ ) != -1 ) {
  105. else if ( fmt_list.search("35%2F") != -1 ) {
  106.     setFlashvar( "vq", "large" );
  107. }
  108. else {
  109.     setFlashvar( "vq", "medium" );
  110. }
  111.  
  112.  
  113. setFlashvar( "enablejsapi", "1" );
  114.  
  115. if ( autoPlay ) {
  116.     setFlashvar( "autoplay", "1" );
  117. }
  118. else {
  119.     setFlashvar( "autoplay", "0" );
  120. }    
  121.  
  122. setFlashvar( "watermark", "" );
  123.  
  124. setFlashvar( "invideo", "false" );
  125.  
  126. if ( hideAnnotations ) {
  127.     setFlashvar( "iv_load_policy", "3" );
  128. }
  129.  
  130. if ( hideControls ) {
  131.     setFlashvar( "autohide", "1" );
  132. }
  133. else {
  134.     setFlashvar( "autohide", "0" );
  135. }
  136.  
  137. if ( debug ) GM_log( "flashvars final: " + flashvars );
  138.  
  139. myPlayer.setAttribute( "flashvars", flashvars );
  140.  
  141.  
  142. player.parentNode.replaceChild( myPlayer, player );
Advertisement
Add Comment
Please, Sign In to add comment