Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- https://greasyfork.org/zh-TW/scripts/440956
- userscript完成
- 此文件不再更新
- 複製全部
- 到台電網頁 https://www.taipower.com.tw/tc/page.aspx?mid=206
- 按F12打開console/控制台
- 貼上按ENTER 執行
- 如備註符合limit清單中描述,部分故障/測試運轉...等: 僅計入當下發電能力 而不是最大容量
- 容量_總計_綠能僅實際發電 = 非綠能最大容量 + 綠能當下發電
- 03/05: 計入抽蓄負載,抽蓄[負載]扣除非綠能發電。 但抽蓄[發電]計算為綠能。
- */
- (async function () {
- let url = "https://www.taipower.com.tw/d006/loadGraph/loadGraph/data/genary.json",
- raw = await fetch(url),
- parseRaw = (arr) => {
- let [type, group, name, cap, gen, gen_percent, note] = arr;
- type = type.match(/b>(.*)<\/b/)[1].trim();
- cap = parseFloat(cap);
- gen = parseFloat(gen);
- note = note.trim();
- if (isNaN(cap)) cap = 0;
- if (isNaN(gen)) gen = 0;
- return { type, name, cap, gen, note };
- },
- not_run = [
- "歲修",
- "故障",
- "環保停機檢修",
- "檢修",
- "機組安檢",
- "測試停機",
- ],
- limit = [
- "水文限制",
- "燃料限制",
- "環保限制",
- "空污減載",
- "測試運轉",
- "運轉限制",
- "EOH限制",
- "合約限制",
- "電源線限制",
- "輔機檢修",
- "外溫高限制",
- "歲修逾排程",
- "部分歲修",
- "部分檢修",
- "部分故障",
- "友善降載減排",
- ],
- green = [
- "水力(Hydro)",
- "風力(Wind)",
- "太陽能(Solar)",
- "抽蓄發電(Pumping Gen)",
- "其它再生能源(Other Renewable Energy)",
- ],
- data = [],
- p = [],
- sum_max_cap = 0,
- sum_max_actual = 0,
- sum_green_cap = 0,
- sum_no_green_cap = 0,
- sum_green_gen = 0
- ;
- raw = await raw.json();
- raw = raw.aaData;
- raw.forEach(arr => {
- let pp = parseRaw(arr),
- { name, cap, gen } = pp;
- if (name != "小計" && (cap || gen)) {
- data.push(pp);
- }
- });
- console.log(data);
- data.forEach(pp => {
- p.push((async () => {
- if (!not_run.some(t => t == pp.note)) {
- if (limit.some(t => t == pp.note) || pp.type == "抽蓄負載(Pumping Load)") {
- if (green.some(t => t == pp.type)) {
- sum_green_cap += pp.gen;
- sum_green_gen += pp.gen;
- } else {
- sum_no_green_cap += pp.gen;
- }
- } else {
- if (green.some(t => t == pp.type)) {
- sum_green_cap += pp.cap;
- sum_green_gen += pp.gen;
- } else {
- sum_no_green_cap += pp.cap;
- }
- }
- }
- })());
- });
- await Promise.all(p);
- sum_max_cap = sum_no_green_cap + sum_green_cap;
- sum_max_actual = sum_no_green_cap + sum_green_gen;
- [
- sum_max_cap,
- sum_green_cap,
- sum_no_green_cap,
- sum_green_gen,
- sum_max_actual,
- ] = [
- sum_max_cap,
- sum_green_cap,
- sum_no_green_cap,
- sum_green_gen,
- sum_max_actual,
- ].map(num => num = Math.floor(num));
- sum_green_gen = `${sum_green_gen} (${Math.floor(sum_green_gen / sum_green_cap * 10000) / 100}%)`;
- console.log({
- "容量_總計": sum_max_cap,
- "容量_總計_綠能僅實際發電": sum_max_actual,
- "非綠能_容量": sum_no_green_cap,
- "綠能_容量": sum_green_cap,
- "綠能_實際發電": sum_green_gen,
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement