RedTube Alternate Player

By theli Last update Apr 6, 2008 — Installed 721 times. Daily Installs: 0, 0, 0, 0, 1, 3, 3, 1, 1, 0, 4, 1, 2, 1, 2, 4, 0, 1, 0, 0, 1, 0, 2, 0, 3, 0, 0, 1, 0, 0, 0, 1
// ==UserScript==
// @name          RedTube Alternate Player
// @description	  This script replaces RedTube's flash player to mplayerplug-in on Linux
// @include       http://*redtube.com/*
// ==/UserScript==

if (top==self)
 {
  var host=window.location.hostname;
  var vid =window.location.pathname.substr(1);

  var mediaSource;

  function insertnotice()
  {
    var hrefNodes = document.getElementsByTagName('a');
    for(var a = 0; a < hrefNodes.length; a++)
    {
      if(hrefNodes[a].getAttribute('href').substr(0,28) == "http://www.redtube.com/share")
      {
        hrefNodes[a].setAttribute('href', mediaSource);
      }
    }
  }
  function replace_player()
  {
	var PlayerDiv = document.getElementById('redtube_flv_player');
	PlayerDiv.innerHTML = '<OBJECT classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="584" height="422" codebase="http://www.apple.com/qtactivex/qtplugin.cab" type="video/quicktime"><param name="src" value="' + mediaSource +'"><param name="autoplay" value="true"><param name="controller" value="true"><param name="loop" value="true"><EMBED src="' + mediaSource + '" width="584" height="422" autoplay="true" controller="true" loop="true" pluginspage="http://www.apple.com/quicktime/download/" type="video/quicktime"></EMBED></OBJECT> '
  }

  function extracturls()
  {
    if (host.match(/redtube\./i) !=null)
    {
      var p_file = "" + vid;
      if(p_file == "" || p_file == "video.flv")
      {
        p_file = "1";
      }
      
      var v_fileFloat = "" + Math.floor(parseFloat(p_file) / 1000); // 477 --> 0.477 --> 0
      var v_fileLength = p_file.length; // --> 3
      for (var a = 1; a <= 7 - v_fileLength; ++a)
      {
        p_file = "0" + p_file; // 477 --> 0000477
      }
      v_fileLength = v_fileFloat.length; // --> 1
      for (var a = 1; a <= 7 - v_fileLength; ++a)
      {
        v_fileFloat = "0" + v_fileFloat; // 0 --> 0000000
      }

      var map = new Array("R", "1", "5", "3", "4", "2", "O", "7", "K", "9", "H", "B", "C", "D", "X", "F", "G", "A", "I", "J", "8", "L", "M", "Z", "6", "P", "Q", "0", "S", "T", "U", "V", "W", "E", "Y", "N");
      var mapping = "";
      var myInt = 0;
      for (var a = 0; a <= 6; ++a)
      {
        myInt = myInt + parseInt(p_file.charAt(a)) * (a + 1);
              /* 0000477
              0 --> 0*1 = 0
              0 --> 0*2 = 0
              0 --> 0*3 = 0
              0 --> 0*4 = 0
              4 --> 4*5 = 20
              7 --> 7*6 = 42
              7 --> 7*7 = 49
              myInt = 20+42+49 = 62+49 = 100+2+9=111
              */
      }
      
      var myChar = "" + myInt; // --> "111"
      myInt = 0;
      for (var a = 0; a < myChar.length; ++a) // 3 times
      {
        myInt = myInt + parseInt(myChar.charAt(a));
        //111 --> myInt = 3
      }
      
      var newChar;
      if (myInt >= 10)
      {
        newChar = "" + myInt;
      }
      else
      {
        newChar = "0" + myInt; // newChar = "03"
      }
      
      // p_file = "0000477"
      // myInt = 3
      // newChar = "03"
      // char codes: 0=48 1=49 2=50 3=51 4=52 5=52 6=54 7=55 8=56 9=57
      mapping = mapping + map[p_file.charCodeAt(3) - 48 + myInt + 3]; // char=0 map[48-48+3+3]=map[6] = "O"
      mapping = mapping + newChar.charAt(1);                          // "3"
      mapping = mapping + map[p_file.charCodeAt(0) - 48 + myInt + 2]; // char=0 map[48-48+3+2]=map[5] = "2"
      mapping = mapping + map[p_file.charCodeAt(2) - 48 + myInt + 1]; // char=0 map[48-48+3+1]=map[4] = "4"
      mapping = mapping + map[p_file.charCodeAt(5) - 48 + myInt + 6]; // char=7 map[55-48+3+6]=map[16] = "G"
      mapping = mapping + map[p_file.charCodeAt(1) - 48 + myInt + 5]; // char=0 map[48-48+3+5]=map[8] = "K"
      mapping = mapping + newChar.charAt(0);                          // "0"
      mapping = mapping + map[p_file.charCodeAt(4) - 48 + myInt + 7]; // char=4 map[4+3+7]=map[14] = "X"
      mapping = mapping + map[p_file.charCodeAt(6) - 48 + myInt + 4]; // char=7 map[7+3+4]=map[14] = "X"
      // --> mapping = "O324GK0XX"
      mediaSource = "http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/" + v_fileFloat + "/" + mapping + ".flv";
      // --> http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/0000000/O324GK0XX.flv
      insertnotice();
      replace_player();
    }
  }

  extracturls();

 };