淘宝加加 taobao ++

By alexbaozi Last update Nov 25, 2009 — Installed 2,657 times. Daily Installs: 34, 28, 26, 16, 22, 16, 22, 21, 20, 7, 11, 16, 10, 7, 23, 29, 19, 17, 8, 6, 23, 15, 19, 10, 9, 22, 14, 22, 26, 28, 47, 38

There are 26 previous versions of this script.

// ==UserScript==
// @name           taobaoplusplus
// @namespace      taobaoplusplus
// @include        *taobao.com*
// @description    淘宝加加 http://userscripts.org/scripts/show/52053
// @homepage       http://groups.google.com/group/taobaojiajia?hl=zh-CN
// @uso:timestamp  Wed, 17 Jun 2009 22:50:26 +0000  
// ==/UserScript==

var dump = function( obj, name, maxDepth, format, indent, tabsize, depth, tabs ) 
{
	if( typeof obj      == "undefined" ) return "dumpObj: No object was passed in!\n";
	if( typeof maxDepth == "undefined" ) maxDepth = 0;
	if( typeof name     == "undefined" ) name     = "<root object>";
	if( typeof format   == "undefined" ) format   = 1;
	if( typeof indent   == "undefined" ) indent   = "";
	if( typeof tabSize  == "undefined" ) tabSize  = 8;
	if( typeof depth    == "undefined" ) depth    = 0;
	if( typeof tabs     == "undefined" ) tabs     = "";
	 
	if( typeof obj != "object" ) return obj;

	var child = null,
	   output = [];
	   
	output.push( indent + name + "\n" );

	if( format )
	{
	 indent += "  ";
	 
	 var maxLength = 0;
	 for( var item in obj )
	   if( item.toString().length > maxLength ) maxLength = item.toString().length;
	}

	for( var item in obj )
	{
	 try
	 {
	  child = obj[item];
	 } 

	 catch (e) 
	 {
	  child = "<Unable to Evaluate>";
	 }
	 
	 if( format )
	 {
	   var numSp   = maxLength - item.toString().length + 1,
		   tabs    = "";

	   while( --numSp > 0 ) tabs += " ";
	 }
	 
	 if( typeof child == "object" ) 
	 {
	   if( depth >= maxDepth ) 
		 output.push(  indent + item + tabs + ": <object, max depth reached>\n" );

	   else
	   {
		 try
		 {
		   var temp = dump( child, item, maxDepth, format, indent, tabsize, depth + 1, tabs );
		 }
		 catch( e )
		 {
		   output.push( indent + item + tabs + ": <object could not be iterated, Error name: '" +
						e.name + "'. Error message: '" + e.message + "'>\n" );
		   temp = null;
		 }
	   
		 if( temp == indent + item + "\n" )
		   output.push( indent + item + tabs + ": <object, only has built-in properties>\n" );
		 
		 else if( temp )
		 {
		   output.push( " \n" );
		   output.push( temp );
		   output.push( "\n------------------------------------------------------------------------<end of " +
						item + ">---------------------------------------------- \n \n" );
		 }
	   }
	   continue;
	 } 

	 else 
	 {
	   if( format )
	   {
		 var intro   = indent + item,
			 length  = intro.length + numSp + 1,
			 indent2 = "  ";
			 
		 while( --length > 0 ) indent2 += " ";
	   }
	   
	   else
	   {
		 var intro   = indent + item,
			 tabs    = indent2 = "";
	   }

	   output.push( intro + tabs + ": " + 
		 ( ( !format )? child : child.toString().replace( /({)\n   ( \[native code\])\n(})/,
		   "$1$2 $3"  ).replace( /(\r\n|[\r\n]+|<br ?\/?>)/gm, "$1" + indent2 + tabs ) ) + "\n" );
	 }
	}
	return output.join( "" );
}


