Последнее на форуме
Что нового
Топ юзеров за месяц
Даниил Юрьевич 16 июля 2014
ICQ:
Новостей: 5
Кармы за месяц: 30
demogog 10 января 2017
ICQ:
Новостей: 1
Кармы за месяц: 36
Мы в соц. сетях
  • VK
  • Twitter
  • Facebook

Отображение цен на предметы на сайте Dota2lounge

Автор: ReQ | Дата: 20-01-2014, 15:58 | Комментариев: 18 | Просмотров: 20 127

Скрипт позволяет смотреть все цены на сайте Dota2Lounge

Скрипт переведёт, и не много переделан лично мною

1) Вам понадобиться гугл хром
2) Необходимо скачать и установить плагин Tampermonkey
3)Нажать кнопку добавить новый скрипт, и написать вот это:

// ==UserScript==
// @name        Price by ReQ
// @version     1.1
// @author      ReQ
// @description Displays an item's lowest price offer from the Steam community market and also provides a helper to copy an item's name by clicking the panel under it. Based on the "Steam Market Price Matcher" script by tomatolicious available at http://userscripts.org/scripts/source/154071.user.js
// @license     GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// @include     http://dota2lounge.com/*
// @updateURL   http://userscripts.org/scripts/source/182588.user.js
// @downloadURL http://userscripts.org/scripts/source/182588.user.js
// @grant       GM_xmlhttpRequest
// @grant       GM_addStyle
// ==/UserScript==

// initialize the script for the items on the page
var initialize = function() {
    // find each item's name panel/slot
    var itemNamePanels = document.querySelectorAll(".item .name");
    attachExtraPanelsAndListeners(itemNamePanels);
    // watch the right list of items for changes, when it exists
    var rightItemList = document.querySelector("#rightlist #itemlist");
    if (rightItemList) {
        attachMutationObserver(rightItemList);
    }
    var offerPanel = document.querySelector("#messages #offer");
    if (offerPanel) {
        attachMutationObserver(offerPanel);
    }
}

// add to each item's name panel an extra panel that contains the price information and a click handler to facilitate copying the item's name 
var attachExtraPanelsAndListeners = function(itemNamePanels) {
    for (var i = 0, length = itemNamePanels.length; i < length; i++) {
        var itemNamePanel = itemNamePanels[i];
        // create our own panel to append..       
        var extraPanel = document.createElement('div');
        extraPanel.innerHTML = "<span class='scriptStatus'>Ошибка, убери курсор с предмета</span>";
        extraPanel.setAttribute("class", "extraPanel");
        // ..and do so
        itemNamePanel.appendChild(extraPanel);
        // set mouseover event listener on the item
        itemNamePanel.parentNode.addEventListener("mouseover", getLowestPriceHandler, false);
        // set click event handler for the item's name panel so that the item name can be copied to the clipboard easier
        itemNamePanel.addEventListener("click", copyItemNameHandler, false);
    }
}

// attach a mutation observer on the target item container
var attachMutationObserver = function(target) {     
    // create an observer instance
    var observer = new MutationObserver(function(mutations) {
        // we`re intereste only in mutations that add nodes. This skips the mutation introduced by the "Add item to offer" button's removal
        if (mutations.length == 1 && mutations[0].removedNodes.length > 0) {
            return;
        }
        // when the mutation happens, augment the new items with price info and etc.
        itemNamePanels = target.querySelectorAll(".item .name");
        attachExtraPanelsAndListeners(itemNamePanels);
    });
     
    // configuration of the observer
    var config = { childList: true };
     
    // pass in the target node, as well as the observer options
    observer.observe(target, config);
}

// event handler to grab the price
var getLowestPriceHandler = function() {
    var itemNameElement = this.querySelector(".name");
    // don`t try to get the price if we've already retrieved it
    if (itemNameElement.querySelector(".scriptStatus").innerHTML != "Ошибка, убери курсор с предмета") {
        return;
    }
    var theItem = itemNameElement.querySelector("b").innerHTML.trim();
    var theItemString = encodeURIComponent(theItem);
    // from Steam's community market website
    var appID = 570;
    itemNameElement.querySelector(".scriptStatus").innerHTML = "Загрузка... :)";
    GM_xmlhttpRequest({
        method: "GET",
        url: "http://steamcommunity.com/market/listings/" + appID + "/" + theItemString + "/",
        onload: function (response) {
            var httpResponse = response.responseText;
            var match = lowestPriceWithFeeRegExp.exec(httpResponse);
            var priceWithFee = "<span class='" + (match ?
                "itemMarketable'>" + match[1] :
                "itemNotMarketable'>Нету на продаже :(")
                + "</span>";
            match = lowestPriceWithoutFeeRegExp.exec(httpResponse);
            var priceWithoutFee = match ? match[1] + " - without fee (seller receives)" : ""; 
            itemNameElement.querySelector(".scriptStatus").innerHTML = "<span title='" + priceWithoutFee + "'>" + priceWithFee + "</span>";
        }
    });
}

// cached RegExps used to read the item's value from the Steam page.
var lowestPriceWithFeeRegExp = /<span class="market_listing_price market_listing_price_with_fee">\s*(.*?)\s*<\/span>/i;
var lowestPriceWithoutFeeRegExp = /<span class="market_listing_price market_listing_price_without_fee">\s*(.*?)\s*<\/span>/i;

