Developed by Denys Avramenko

Форум / Для программистов и разработчико / Веб-программинг / Удобное скачивание файлов с rapidshare.com

 


  Автор   Сообщение
SND Онлайн статус
№: 293  Дата: 2007-04-07 22:01 GMT
  

Админ

сообщений 269
Где: Ukraine Киев
Кто: МаниМейкер
Лет:
[+] [-]


скрипт для Оперы.

Он выполняет следующие действия:
- Очищает страницу от ненужной и второстепенной информации.
- Нажимает на кнопку "Free".
- Показывает в заголовке и теле страницы время, оставшееся до закачки.
- Если до получения тикета на закачку требуется подождать какое-то время, обновляет страницу по истечении этого времени. Тем самым включает резервирование тикета.
- При появлении кнопки "Download" проигрывает звук. Пока не будет нажата кнопка "Download" звук будет периодически повторяться (по умолчанию через одну минуту).
- При нажатии на кнопку "Download" проверяет, введен ли код, и заменяет кнопку ссылкой:



- если рапидшара показывает сообщение "Your IP-address x.x.x.x is already downloading a file.", страница автоматом обновляется через минуту.

Сам скрипт (rapidshare_com.js):
JAVASCRIPT Код:


// ==UserScript==
// @name        Rapidshare.com helper for Opera 8 - 9
// @version     1.20
// @date        2007-04-06
// @author      Mike Samokhvalov <mikivanch@gmail.com>
// ==/UserScript==


(function(){

  var bPlaySound = true;
  var soundSource = 'data:audio/midi;base64,TVRoZAAAAAYAAQACAPBNVHJrAAAAGwD/WAQEAhgIAP9RAwknwI8A/
1EDB6EgAP8vAE1UcmsAAAAtAP8DBVN0YWZmAMANVpBNfx5IfyGATQAOSACBDpBNfxlIfx6ATQAOSAAA/y8A'
;
  // Repetition interval in milliseconds. 0 - disable repetition.
  var soundRepetitionInterval = 60000; // 1 minute;

  var timerId = '';
  var soundTimerId = '';
  var captchaName = 'accesscode';
  var submitName = 'actionstring';
 
  var minWait = 0;
 
  var addStyle = function(css)
  {
    if(!document || !document.documentElement)
      return;
     
    var s = document.createElement('style');
    s.setAttribute('type', 'text/css');
        s.setAttribute('style', 'display:none !important;');           
        s.appendChild(document.createTextNode(css));
    document.documentElement.appendChild(s);
  };

  var clickFreeButton = function()
  {
    var input = document.getElementsByTagName('input')
    for(var i in input)
    {
      if(input[i].type == 'submit' && input[i].value.toLowerCase() == 'free')
      {
        input[i].click();
        return true;
      }
    }
   
    return false;
  };
 
  var replaceButtonToLink = function()
  {
    if(window.c != undefined)
    {
      if(window.c <= 0)
        document.title = 'RS: ready';
      else
      {
        var d = window.c / 60;
        if(d)
        {
          d = d.toFixed(1);
          if(minWait != d)
          {         
            minWait = d;       
            document.title = 'RS: ' + d + ' minutes';
          }
        }
      }
    }

    var form = document.forms['dl'];
    if(!form)
      return;
     
    var captcha = form.elements[captchaName];
    if(!captcha)
      return;
     
    var submit = form.elements[submitName];
    if(!submit)
      return;
     
    clearInterval(timerId);
   
    if(bPlaySound)
      playSound();
   
    form.addEventListener('submit', function(e) {
      e.preventDefault();
     
      var code = captcha.value;         
      if(!code)
      {       
        alert('Please enter the captcha code.');
        return;
      }

      var link = document.createElement('a');
      link.href = form.action + "?actionstring=" + encodeURIComponent(submit.value) +
        "&accesscode=" + code;       
      link.innerText = submit.value;
      submit.outerHTML = link.outerHTML;
     
      clearInterval(soundTimerId);
     
    }, false);   
  };
 
  var refreshPage = function()
  {
    window.history.go(0);
  };
 
  var showWaitTime = function(minutes, obj)
  {   
    if(typeof(minutes) == 'number' &&  minutes <= 0)
    {
      setTimeout(refreshPage, 1000);
    }
    else
    {
      document.title = 'RS: ' + minutes.toString() + ' minutes';
      obj.innerHTML = obj.innerHTML.replace(/or wait (\d+) minute/i, 'Or wait ' + minutes + ' minute');
      setTimeout(showWaitTime, 60000, minutes - 1, obj);
    }
  };
 
  function playSound()
  {
    var f = document.createElement('IFRAME');
    f.src = soundSource;
    f.width = 0;
    f.height = 0;
    f.frameBorder = 'no';
    f.scrolling = 'no';   
    document.documentElement.appendChild(f);
   
    var i = 0;
    var soundLoop = function()
    {
      var s = soundSource + '#' + i;
      f.setAttribute('src', s, false);
      i++;
    };
   
    if(soundRepetitionInterval > 0)
      soundTimerId = setInterval(soundLoop, soundRepetitionInterval);
  }
 
  var modifyPage = function()
  {
    var css = (     
      'form[name="ul"] {display: none !important;}'
      +'table#premiumtable2 {display: none !important;}'
    );

    if(window.c != undefined || document.forms['dl'])
    {
      addStyle(css);
      timerId = setInterval(replaceButtonToLink, 1000);
    }
    else
    {   
      var p = document.getElementsByTagName('p');   
      var obj = null;
      var min;
      for(var i = 0; i < p.length; i++)
      {
        if(p[i].innerText)
        {
          if(p[i].innerText.indexOf('You have reached the download-limit') == 0)
          {
            obj = p[i];         
            min = p[i].innerText.match(/or wait (\d+) minute/i);
            break;
          }
          else if(p[i].innerText.match(/your ip-address[\d\.\s]*is already downloading a file/i))
          {
            addStyle(css);
            setTimeout(refreshPage, 60000);
            return;
          }
        }
      }

      if(min && min.length > 1)
      {
        min = parseInt(min[1]);
        if(isNaN(min))
          return;
        else
        {
          addStyle(css);
          showWaitTime(min, obj);
        }       
      }   
      else     
        return;
    }   
  }
 
  addStyle('div#header {display: none !important;}');
   
  if(typeof(opera.version) == 'function' && opera.version() >= 9)
  {
    document.addEventListener('DOMContentLoaded', function(e){     
      if(!clickFreeButton())
        modifyPage();       
    }, false)
  }
  else
  {
    document.addEventListener('load', function(e){
      if(!clickFreeButton())
        modifyPage();
    }, false);
  }
})();
 



сохраняем код в файл с названием rapidshare_com.js

Инструменты -> настройки -> закладка "Дополнительно" -> Содержимое -> кнопка "Параметры JavaScript" - Файл пользователя JavaScript -> выбираем директорию где находиться сохраненный rapidshare_com.js ( в моем примере это папка IDportal.org.ua, которая на ходиться на диску C:\ (C:\IDportal.org.ua))

   Сайт
Наверх