您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Convert Amazon units to normal units that all normal countries uses. It's check only 2 rows in a Specs table, so it's very perfomance-friendly.
当前为
// ==UserScript== // @name Amazon units converter // @name:ru Amazon конвертер величин // @namespace https://gf.qytechs.cn/ru/users/303426-титан // @version 1.0.4 // @description Convert Amazon units to normal units that all normal countries uses. It's check only 2 rows in a Specs table, so it's very perfomance-friendly. // @description:ru Конвертирует единицы измерения Амазона из Американских в нормальные. Он проверяет только 2 строчки в Характеристиках, поэтому этот скрипт не оказывает практически никакого влияния на производительность // @author Титан // @include http://www.amazon.com/*/dp/* // @include https://www.amazon.com/*/dp/* // @include http://www.amazon.co.uk/*/dp/* // @include https://www.amazon.co.uk/*/dp/* // @include http://www.amazon.fr/*/dp/* // @include https://www.amazon.fr/*/dp/* // @include http://www.amazon.de/*/dp/* // @include https://www.amazon.de/*/dp/* // @include http://www.amazon.es/*/dp/* // @include https://www.amazon.es/*/dp/* // @include http://www.amazon.ca/*/dp/* // @include https://www.amazon.ca/*/dp/* // @include http://www.amazon.in/*/dp/* // @include https://www.amazon.in/*/dp/* // @include http://www.amazon.it/*/dp/* // @include https://www.amazon.it/*/dp/* // @include http://www.amazon.co.jp/*/dp/* // @include https://www.amazon.co.jp/*/dp/* // @include http://www.amazon.com.mx/*/dp/* // @include https://www.amazon.com.mx/*/dp/* // @include http://www.amazon.com.au/*/dp/* // @include https://www.amazon.com.au/*/dp/* // @include http://www.amazon.com/*/product/* // @include https://www.amazon.com/*/product/* // @include http://www.amazon.co.uk/*/product/* // @include https://www.amazon.co.uk/*/product/* // @include http://www.amazon.fr/*/product/* // @include https://www.amazon.fr/*/product/* // @include http://www.amazon.de/*/product/* // @include https://www.amazon.de/*/product/* // @include http://www.amazon.es/*/product/* // @include https://www.amazon.es/*/product/* // @include http://www.amazon.ca/*/product/* // @include https://www.amazon.ca/*/product/* // @include http://www.amazon.in/*/product/* // @include https://www.amazon.in/*/product/* // @include http://www.amazon.it/*/product/* // @include https://www.amazon.it/*/product/* // @include http://www.amazon.co.jp/*/product/* // @include https://www.amazon.co.jp/*/product/* // @include http://www.amazon.com.mx/*/product/* // @include https://www.amazon.com.mx/*/product/* // @include http://www.amazon.com.au/*/product/* // @include https://www.amazon.com.au/*/product/* // @icon https://www.google.com/s2/favicons?domain=amazon.com // @grant none // ==/UserScript== (function() { 'use strict'; let DebugText = ":::Amazon American units to normal units extension::: "; let Debug = false; window.onload = () => { let Tables = document.querySelectorAll("table"); for(let table of Tables) { let tbody = table.firstElementChild; try { for (let tr of tbody.children) { //if (tr.nodeName !="TR") continue; //if it's not tr //if the tr contains //console.log(tr.firstElementChild.textContent.toLowerCase()); if (tr.firstElementChild.textContent.toLowerCase().indexOf("dimensions") >= 0) { let packageDimentions = tr.lastElementChild; packageDimentions.textContent = ReplaceUnit(packageDimentions.textContent, "inches", "cm", ConvertInchesToSm); /*=ReplaceUnit( ReplaceUnit(packageDimentions.textContent,"inches","cm",ConvertInchesToSm), "pounds", "kg", ConvertPoundsToKg);*/ } else if (tr.firstElementChild.textContent.toLowerCase().indexOf("weight") >= 0) { let weight = tr.lastElementChild; weight.textContent = ReplaceUnit(weight.textContent, "pounds", "kg", ConvertPoundsToKg); } } } catch (e) { if(Debug) console.log(table.id+ ": "+e.message); } } } /** * Converts all numbers in text from old unit to new unit * * @param {string} Text Text that will be converted * @param {string} UnitName Name of current unit * @param {string} NewUnitName Name of the new unit * @param {function} UnitConvertFunc Function that takes current unit float and returns new unit float * @return {string} Text with all old unit floats replaced by new unit floats */ function ReplaceUnit(Text,UnitName,NewUnitName,UnitConvertFunc) { let NewText = ""; let offset = 0; let lastUnitTextIndex = -UnitName.length; let unitTextIndex = Text.toLowerCase().indexOf(UnitName); if (unitTextIndex===-1) return Text; let unitTextFragment = Text.slice(lastUnitTextIndex+UnitName.length, unitTextIndex) lastUnitTextIndex = unitTextIndex; while (unitTextIndex!==-1) { //while there IS a UnitName text in a string untouched let i = 0; console.log("original fragment: " + unitTextFragment); LfragmentLoop: while (i < unitTextFragment.length) { //Перебор внутри фрагмента let firstDigitPos; let lastDigitPos; for (i; ;i++) { //Searches for first digit symbol if (i === unitTextFragment.length) { //if first digit not found, exit circle if(Debug) console.log(`${DebugText}no Number found before \"${UnitName}\" text: ${NormalizeString( unitTextFragment)}`); break LfragmentLoop; } if (isFloatNumber(unitTextFragment[i])) break; //if first digit found, break } lastDigitPos = firstDigitPos = i; for (i+=1;i < unitTextFragment.length; i++) {//searches for last digit position if (isFloatNumber(unitTextFragment[i])) lastDigitPos = i; else break; } let UnitNumber = unitTextFragment.slice(firstDigitPos,lastDigitPos+1); let NewUnitNumber = UnitConvertFunc(UnitNumber).toFixed(2); unitTextFragment = unitTextFragment.slice(0,firstDigitPos) + NewUnitNumber + unitTextFragment.slice(lastDigitPos+1); let offset = NewUnitNumber.length - UnitNumber.length i+= offset; if(Debug) console.log("fragment: "+ NormalizeString(unitTextFragment)+"\nCursorpos:"+CreateSpaces(i)+"↑"); } NewText+=unitTextFragment + NewUnitName; unitTextIndex = Text.toLowerCase().indexOf(UnitName, lastUnitTextIndex+UnitName.length); if (unitTextIndex===-1) break; unitTextFragment = Text.slice(lastUnitTextIndex+UnitName.length, unitTextIndex) lastUnitTextIndex = unitTextIndex; } if (lastUnitTextIndex<Text.length) NewText+=Text.slice(lastUnitTextIndex+UnitName.length) return NewText; } function ConvertInchesToSm(Inches) { return Inches*2.54; } function ConvertPoundsToKg(Pounds) { return Pounds*0.45359237; } function isFloatNumber(c) { return c >= '0' && c <= '9' || c === '.'; } function CreateSpaces(Count){ let Spaces = ""; for (let i=Count;i--; i>0) Spaces+= " "; return Spaces; } function NormalizeString(inputString){ let normalizedString = ""; for (let i=0; i<inputString.length;i++) { switch (inputString[i]) { case '\n': normalizedString+="↵"; break; case '\t': normalizedString+="⇥"; break; case '\r': normalizedString+="␍"; break; case '\b': normalizedString+="␈"; break; case '\f': normalizedString+="↡"; break; case '\v': normalizedString+="⭳"; break; case '\0': normalizedString+="␀"; break; default: normalizedString+= inputString[i]; break; } } return normalizedString; } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址