Greasy Fork

Greasy Fork is available in English.

郑州房奴助手.js

郑州住房保障局公示信息统计 预售楼盘价格的统计(统计均价、最高、最低价 同一户型的均价、最高、最低价)

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

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

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         郑州房奴助手.js
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  郑州住房保障局公示信息统计 预售楼盘价格的统计(统计均价、最高、最低价 同一户型的均价、最高、最低价)
// @author       You
// @match        http://*/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @include      *://http://218.28.223.8/*
// ==/UserScript==

(function() {
    'use strict';

    // map分组函数
    function groupBy(array, f) {
        let groups = {};
        array.forEach(function(o) {
            let group = JSON.stringify(f(o));
            groups[group] = groups[group] || [];
            groups[group].push(o);
        });
        return Object.keys(groups).map(function(group) {
            return groups[group];
        });
    }

    // 郑州住房保障局
    function zzzfbzjHandler() {
        this.addHtmlElements = function() {
            // var div = document.createElement("div");
            // div.innerHTML = "<button id='button_0023' style='position:absolute;right:100;top:10' '>房奴助手</button>"
            // document.getElementsByClassName("inner1")[1].appendChild(div);

            var parentNode = document.getElementsByClassName('main-wrap clearfix')[2];
            var beforeNode = document.getElementsByClassName("inner1")[1];
            var targetNode = document.createElement("div")
            targetNode.className = "inner1";
            targetNode.style = "width: 100%;"
            targetNode.innerHTML = "<h4>房奴助手</h4><span>请先选择楼栋、单元 再</span><button id='button_0023' style='margin-left:10'>点击计算</button><button id='button_0024' style='margin-left:10'>清除</button><div id='result_0023'></div>";
            parentNode.insertBefore(targetNode, beforeNode);
        }

        this.bindEvent = function() {
            $("#button_0023").on("click", function() {
                var elements = document.getElementsByClassName("yisou")
                let datas = [];
                Array.from(elements).forEach(function(element, index) {
                    var number = element.innerText.match(/编号:(\S*)/)[1];
                    var price = element.innerText.match(/预售申报价:(\S*)元\/㎡/)[1];
                    let map = new Map();
                    map.set("number", Number(number));
                    map.set("price", Number(price));
                    map.set("floor", Math.floor(Number(number) / 100));
                    map.set("room", Number(number) % 10);
                    datas.push(map);
                });
                let rooms = groupBy(datas, function(item) { return item.get("room") });
                let floors = groupBy(datas, function(item) { return item.get("floor") });

                // 房间统计
                var resultHTML = "共" + floors.length + "层 一层" + rooms.length + "户 总计" + datas.length + "个房间";

                // 计算均价
                let average = datas.map(function(item) { return item.get("price") }).reduce(function(total, current) { return total + current }, 0) / datas.length;
                resultHTML = resultHTML + " " + "平均价格:" + average.toFixed(2) + "/㎡";

                // 找到最贵的 最便宜的
                let maxPriceRoom = datas.sort(function(item1, item2) { return item1.get("price") - item2.get("price") })[datas.length - 1];
                resultHTML = resultHTML + " " + "最贵的是:" + maxPriceRoom.get("number") + " 价格:" + maxPriceRoom.get("price") + "/㎡";

                let minPriceRoom = datas.sort(function(item1, item2) { return item2.get("price") - item1.get("price") })[datas.length - 1];
                resultHTML = resultHTML + " " + "最便宜的是:" + minPriceRoom.get("number") + " 价格:" + minPriceRoom.get("price") + "/㎡";

                // 找到同户型最贵的 最便宜的
                rooms.forEach(function(items) {
                    // 同户型的均价
                    let average = items.map(function(item) { return item.get("price") }).reduce(function(total, current) { return total + current }, 0) / items.length;
                    resultHTML = resultHTML + "<br>" + items[0].get("room") + "号房间平均价格:" + average.toFixed(2) + "/㎡";
                    // 同户型最贵 最便宜
                    let maxPriceRoom = items.sort(function(item1, item2) { return item1.get("price") - item2.get("price") })[items.length - 1];
                    resultHTML = resultHTML + " 最贵的是:" + maxPriceRoom.get("number") + " 价格:" + maxPriceRoom.get("price") + "/㎡";
                    let minPriceRoom = items.sort(function(item1, item2) { return item2.get("price") - item1.get("price") })[items.length - 1];
                    resultHTML = resultHTML + " 最便宜的是:" + minPriceRoom.get("number") + " 价格:" + minPriceRoom.get("price") + "/㎡";
                })

                var resultNode = document.getElementById("result_0023");
                resultNode.innerHTML = resultHTML;
                console.log(resultHTML);
            });
            $("#button_0024").on("click", function() {
                var resultNode = document.getElementById("result_0023");
                resultNode.innerHTML = "";
            });
            console.log("绑定事件ok")
        }

        this.start = function() {
            var pathName = window.document.location.pathname;
            if (pathName.indexOf("/gov/search.html") >= 0) {
                this.addHtmlElements();
                this.bindEvent();
            }
        }
    }

    // 入口函数
    var domain = document.domain;
    console.log("document.domain:", document.domain);
    switch (domain) {
        case "218.28.223.8":
            new zzzfbzjHandler().start();
            break;
        default:
            console.log("不是目标网站");
    }

})();