Ebay Include Shipping

Show the true total including shipping on Ebay

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name		Ebay Include Shipping
// @namespace	ebay_include_shipping
// @description	Show the true total including shipping on Ebay
// @homepageURL	https://github.com/daraeman/ebay_include_shipping
// @author		daraeman
// @version		1.0.4
// @date		2018-07-20
// @include		/https?:\/\/www\.ebay\.com\/*/
// @require		https://code.jquery.com/jquery-3.2.1.slim.min.js
// @require		https://cdnjs.cloudflare.com/ajax/libs/big.js/5.0.3/big.min.js
// ==/UserScript==

(function( $, Big ) {

	const debug = true;
	const debug_error = true;
	let page;

	log( "Ebay Include Shipping" );

	function getPage() {
		log( "getPage" );
		if ( $( "body.s-page" ).length )
			page = "search";
	}

	function doPage() {
		log( "doPage" );
		if ( page === "search" )
			doSearchPage();
	}

	function doSearchPage() {
		log( "doSearchPage" );

		$( ".srp-results .s-item" ).each( ( i, node ) => {
			let el = $( node );
			log( "el", el );
			let item_text = getItemPriceEl( el ).text().trim();
			log( "item_text", item_text );
			let currency = item_text[0];
			log( "currency", currency );
			let price_string = item_text.substr( 1 );
			log( "price_string", price_string );
			if ( / to /.test( price_string ) ) {
				log( "multiple prices detected [%s], skipping", price_string );
				return;
			}
			let item_price;
			try {
				item_price = new Big( price_string );
				log( "item_price", item_price );
			} catch ( error ) {
				error( "error while parsing number [%s]", item_price );
				return;
			}
			let shipping_string = getShippingPriceEl( el ).text();
			log( "shipping_string", shipping_string );
			let shipping_text = ( /shipping/.test( shipping_string ) ) ? shipping_string.trim().substr( 2 ).replace( /shipping/, "" ).trim() : "";	
			log( "shipping_text", shipping_text );	
			if ( shipping_text ) {
				let shipping_price = new Big( shipping_text );
				addSearchItemShippingPrice( el, item_price.plus( shipping_price ), currency );
			}
		});
	}

	function getItemPriceEl( parent, post_add ) {
		log( "doSearchPage", parent, post_add );
		let selector = ( post_add ) ? ".s-item__price:not( .ebay_include_shipping )" : ".s-item__price";
		return parent.find( selector );
	}

	function getShippingPriceEl( parent ) {
		log( "doSearchPage", parent );
		return parent.find( ".s-item__shipping" );
	}

	function getShippingPriceParentEl( el ) {
		log( "getShippingPriceParentEl", el );
		return el.parent();
	}

	function addSearchItemShippingPrice( el, price, currency ) {
		log( "addSearchItemShippingPrice", el, price, currency );
		let price_parent_el = getShippingPriceParentEl( el );
		log( "price_parent_el", price_parent_el );
		let item_price_el = getItemPriceEl( el, true );
		log( "item_price_el", item_price_el );
		let item_price = item_price_el.text();
		log( "item_price", item_price );
		item_price_el.html( '<span class="ebay_include_shipping">'+ currency + price.toFixed( 2 ).toString() +' incl. shipping</span><br>' );
		item_price_el.find( "span" ).css( {
			"font-size": "20px",
		});
		let shipping_price_el = getShippingPriceEl( el );
		log( "shipping_price_el", shipping_price_el );
		item_price_el.append( '<span class="ebay_include_shipping">(' + item_price.trim() + shipping_price_el.text().trim().replace( "+", " + " ) +")</span>" );
		item_price_el.find( "span" ).last().css({
			"display": "inline-block",
			"margin-top": "4px",
			"font-size": "13px",
			"font-weight": 400,
		});
		shipping_price_el.hide();
	}

	function log() {
		if ( debug )
			console.log( ...arguments );
	}

	function error() {
		if ( debug_error )
			console.error( ...arguments );
	}

	function init() {
		log( "init" );
		getPage();
		doPage();
	}

	init();

})( jQuery, Big );