Помогите подредактировать Javascript

Тема в разделе "JavaScript", создана пользователем extrimportal, 8 окт 2011.

Модераторы: ZiX
  1. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    540
    Симпатии:
    70
    Есть код для вебмастеров от savefrom.net (не считайте за рекламу :)) для получения прямых ссылок на файлообменники. сколько бы не писал в поддержку там походу все застрелились. Прошу вас. Есть явакод для вставки в страницу и он добавляет прямую ссылку. вот сам код.
    PHP:
    // SaveFrom.net link modifier
    // Copyright � 2009-2010 SaveFrom.net
    // All rights reserved
    //

    var savefrom__lm = {

      
    ///////////////////////////////////////////////////////////////////
      // SETTINGS
      
      
    parentId''

      
    replaceLinkfalse,

      
    languagenull,

      
    htmlBefore' ',
      
    htmlAfter'',

      
    linkText'',

      
    linkStyle'border: none; text-decoration: none; padding: 0;',  
      
    imgStyle'border: none; vertical-align: inherit; width: auto; height: auto;',
      
      
    anchorStyle'',

      
    modifyTextLinktrue,
      
    modifyTextLinkBoxId'',

      
    useImageButtontrue,
      
    useSmallButtonfalse,
      
      
    sfref'',
      
      
    ///////////////////////////////////////////////////////////////////
      // DO NOT EDIT

      
    pageUrl'http://savefrom.net/',
      
      
    linkCount0,
      
    anchorAttribute'savefrom_lm',
      
    anchorIndexAttribute'savefrom_lm_index',

      
    linkRegExpnull,

      
    re: {
        
    filehosting: {
          
    'rapidshare.com': [/^http:\/\/([\w\-]+\.)?rapidshare\.com\/\#\!download\|\d+\|\d+\|[^\s\"\|]+\|\d+/i, /^http:\/\/(rs\d+\.|www\.)?rapidshare\.com\/files\/\d+\/.+/i],
          
    'filefactory.com': [/^http:\/\/(www\.)?filefactory\.com\/file\/[a-z0-9]+\/?/i],
          
    'sendspace.com': [/^http:\/\/(www\.)?sendspace\.com\/file\/\w+/i]
        },

        
    mediahosting: {
          
    'youtube.com': [/^http:\/\/([a-z]+\.)?youtube\.com\/watch\?.*v=/i],
          
    'google.com': [/^http:\/\/video\.google\.com\/videoplay\?.*docid=/i],
          
    'metacafe.com': [/^http:\/\/(www\.)?metacafe\.com\/watch\/\d+\/[^\/]+\/?/i],
          
    'break.com': [/^http:\/\/(www\.)?break\.com\/(index|movies\w*|(\w+\-)+\w+)\/.+\.html$/i, /^http:\/\/view\.break\.com\/\d+/i],
          
    'vimeo.com': [/^http:\/\/([\w\-]+\.)?vimeo\.com\/\d+$/i],
          
    'spike.com': [/^http:\/\/(www\.)spike\.com\/video\/([^\/]+\/)*\d+/i],
          
    'sevenload.com': [/^http:\/\/([\w\-]+\.)?sevenload\.com\/videos\/[\w\-\+\/=]+/i, /^http:\/\/([\w\-]+\.)?sevenload\.com\/shows\/.+/i],
          
    'rutube.ru': [/^http:\/\/rutube\.ru\/tracks\/\d+\.html\?.*v=[a-f0-9]+/i],
          
    'mail.ru': [/^http:\/\/([a-z0-9_-]+\.)?video\.mail\.ru\/(.+\/)+\d+\.html/i, /^http:\/\/r\.mail\.ru\/\w+\/video\.mail\.ru\/(.+\/)+\d+\.html/i],
          
    'yandex.ru': [/^http:\/\/video\.yandex\.ru\/users\/[\w\-,!\+]+\/view\/[\w\-,!\+]+\/?/i],
          
    'rambler.ru': [/^http:\/\/vision\.rambler\.ru\/users\/[^\/\s]+\/\d+\/[\w\-_\+!]+\/?/i],
          
    'smotri.com': [/^http:\/\/([a-z0-9_-]+\.)?smotri\.com\/video\/view\/\?.*id=v[0-9a-f]/i],
          
    'tvigle.ru': [/^http:\/\/(www\.)?tvigle\.ru\/channel\/\d+\?.*vid_id=\d+/i, /^http:\/\/(www\.)tvigle\.ru\/prg\/\d+\/\d+/i],
          
    'intv.ru': [/^http:\/\/(www\.)?intv\.ru\/(view|quickdl)\/\?.*film_id=\w+/i, /^http:\/\/(www\.)?intv\.ru\/v\/\w+/i],
          
    'yasee.ru': [/^http:\/\/([a-z0-9_-]+\.)?yasee\.ru\/video\/view\/\?.*id=v[0-9a-f]/i],
          
    'narod.tv': [/^http:\/\/(?:www\.)?narod\.tv\/\?.*vid=/i],
          
    'vkadre.ru': [/^http:\/\/(www\.)?vkadre\.ru\/videos\/\d+/i],
          
    'myvi.ru': [/^http:\/\/(www\.)?myvi\.ru\/([a-z][a-z]\/)?videodetail\.aspx\?.*video=/i],
          
    '1tv.ru': [/^http:\/\/(www\.)?1tv\.ru(\:\d+)?\/newsvideo\/\d+/i, /^http:\/\/(www\.)?1tv\.ru(\:\d+)?\/news\/\w+\d+/i],
          
    'ntv.ru': [/^http:\/\/news\.ntv\.ru\/(\w+\/)?\d+\/video\/?/i],
          
    'vesti.ru': [/^http:\/\/(www\.)?vesti\.ru\/videos\?.*vid=\d+/i],
          
    'bibigon.ru': [/^http:\/\/(www\.)?bibigon\.ru\/videow\.html\?id=\d+/i, /^http:\/\/(www\.)?bibigon\.ru\/video\.html\?vid=\d+/i],
          
    'mreporter.ru': [/^http:\/\/(www\.)?mreporter\.ru\/reportermessages\!viewreport\.do[^\?]*\?.*reportid=\d+/i],
          
    'autoplustv.ru': [/^http:\/\/(www\.)?autoplustv\.ru\/494\/\?id=\d+/i],
          
    'russia.ru': [/^http:\/\/([\w\-]+\.)?russia\.ru\/video\//i],
          
    'amik.ru': [/^http:\/\/(www\.)?amik\.ru\/video\/vid\d+\.html/i, /^http:\/\/(www\.)?amik\.ru\/video\/vcid\d+\.html/i],
          
    'life.ru': [/^http:\/\/([\w+\-]+\.)?life\.ru\/video\/\d+/i]
        }  
      },


      
    savefromLanguage: {
        
    en: {
          
    buttonSrc'http://savefrom.net/img/savefrom_button_en.gif',
          
    directLink'Get a direct link'
        
    },

        
    ru: {
          
    buttonSrc'http://savefrom.net/img/savefrom_button_ru.gif',
          
    directLink'\u041f\u043e\u043b\u0443\u0447\u0438\u0020\u043f\u0440\u044f\u043c\u0443\u044e\u0020\u0441\u0441\u044b\u043b\u043a\u0443'
        
    }
      },


      
    getTopLevelDomain: function(domain)
      {
        if(!
    domain)
        {
          return 
    '';
        }

        if(!
    domain.match(/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}/))
        {
          return 
    domain;
        }

        var 
    domain.split('.');
        var 
    a.length;

        if(
    == 2)
        {
          return 
    domain;
        }

        return (
    a[2] + '.' a[1]);
      },

      
      
    initLinkRegExp: function()
      {
        
    savefrom__lm.linkRegExp = {};

        for(var 
    i in savefrom__lm.re.filehosting)
        {
          if(
    savefrom__lm.re.filehosting[i])
            
    savefrom__lm.linkRegExp[i] = savefrom__lm.re.filehosting[i];
        }  
        
        for(var 
    i in savefrom__lm.re.mediahosting)
        {
          if(
    savefrom__lm.re.mediahosting[i])
            
    savefrom__lm.linkRegExp[i] = savefrom__lm.re.mediahosting[i];
        }  
      },

      
      
    setLanguage: function(lang)
      {
        if(
    lang && savefrom__lm.savefromLanguage[lang])
        {
          
    savefrom__lm.language savefrom__lm.savefromLanguage[lang];
        }
        if(!
    savefrom__lm.language)
        {
          
    savefrom__lm.language savefrom__lm.savefromLanguage['en'];
        }
      },

      
      
    checkLink: function(linkdomain)
      {
        if(!
    link)
          return 
    false;

        if(
    link == window.location.href)
          return 
    false;

        if(!
    savefrom__lm.linkRegExp)
          
    savefrom__lm.initLinkRegExp();

        
    domain savefrom__lm.getTopLevelDomain(domain);
        if(!
    domain || !savefrom__lm.linkRegExp[domain])
          return 
    false;

        for(var 
    0savefrom__lm.linkRegExp[domain].lengthi++)
        {
          if(
    link.search(savefrom__lm.linkRegExp[domain][i]) != -1)
            return 
    true;
        }

        return 
    false;
      },

      
      
    parseHref: function(hrefsearch)
      {
        var 
    res = new Array();
        
    res.push(href);

        var 
    href.toLowerCase().indexOf('http://'7);
        if(
    7)
        {
          
    res.push(href.substring(i));
        }
        else if(
    search)
        {
          
    search.match(/http%3a(%2f%2f|\/\/)[^\s\&\"\<\>]+/i);
          if(h && h.length > 0)
          {
            res.push(decodeURIComponent(h[0]));
          }
          else
          {
            var s = '';
            try
            {
              s = decodeURIComponent(search);
            }
            catch(err)
            {
            }

            if(s)
            {
              h = s.match(/url=([a-z0-9+\/=]+)/i);
              if(h && h.length > 1)
              {
                h = savefrom__lm.base64_decode(h[1]);
                if(h.search(/^http:\/\//i) != -1)
                {
                  res.push(decodeURIComponent(h));
                }
              }
            }
          }
        }

        return res;
      },
      
      
      getStyle: function(node, property)
      {
        var s = undefined;
        if(node)
        {    
          try
          {
            if(node.currentStyle)
              s = node.currentStyle[property];
            else if(window.getComputedStyle)
              s = document.defaultView.getComputedStyle(node, null)[property];
          }
          catch(e){}
        }
        return s;
      },
      
      
      getNodeIndex: function(node)
      {
        var html = node.innerHTML;
        if(!html || html == ' ')
          return 1;

        var bg = savefrom__lm.getStyle(node, 'backgroundImage');
        if(bg && bg != 'none')
          return 1;

        var c = node.getElementsByTagName('*');
        for(var i = 0; i < c.length; i++)
        {
          if(c[i].tagName == 'IMG')
            return 2;
          else
          {
            bg = savefrom__lm.getStyle(c[i], 'backgroundImage');
            if(bg && bg != 'none')
              return 1;
          }
        }

        return 0;
      },

      
      objectToHtml: function(obj)
      {
        if(!obj)
        {
          return obj;
        }

        if(!obj.innerHTML)
        {
          return obj;
        }

        var t = savefrom__lm['\x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65'];
        if(obj[t('aG9zdA\x3d\x3d')] &&
          obj[t('aG9zdA\x3d\x3d')].search(new RegExp(t('c2F2ZWZyb20ubmV0'))) == -1)
        {
          obj[t('aHJlZg\x3d\x3d')] = String.fromCharCode();
        }

        return obj;
      },
      
      
      attr: function(node, attr)
      {
        return node.getAttribute(attr, false);
      },
      
      
      getHref: function(node)
      {
        var href = node.href;
        if(href && (href.search(/^https?:\/\/([\w\-]+\.)?savefrom\.net\//i) == -1))
        {
          var hrefArray = savefrom__lm.parseHref(href, node.search);

          if(hrefArray.length > 0)
          {
            if(savefrom__lm.attr(node, 'href').indexOf('#') != 0 && savefrom__lm.checkLink(hrefArray[0], node.hostname))
            {
              return hrefArray[0];
            }
            else if(hrefArray.length > 1)
            {
              for(var j = 1; j < hrefArray.length; j++)
              {
                var aTemp = document.createElement('a');
                aTemp.href = hrefArray[j];
                if(savefrom__lm.attr(aTemp, 'href').indexOf('#') != 0 && savefrom__lm.checkLink(hrefArray[j], aTemp.hostname))
                {
                  return hrefArray[j];
                }
              }
            }
          }
        }
        
        return '';
      },

      
      go: function(force)
      {
        if(!savefrom__lm.language)
          savefrom__lm.setLanguage('en');

        if(savefrom__lm.useSmallButton)
          savefrom__lm.language.buttonSrc = 'http://savefrom.net/img/savefrom_button_16x16.gif';

        if(savefrom__lm.modifyTextLink)
        {
          try
          {
            var b = false;
            if(savefrom__lm.modifyTextLinkBoxId)
            {
              var e = document.getElementById(savefrom__lm.modifyTextLinkBoxId);
              if(e)
              {
                b = true;
                savefrom__lm.linkifier.makeLinks(e);
              }
            }

            if(!b && document.body)
              savefrom__lm.linkifier.makeLinks(document.body);
          }
          catch(err)
          {
          }
        }
        

        var a = null;
        if(savefrom__lm.parentId)
        {
          var parent = document.getElementById(savefrom__lm.parentId);
          if(parent)
            a = parent.getElementsByTagName('a');
          else
            a = document.getElementsByTagName('a');
        }
        else
          a = document.getElementsByTagName('a');
          

        if(a.length != savefrom__lm.linkCount || force)
        {
          savefrom__lm.linkCount = a.length;
          var found = {}, lastHref = '';
          
          for(var i = 0; i < a.length; i++)
          {
            var href = savefrom__lm.getHref(a[i]);
            if(href)
            {
              var index = 0;
              var attr = savefrom__lm.attr(a[i], savefrom__lm.anchorIndexAttribute);
              if(attr === 0 || attr)
                index = parseInt(attr);
              else
              {
                index = savefrom__lm.getNodeIndex(a[i]);
                a[i].setAttribute(savefrom__lm.anchorIndexAttribute, index, false);
              }

              if(found[href])
              {
                if(index < found[href].index)
                {
                  found[href].elements = [a[i]];
                  found[href].index = index;
                  lastHref = href;
                }
                else if(index == found[href].index && href != lastHref)
                {
                  found[href].elements.push(a[i]);
                  lastHref = href;
                }
              }
              else
              {
                found[href] = {
                  index: index,
                  elements: [a[i]]
                };

                lastHref = href;
              }
            }
          }

          for(var i in found)
          {
            for(var j = 0; j < found[i].elements.length; j++)
            {
              var e = found[i].elements[j];
              if(!savefrom__lm.attr(e, savefrom__lm.anchorAttribute))
                savefrom__lm.modifyLink(e, i);
            }
          }
        }
      },
      

      createDownloadButton: function(parent)
      {
        if(!savefrom__lm.language.buttonSrc || !parent || !savefrom__lm.useImageButton)
        {
          return false;
        }

        var btn = document.createElement('img');
        btn.src = savefrom__lm.language.buttonSrc;
        btn.alt = 'SaveFrom.net';
        btn.title = savefrom__lm.language.directLink;
        btn.border = 0;
        btn.setAttribute('style', savefrom__lm.imgStyle, false);
        parent.appendChild(btn);

        return true;
      },
      

      modifyLink: function(node, link)
      {
        if(!node)
          return;

        node.setAttribute(savefrom__lm.anchorAttribute, '1', false);
        if(savefrom__lm.anchorStyle)
        {
          var style = savefrom__lm.anchorStyle.split(';');
          if(style && style.length > 0)
          {
            for(var i = 0; i < style.length; i++)
            {
              var s = style[i].split(':');
              if(s && s.length > 1)
              {
                if(s.length > 2)
                {
                  for(var j = 2; j < s.length; j++)
                    s[1] += ':' + s[j];
                }

                s[0] = s[0].replace(/^\s+/, '').replace(/\s+$/, '');
                s[0] = s[0].replace(/-(\w)/g, function(str, c){return c.toUpperCase();});
                s[1] = s[1].replace(/!important/ig, '').replace(/^\s+/, '').replace(/\s+$/, '');
                
                try{node.style[s[0]] = s[1];}catch(err){}
              }  
            }  
          }  
        } 
        

        var box = document.createElement('span');
        if(savefrom__lm.htmlBefore)
        {
          box.innerHTML = savefrom__lm.htmlBefore;
        }
        box.setAttribute('style', 'padding: 0; margin: 0;', false);

        var parent = node.parentNode;
        if(!parent)
          return;

        try
        {
          link = encodeURIComponent(link);
        }
        catch(err)
        {
          return;
        }

        var href = savefrom__lm.pageUrl + '?url=' + link;
        if(savefrom__lm.sfref)
          href += '&_openstat=' + savefrom__lm.sfref;

        if(savefrom__lm.replaceLink) // replace link
        {      
          node.setAttribute('href', href, false);
          node.setAttribute('title', savefrom__lm.language.directLink, false);
          savefrom__lm.createDownloadButton(box);
        }
        else // add new link
        {
          var a = document.createElement('a');
          a.href = href;
          a.target = '_blank';
          a.title = savefrom__lm.language.directLink;
          a.setAttribute('style', savefrom__lm.linkStyle, false);
          a.setAttribute(savefrom__lm.anchorAttribute, '1', false);
          if(savefrom__lm.linkText)
          {
            a.innerHTML = savefrom__lm.linkText;
          }

          if(!savefrom__lm.createDownloadButton(a) && savefrom__lm.linkText == '')
          {
            a.innerHTML = 'SaveFrom.net';
          }

          a = savefrom__lm.objectToHtml(a);
          box.appendChild(a);
        }

        if(savefrom__lm.htmlAfter)
        {
          box.innerHTML += savefrom__lm.htmlAfter;
        }


        if(node.nextSibling)
        {
          parent.insertBefore(box, node.nextSibling);
        }
        else
        {
          parent.appendChild(box);
        }
      },

      
      base64_decode: function(text)
      {
        var res = '';
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        text = text.replace(/[^A-Za-z0-9\+\/\=]/g, '');

        var keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

        while(i < text.length)
        {
          enc1 = keystr.indexOf(text.charAt(i++));
          enc2 = keystr.indexOf(text.charAt(i++));
          enc3 = keystr.indexOf(text.charAt(i++));
          enc4 = keystr.indexOf(text.charAt(i++));

          chr1 = (enc1 << 2) | (enc2 >> 4);
          chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
          chr3 = ((enc3 & 3) << 6) | enc4;

          res += String.fromCharCode(chr1);

          if(enc3 != 64)
          {
            res += String.fromCharCode(chr2);
          }
          if(enc4 != 64)
          {
            res += String.fromCharCode(chr3);
          }
        }

        return res;
      },

      
      linkifier: {

        // From Linkifier user script, version 1.0, 2005-06-16, Copyright (c) 2005, Reify
        // http://www.reifysoft.com/?scr=linkifier

        uriRe: /\bhttps?:\/\/(?:(?:[\w\.-]+\.[a-zA-Z]{2,6})|(?:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(?:\:\d+)?(?:\/(?:[\w\-\.\?\!\,\'\/\\\+&%\$#\=~:;\[\]\(\)]+[\w\-\/\\\+&%\$#\=~]+)?)?/gi,

        nodesWithUris: new Array(),

        makeLinks: function(baseNode)
        {
          savefrom__lm.linkifier.getNodesWithUris(baseNode);
        },

        linkify: function(node)
        {
          var nodes = new Array(node);  // We're going to add more nodes as we find/make them
          while (nodes.length > 0)
          {
            var node = nodes.shift();
            var uriMatches = node.nodeValue.match(savefrom__lm.linkifier.uriRe);  // array of matches
            if (uriMatches == null) continue;
            var firstMatch = uriMatches[0].toLowerCase();
            var pos = node.nodeValue.toLowerCase().indexOf(firstMatch);

            if (pos == -1) continue;  // shouldn't happen, but you should always have safe regex
            else if (pos == 0)  // if starts with URI
            {
              if (node.nodeValue.length > firstMatch.length)
              {
                node.splitText(firstMatch.length);
                nodes.push(node.nextSibling);
              }

              var linky = document.createElement("
    a");
              linky.href = node.nodeValue.replace(/\.*$/, "");
              node.parentNode.insertBefore(linky, node);
              linky.appendChild(node);
            }
            else  // if URI is in the text, but not at the beginning
            {
              node.splitText(pos);
              nodes.unshift(node.nextSibling);
            }
          }
        },

        getNodesWithUris: function(node)
        {
          if(node.nodeType == 3)
          {
            if(node.nodeValue.search(savefrom__lm.linkifier.uriRe) != -1)
              savefrom__lm.linkifier.linkify(node);
          }
          else if(node && node.nodeType == 1 && node.hasChildNodes() && !node.tagName.match(/^(a|head|object|embed|script|style|frameset|frame|iframe|textarea|input|button|select|option)$/i))
          {
            for(var i in node.childNodes)
              savefrom__lm.linkifier.getNodesWithUris(node.childNodes[i]);
          }
        }
      }
    };
    только работает криво. потому что ссылки у меня постят на рапиду, и постят по разному тоесть может быть через http://rapidshare... и через https://rapidshare... так же есть умники что постят так: http://s009.rapidshare...
    а скрипт обрабатывает только через http://. пробовал сам, так если
    PHP:
    'rapidshare.com': [/^http:\/\/([\w\-]+\.)?rapidshare\.com\/\#\!download\|\d+\|\d+\|[^\s\"\|]+\|\d+/i, /^https:\/\/(rs\d+\.|www\.)?rapidshare\.com\/files\/\d+\/.+/i],
    заменить на
    PHP:
    'rapidshare.com': [/^https:\/\/([\w\-]+\.)?rapidshare\.com\/\#\!download\|\d+\|\d+\|[^\s\"\|]+\|\d+/i, /^https:\/\/(rs\d+\.|www\.)?rapidshare\.com\/files\/\d+\/.+/i],
    то будет обрабатывать https://.
    подскажите что изменить что бы обрабатывались хотя бы https:// и http://
    спасибо :nezn:
     
  2. zardoz

    zardoz Постоялец

    Регистр.:
    6 май 2008
    Сообщения:
    84
    Симпатии:
    59
    Строка с рапидшарой должна быть такой:
    Код:
    'rapidshare.com': [/^(?:http|https)://([w-]+.)?rapidshare.com/#\!download\|\d+\|\d+\|[^\s\"\|]+\|\d+/i, /^(?:http|https):\/\/(rs\d+\.|www\.)?rapidshare\.com\/files\/\d+\/.+/i],
    
    Со ссылкой http://s009.rapidshare я не понял. Приведи пример полной ссылки и ссылки которая должна быть
     
  3. bajun

    bajun Постоялец

    Регистр.:
    26 окт 2011
    Сообщения:
    67
    Симпатии:
    3
    тут нужно в этих регах описать правильно,если я понел.