PipesFullFeed - Insert feed url to Wedata item entry

By koyachi Last update Jun 18, 2008 — Installed 25 times.
// ==UserScript==
// @name           PipesFullFeed - Insert feed url to Wedata item entry
// @namespace      http://d.hatena.ne.jp/koyachi/
// @description    
// @include        http://wedata.net/databases/PipesFullFeed/items*
// ==/UserScript==
//
// 2008-06-18 t.koyachi
//


(function(){
  var icon = E('img', {
    src: "http://pipes.yahoo.com/favicon.ico",
    style: "border-width: 0px"
  });
  $x('//div[@class="entry-content"]').forEach(function(item) {
    var html = item.innerHTML;
    var feedUrl = html.match(/<th>feed_url<\/th>\n\s*?<td>(.*?)<\/td>/)[1];
    var tagFrom = html.match(/<th>tag_from<\/th>\n\s*?<td>(.*?)<\/td>/)[1];
    var tagTo = html.match(/<th>tag_to<\/th>\n\s*?<td>(.*?)<\/td>/)[1];
    var url = ["http://pipes.yahoo.com/pipes/pipe.run?_id=Zt_T2W_03BGAC5oAA8qenA&_render=rss&feed=",
               encodeURIComponent(feedUrl),
               '&from=' + encodeURIComponent(tagFrom),
               '&to=' + encodeURIComponent(tagTo)
               ].join('');
    var elmTr = E('tr');
    var elmTh = E('th', "PipesFullFeedURL");
    var elmTd = E('td', E('a', {href: url}, icon, url));
    elmTr.appendChild(elmTh);
    elmTr.appendChild(elmTd);
    item.appendChild(elmTr);
  });


  // util
  function E() {
    var tag = Array.prototype.shift.call(arguments);
    var elm = document.createElement(tag);
    
    var text = [];
    Array.prototype.forEach.call(arguments, function(value) {
      if (!value) return;
        
      if (value && value.nodeType) {
        elm.appendChild(value);
        return;
      }
      
      switch (typeof(value)) {
      case 'string':
      case 'number':
        elm.appendChild(document.createTextNode(value))
        break;
        
      default:
        for (var key in value) {
          var attr = value[key];
          switch (key) {
          case 'class': elm.className = attr;
          case 'style': elm.style.cssText = attr;
          default:      elm.setAttribute(key, attr);
          }
        };
        break;
      }
    });
    return elm;
  }

  function $x(exp, context) {
    if (!context) context = document;
    var resolver = function (prefix) {
      var o = document.createNSResolver(context)(prefix);
      return o ? o
               : (document.contentType == "text/html")
                 ? ""
                 : "http://www.w3.org/1999/xhtml";
    }
    var exp = document.createExpression(exp, resolver);
    
    var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
    switch (result.resultType) {
    case XPathResult.STRING_TYPE : return result.stringValue;
    case XPathResult.NUMBER_TYPE : return result.numberValue;
    case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
    case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
      result = exp.evaluate(context,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
      var ret = [];
      for (var i = 0, len = result.snapshotLength; i < len ; i++) {
        ret.push(result.snapshotItem(i));
      }
      return ret;
      }
    }
    return null;
  }
})();