// event handler to facilitate copying an item's name
var copyItemNameHandler = function(event) {
    // stop the element's parent (item) from getting the click event. This stops the item from being selected
    event.stopPropagation()
    // make sure we select the item name element
    var itemNameElement = event.target;
    while (!hasClass(itemNameElement, "name")) {
        itemNameElement = itemNameElement.parentNode;
    }
    // get and display the item's name
    var itemName = itemNameElement.querySelector("b").innerHTML.trim();
    window.prompt("Press CTRL+C to copy the item's name:", itemName);
}

// helper method to check if an element has the specified class name
var hasClass = function(element, cls) {
    return (" " + element.className + " ").indexOf(" " + cls + " ") > -1;
}

// style
GM_addStyle(".itemNotMarketable { font-size: 110%; color : red } .itemMarketable { color: blue }");

// initialize the script once the page has finished loading
window.onload = initialize;

Потом просто навести курсор на предмет, и всё!!!!

Теги: Dota2Price Скрипт dota2lounge дота 2 лаундж



-8
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Репутация: -2
  • Написал: Drobazh
  • Дата: 20 января 2014 16:09
  • Новостей: 0
  • Комментариев: 57
Полезно, но вроде где то видел месяца 2 назад
  • Пользователь offline
Репутация: 4
  • Написал: JiK
  • Дата: 20 января 2014 16:11
  • Новостей: 2
  • Комментариев: 80
заколебали баяны постить, плюсов с баянов не получите...
  • Пользователь offline
Репутация: 18
  • Написал: Venos
  • Дата: 20 января 2014 16:27
  • Новостей: 3
  • Комментариев: 190
сделал как написано, но ничего не происходит? чё делать?
  • Пользователь offline
Репутация: {repa}
  • Написал: SSD
  • Дата: 20 января 2014 16:30
  • Новостей: 0
  • Комментариев: 3
норм тема
а почему цены и в рублях и в евро и в долларах?
цены из торговой площадки ведь? или откуда?
  • Пользователь offline
Репутация: 60
  • Написал: dice
  • Дата: 20 января 2014 16:56
  • Новостей: 8
  • Комментариев: 59
Опубликуйте уже и для cs go lounge.
  • Пользователь offline
Репутация: 14
  • Написал: YoungBlood
  • Дата: 20 января 2014 17:06
  • Новостей: 2
  • Комментариев: 15
Проблема в том что цены гнилые, удачи вам по тем ценам что-то делать, дарите свои ключи другим.
  • Пользователь offline
Репутация: 18
  • Написал: Venos
  • Дата: 20 января 2014 17:09
  • Новостей: 3
  • Комментариев: 190
Цитата: YoungBlood
Проблема в том что цены гнилые, удачи вам по тем ценам что-то делать, дарите свои ключи другим.

уйди противный
  • Пользователь offline
Репутация: -1
  • Написал: Time
  • Дата: 20 января 2014 18:35
  • Новостей: 0
  • Комментариев: 18
Цены показывает неправильные(
так что минус
  • Пользователь offline
Репутация: {repa}
  • Написал: artyom777
  • Дата: 20 января 2014 18:49
  • Новостей: 1
  • Комментариев: 41
Уже было на старом сайте
  • Пользователь offline
Репутация: 336
  • Написал: chumakoff
  • Дата: 20 января 2014 19:05
  • Новостей: 27
  • Комментариев: 206
Цитата: JiK
заколебали баяны постить, плюсов с баянов не получите...

Пиз*ец ты критик, когда мы увидим твои темы?
  • Пользователь offline
Репутация: {repa}
  • Написал: ReQ
  • Дата: 20 января 2014 19:21
  • Новостей: 2
  • Комментариев: 3
Цитата: Time
Цены показывает неправильные(
так что минус

Цены показывает правильные, т.к скрипт берёт все цены с торговой площадки
  • Пользователь offline
Репутация: 4
  • Написал: JiK
  • Дата: 20 января 2014 20:48
  • Новостей: 2
  • Комментариев: 80
Цитата: chumakoff
Цитата: JiK
заколебали баяны постить, плюсов с баянов не получите...

Пиз*ец ты критик, когда мы увидим твои темы?

увидишь когда я что-то стоящее найду, не как вы хрень всякую лить на отъе*сь
  • Пользователь offline
Репутация: 336
  • Написал: chumakoff
  • Дата: 20 января 2014 20:51
  • Новостей: 27
  • Комментариев: 206
Цитата: JiK
Цитата: chumakoff
Цитата: JiK
заколебали баяны постить, плюсов с баянов не получите...

Пиз*ец ты критик, когда мы увидим твои темы?

увидишь когда я что-то стоящее найду, не как вы хрень всякую лить на отъе*сь

Нууу, не спорю, тут заслуженый минус...
Но ты остальные темы то даже не лайкал и не минусовал, две темы минуснул и все.
  • Пользователь offline
Репутация: {repa}
  • Написал: Romel
  • Дата: 21 января 2014 14:10
  • Новостей: 0
  • Комментариев: 19
Не,не отображается:(
скорее всего рукожопый я:D
  • Пользователь offline
Репутация: 0
  • Написал: Siberia
  • Дата: 4 апреля 2015 12:57
  • Новостей: 0
  • Комментариев: 16
не робит
  • Пользователь offline
Репутация: {repa}
  • Написал: Kozak
  • Дата: 4 апреля 2015 13:02
  • Новостей: 275
  • Комментариев: 454
Цитата: Siberia
не робит

На дату темы глянь.
  • Пользователь offline
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.