Перевод из $ долларов в RUR рубли

Оффлайн xneo

  • Новичок
  • Сообщений: 13
    • Просмотр профиля
#15 22-11-2010, 11:37
0
Есть вот такой скрипт на PHP:
(кликните для показа/скрытия)
Он выдирает значение курса доллара в переменную $kurs.  :)
Как можно адаптировать это для скрипта о котором речь в данной теме?

upd: дописал обработку еще одного тэга ;)
« Последнее редактирование: 22-11-2010, 12:00 от xneo »

Оффлайн xneo

  • Новичок
  • Сообщений: 13
    • Просмотр профиля
#16 22-11-2010, 15:50
0
А если не на php а на JS то же самое реализовать?

Lex1

  • Гость
#17 22-11-2010, 19:32
0
javascript:window._alert=function(o){var obj = o.content.ValCurs.Valute; for(var i in obj)if(obj[i].CharCode == 'USD')alert(obj[i].Value)};document.documentElement.appendChild(document.createElement('script')).src='http://esrijson.appspot.com/xml2json?url=http%3A%2F%2Fwww.cbr.ru%2Fscripts%2FXML_daily.asp&callback=_alert&headers=false&f=pjson';void(0)

Dither

  • Гость
#18 23-11-2010, 00:25
0
Мм.. значит скрипты можно кросс-доменно. Тогда:
// ==UserScript==
// @name dealextreme price replacer
// @version 1.2
// @include http://dealextreme.com/*
// @include http://www.dealextreme.com/*
// ==/UserScript==

document.addEventListener('DOMContentLoaded',function(){
var priceUSD;
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';

onSuccess = function() {
window._alert = function(elem){
var obj = elem.content.ValCurs.Valute;
for (var i in obj) if (obj[i].CharCode == 'USD') priceUSD = Number(obj[i].Value.replace(',','.'));
}
if (priceUSD != null && !isNaN(priceUSD)) {
var prices=document.selectNodes('//*[(self::span or self::b or self::strong) and starts-with(normalize-space(text()),"$")]');
for (var i=0; i<prices.length; i++)
prices[i].innerHTML = prices[i].innerHTML.replace(/^\s*\$(\d+\.\d+)(.*)$/m, function(a,b,c){
var priceRUR = (b*priceUSD).toFixed(2).toString().split(".");
return priceRUR[0]+' \u0440\u0443\u0431. '+priceRUR[1]+' \u043a\u043e\u043f.($'+b+')'+c;
});
}
}

script.onreadystatechange = function () {
if (this.readyState === "loaded") onSuccess();
}
script.onload= onSuccess();
script.src= 'http://esrijson.appspot.com/xml2json?url=http%3A%2F%2Fwww.cbr.ru%2Fscripts%2FXML_daily.asp&callback=_alert&headers=false&f=pjson';
head.appendChild(script);
},false);

Оффлайн xneo

  • Новичок
  • Сообщений: 13
    • Просмотр профиля
#19 23-11-2010, 08:38
0
Снова задам вопрос вопрос: если цена оформлена так (http://www.buyincoins.com/):
<li class="proPri">$ <span class="cred fb">6.74</span></li>и вот так если (http://www.focalprice.com/):
<p class="price">Price: $6.77~$6.98</p>в исходнике, как выдирать эти элементы и обрабатывать их?
« Последнее редактирование: 23-11-2010, 08:40 от xneo »

Alex Qwerty

  • Гость
#20 23-11-2010, 12:07
0
javascript:alert(document.selectNodes('//li[@class="proPri"]/span[@class="cred fb"]')[0].innerHTML)

Dither

  • Гость
#21 23-11-2010, 12:57
0
Ага, xpath'ом главный контейнер с ценой и далее регэкспами их регэкспами... ^_^

Оффлайн xneo

  • Новичок
  • Сообщений: 13
    • Просмотр профиля
#22 23-11-2010, 13:51
0
Вот так находит на http://www.focalprice.com/ цену в виде числа с двумя знаками после точки: var prices2=document.selectNodes('//*[self::span[@class="cred fb"]]');Но как теперь сделать так что бы вместо этого он выводил цена*priceUSD руб. / $ цена/  ???
(кликните для показа/скрытия)

Alex Qwerty

  • Гость
#23 23-11-2010, 15:22
0
Что-нить типа prices2[i].parentNode.innerHTML=(prices2[i].innerHTML*dollar).toFixed(2)+' руб. '+prices2[i].parentNode.innerHTML;
« Последнее редактирование: 23-11-2010, 15:23 от Alex Qwerty »

Оффлайн xneo

  • Новичок
  • Сообщений: 13
    • Просмотр профиля
#24 23-11-2010, 17:24
0
Отлично! Работает С dealextreme и с Focalprice! 8) :D *THANKS*
Теперь осталось только докрутить к Buyincoins!
Там для меня самое сложное - цена там оформляется вот так: <p class="price">Price: $6.77~$6.98</p>Совсем не обязательно переводить всё, по сути нужна только вторая цена, которая после ~

Вот таким макаром var prices3=document.selectNodes('//*[(self::p[@class="price"])]'); получается выдрать из тега текст Price: $6.77~$6.98.
Как его теперь обработать? Может быть при обработке можно сразу обе цены конвертнуть?  :-\

Alex Qwerty

  • Гость
#25 23-11-2010, 17:30
0
Дык регуляркой: /Price: \$(\d+\.\d+)~\$(\d+\.\d+)/

Оффлайн vityah

  • Новичок
  • Сообщений: 42
    • Просмотр профиля
#26 23-11-2010, 18:34
0
Короче... есть готовый скрипт? :) Я б себе на гривны переделал. Там делов то думаю на часик кто уже пилил скрипты для Оперы.