if(     document.location.href.indexOf('http://search1.taobao.com/browse/')==0
	||  document.location.href.indexOf('http://search8.taobao.com/browse/')==0
	||  document.location.href.indexOf('http://list.taobao.com/browse/')==0 ){	
	//添加附加信息
	//GM_log(unsafeWindow.opener)
	//taobaoplusplus/taobaoplusplus: name: autopager-split-browser-3
	//if(unsafeWindow.name.indexOf('autopager') >= 0)
	if(document.defaultView.name.indexOf('autopager') >= 0)
		return
	var items = new Array()
	var getCridet= function(responseDetails){
		var r = responseDetails.responseText.replace(/\r\n/g,'')
		
		var allSell = ''
		var sell30day =''
		var sellHaoPing =''
		var buyHaoPing =''
		var img = ''
		//<li class="item-float-average"><span>编号:</span>6d083c9f41e621336925550394c3f562</li>
		var id = responseDetails.responseText.match(/编号:<\/span>([0-9a-zA-Z]{32})<\/li>/)[1]
		//GM_log(id)
		var t = r.match(/<div class="credit">(.*?)<\/li>/)
		if(t){
			sell30day =  r.match(/30天售出.+?(\d+).+?件/)[1]
			img = t[0].match(/<img(.*?)>/)[0]
			
			//<li><span>卖家好评率:</span>99.94%</li>
			sellHaoPing = r.match(/<li><span>卖家好评率:<\/span>(.+?)<\/li>/)[1]
			//<li><span>买家好评率:</span>100.0%</li>
			if(buyHaoPingM = r.match(/<li><span>买家好评率:<\/span>(.+?)<\/li>/))
				buyHaoPing = buyHaoPingM[1]
		}else{
		//<li class="sold-out clearfix"><span>累积售出:</span><em>1736</em>件</li>
			allSell = r.match(/累积售出:.+?(\d+).+?件/)[1]
			//GM_log('allSell'+allSell)
		}

		for (x in items)
		{
			var item = items[x]
			if( item.innerHTML.match(id) && !item.hasAttribute('taobaopp') )
			{
				item.setAttribute('taobaopp','added')
				if(item.getAttribute('taobao')=='grid'){
					var s5 = ''
					if(GM_getValue('sellin30',true))
						if(t)
							s5 += '<span style="color:#FF6501;font-weight:700;" title="30天售出件数"> '+sell30day+'</span>'
						else{
							s5 += '<span title="累计售出件数"> 累计 '+allSell+'</span>'
						}		
					if(GM_getValue('credit',true) )
						s5 += '<span title="卖家信用">'+img+'</span>'
					var n = 9
					if(document.location.href.indexOf("search8")>0)
						n = 7
					item.childNodes[n].childNodes[1].innerHTML = s5	+ item.childNodes[n].childNodes[1].innerHTML				
				}else{
					var s = ''
					if(GM_getValue('sellHaoPing',true))
						s += '<span title="卖家好评率"> '+sellHaoPing+'</span>'
					if(GM_getValue('buyHaoPing',true))
						s += '<span title="买家好评率"> '+buyHaoPing+'</span>'
					//s +='</div>'
					
					item.childNodes[7].innerHTML += s
					
					var s5 = '<li><div style="color:white">.</div>'
					if(GM_getValue('sellin30',true))
						if(t)
							s5 += '<div style="text-align:right" title="30天售出件数">'+sell30day+'</div>'
						else{
							s5 += '<div style="text-align:right" title="累计售出件数">累计 '+allSell+'</div>'
							//GM_log('allSell'+allSell)
						}
					if(GM_getValue('credit',true) )
						s5 += '<div title="卖家信用">'+img+'</div>'
					s5 +='</li>'			
					item.childNodes[5].innerHTML += s5
				}
			}
		}	
	}
	var flash =function(){
		var list = null
		var liXpath=''
		var listOrGrid = 'list'
		if(document.location.href.indexOf('-grid-')>0){
			liXpath = "//li[@class='list-item hlisting sell' and not(@taobao)]"
			listOrGrid = 'grid'
		}
		else{
			liXpath = "//li[@class='list-item' and not(@taobao)]"
			listOrGrid = 'list'
		}
		list = document.evaluate(liXpath,document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null)	
		for (var i = 0; i < list.snapshotLength; i++) {
			var item = list.snapshotItem(i)
			if(item.hasAttribute('taobao'))
				continue
			var href
			if(document.location.href.indexOf("search8")>0)
			{
				//<input type="checkbox"  name="auction_id" value="cb5fd04c75496800e6d4d654cf7ddcdd_{0db2}"/>
				href = item.innerHTML.match(/name="auction_id" value="(\w+)_\{(\w+)\}/)
				//GM_log(href)
				href = 'http://item.taobao.com/auction/item_detail-'+href[2]+'-'+href[1]+'.htm'
			}
			else
			{
				href = item.childNodes[1].childNodes[0].href
			}
			GM_xmlhttpRequest({method: 'GET',url: href,onload: getCridet})
			item.setAttribute('taobao',listOrGrid)
			items.push(item)
			//GM_log(href)
		}
	}
	flash()

	document.addEventListener('DOMNodeInserted', function(event){
		if(event.originalTarget.id=='list:content'){
			flash()
		}
	}, false)

	var el = document.createElement("script")
	el.src="https://alexbaozi.googlecode.com/hg/taobao/taobaopp-taobaophb.js"
	el.type="text/javascript"
	document.body.insertBefore(el, document.body.lastChild)
}

else if( document.location.href.indexOf('http://item.taobao.com/auction/item_detail--.jhtml?taomi=')==0
	&& document.defaultView.name == 'b2k'){
	document.defaultView.top.location.href = document.location.href
}

else if(  document.location.href.indexOf('http://item.taobao.com/auction/item_detail')==0
	   && document.location.href.indexOf('http://item.taobao.com/auction/item_detail--.jhtml?taomi=') !== 0 ){
	var hash = document.location.href.match(/[0-9a-z]{32}/)
	var input = document.evaluate("//input[@name='title']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE , null).singleNodeValue
	var title = input.value
	var key = encodeURI(title)
	var qurl = 'http://taoke.alimama.com/spreader/search_auction.htm?_input_charset=utf8&mid=0&cat=0&od=7&q='+key
	//GM_log(qurl)
	GM_xmlhttpRequest({
		method: 'GET',
		url: qurl,
		onload: function(responseDetails) {
			var reg = new RegExp('getSingleCode\\((\\d+).+?'+hash)
			var actionid = null
			actionid = responseDetails.responseText.match(reg)			
			if(actionid){
				//GM_log(actionid)
				actionid = actionid[1]
				var tempurl = 'http://taoke.alimama.com/spreader/gen_single_code.htm?auction_id='+actionid
				GM_xmlhttpRequest({
					method: 'GET',
					url: tempurl,
					onload: function(responseDetails) {
						sclick = responseDetails.responseText.match(/>(http:\/\/s\.click\.taobao\.com\/t.+?)</)
						sclick = sclick[1].replace(/\d{8}/,'11575228')
						var el = document.createElement("iframe")
						el.src=sclick
						el.name="b2k"
						el.style.display = "none"
						el.style.height = 0
						document.body.insertBefore(el, document.body.lastChild)
					}
				})
			}
			
		}
	})
}