Dither

  • Гость
#27 23-11-2010, 22:22
0
Ленивые вы... ;D :-\
// ==UserScript==
// @name dealextreme price replacer
// @namespace http://operafan.net/forum/index.php?topic=15172.15
// @version 1.3
// @include http://www.dealextreme.com/*
// @include http://www.buyincoins.com/*
// @include http://www.focalprice.com/*
// ==/UserScript==

document.addEventListener('DOMContentLoaded',function(){
//================== service functions ====================
createCookie = function(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

readCookie = function(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

eraseCookie = function(name) {
createCookie(name,"",-1);
}
//====================== main body ==================
var priceofUSD = Number(readCookie("priceofUSD"));

processPrices = function(priceofUSD) {
usd2rur = function(priceUSD) {
var priceRUR = (priceUSD*priceofUSD).toFixed(2).toString().split(".");
return priceUSD+' ('+priceRUR[0]+'\u0440.'+priceRUR[1]+'\u043a.'+') ';
}

if (!isNaN(priceofUSD) && priceofUSD != 0) {
var prices=document.selectNodes('//*[(self::p or self::span or self::b or self::strong) and (contains(text(),"$") or contains(@class,"cred fb"))]');
for (var i=0; i<prices.length; i++)
prices[i].innerHTML = prices[i].innerHTML.replace(/\d+\.\d+/g, usd2rur);
}
}

if (isNaN(priceofUSD) || priceofUSD === 0)
{
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';

onSuccess = function() {
window._alert = function(elem) {
var obj = elem.content.ValCurs.Valute;
for (var i in obj) if (obj[i].CharCode == 'USD') priceofUSD = Number(obj[i].Value.replace(',','.'));
createCookie("priceofUSD", priceofUSD, 1);
}
processPrices(priceofUSD);
}

script.onreadystatechange = function () { if (this.readyState === "loaded") onSuccess(); }
script.onload= onSuccess();
script.src= 'http://esrijson.appspot.com/xml2json?url=http%3A%2F%2Fwww.cbr.ru%2Fscripts%2FXML_daily.asp&callback=_alert&headers=false&f=pjson';
head.appendChild(script);
}
else
{
processPrices(priceofUSD);
}
},false);

Оффлайн xneo

  • Новичок
  • Сообщений: 13
    • Просмотр профиля
#28 24-11-2010, 08:58
0
Спасибо тебе огромное Dither! Смотрел твой скрипт - стало понятней. Вроде разобрался как пашет до конца!
И всех участвующих тоже благодарю!  *THANKS*

Дополнено : 24-11-2010, 05:50
А теперь будем переводить цены на картинках и на баннерах!
Дополнено : 24-11-2010, 05:52
Шутка!   :D :D :D :P
Еще раз всем спасибо!

Добавил сверху слева страницы полупрозрачную иконку при наведении на которую выводится текущий курс доллара.
(кликните для показа/скрытия)
« Последнее редактирование: 24-11-2010, 09:23 от xneo »

Оффлайн vityah

  • Новичок
  • Сообщений: 42
    • Просмотр профиля
#29 24-11-2010, 14:36
0
Добавил сверху слева страницы полупрозрачную иконку при наведении на которую выводится текущий курс доллара.
Отлично, теперь показывает при наведении 1$=0 руб, просто супер :)
Переделал на гривны, кто с Украины пригодится. Правда тупо ввел курс 1USD=8UAH, так как сходу не разобрался как там курс доллара считывается.
На focalprice кстате не работает скриптег.

Кстати, можно с позволения автора я размещу вариант с гривнами на Userscripts.org? Что бы автоматически можно было обновлять версию скрипта? Авторство конечно оставлю автору.
« Последнее редактирование: 24-11-2010, 16:12 от vityah »