This project aims to enhance the working environment on Windows
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

120 lines
5.1 KiB

#ifndef _H_EP_WEATHER_PROVIDER_GOOGLE_SCRIPT_H_
#define _H_EP_WEATHER_PROVIDER_GOOGLE_SCRIPT_H_
#include <Windows.h>
// many thanks to https://stackoverflow.com/questions/23202966/google-weather-widget-on-my-website
#define EP_WEATHER_PROVIDER_GOOGLE_SCRIPT_LEN 4000
LPCWSTR ep_weather_provider_google_script = L"\
function changeCSSStyle(ssMain, selector, cssProp, cssVal) {\n\
var cssRules = (document.all) ? 'rules': 'cssRules'; \n\
//console.log(ssMain);\n\
for (i=0, len=document.styleSheets[ssMain][cssRules].length; i<len; i++)\n\
{\n\
if (document.styleSheets[ssMain][cssRules][i].selectorText === selector) {\n\
document.styleSheets[ssMain][cssRules][i].style[cssProp] = cssVal; \n\
//console.log('DA');\n\
return; \n\
}\n\
}\n\
}\n\
function ep_weather_utf8ToHex(str) {\n\
return Array.from(str).map(c => \n\
c.charCodeAt(0) < 128 ? c.charCodeAt(0).toString(16) : \n\
encodeURIComponent(c).replace(/\\%%/g,'').toLowerCase()\n\
).join('');\n\
}\n\
function ep_weather_drawImageToCanvas(image) {\n\
const canvas = document.createElement('canvas');\n\
const w = image.width;\n\
const h = image.height;\n\
canvas.width = w;\n\
canvas.height = h;\n\
canvas.getContext('2d').drawImage(image, 0, 0);\n\
return canvas;\n\
}\n\
function ep_weather_toHexString (byteArray) {\n\
//const chars = new Buffer(byteArray.length * 2);\n\
const chars = new Uint8Array(byteArray.length * 2);\n\
const alpha = 'a'.charCodeAt(0) - 10;\n\
const digit = '0'.charCodeAt(0);\n\
\n\
let p = 0;\n\
for (let i = 0; i < byteArray.length; i++) {\n\
let nibble = byteArray[i] >>> 4;\n\
chars[p++] = nibble > 9 ? nibble + alpha : nibble + digit;\n\
nibble = byteArray[i] & 0xF;\n\
chars[p++] = nibble > 9 ? nibble + alpha : nibble + digit;\n\
}\n\
\n\
//return chars.toString('utf8');\n\
return String.fromCharCode.apply(null, chars);\n\
}\n\
function ep_weather_getData(imageBitmap, ch) {\n\
const canvas = ep_weather_drawImageToCanvas(imageBitmap);\n\
const ctx = canvas.getContext('2d');\n\
\n\
let result = [];\n\
for (let y = 0; y < canvas.height; y++) {\n\
for (let x = 0; x < canvas.width; x++) {\n\
let data = ctx.getImageData(x, y, 1, 1).data;\n\
result.push(data[2] * data[3] / 255);\n\
result.push(data[1] * data[3] / 255);\n\
result.push(data[0] * data[3] / 255);\n\
result.push(data[3]);\n\
}\n\
}\n\
let res = (\n\
document.getElementsByClassName(\"ULSxyf\")[0].offsetHeight + \"#\" + \n\
document.getElementById(ch.includes('x') ? \"wob_ttm\" : \"wob_tm\").innerText + \"#\" + \n\
Array.from(document.getElementsByClassName('wob-unit')[0].getElementsByTagName('span')).filter(e => e.className == 'wob_t').filter(e => !e.style.display.toString().includes(\"none\"))[0].innerText + \"#\" + \n\
document.getElementById(\"wob_tci\").alt + \"#\" + \n\
document.getElementById(\"wob_loc\").innerText + \"#\" + \n\
ep_weather_toHexString(result)\n\
);\n\
//console.log(res);\n\
document.body.style.backgroundColor='transparent';\n\
document.body.style.backgroundColor='transparent';\n\
return res;\n\
}\n\
var ep_result;\n\
let unit = Array.from(document.getElementsByClassName('wob-unit')[0].getElementsByTagName('span')).filter(e => e.className == 'wob_t')[0].innerText;\n\
let p = '%c';\n\
if (!unit.includes(p)) {\n\
Array.from(document.getElementsByClassName('wob-unit')[0].getElementsByTagName('a')).filter(e => e.className == 'wob_t').filter(e => e.innerText.includes(p))[0].click();\n\
unit = 'x';\n\
}\n\
createImageBitmap(\n\
document.getElementById('wob_tci'), \n\
{ resizeWidth: %d, resizeHeight: %d, resizeQuality: 'high' }\n\
)\n\
.then(imageBitmap => \n\
ep_result = ep_weather_getData(imageBitmap, unit)\n\
);\n\
function ep_weather_part1() {\n\
return \"run_part_2\";\n\
}\n\
ep_weather_part1();\n\
";
LPCWSTR ep_weather_provider_google_script2 = L"\
function scrolldisable() {\n\
TopScroll = window.pageYOffset || document.documentElement.scrollTop;\n\
LeftScroll = window.pageXOffset || document.documentElement.scrollLeft;\n\
window.onscroll = function() {\n\
window.scrollTo(LeftScroll, TopScroll);\n\
};\n\
}\n\
function ep_weather_part2() {\n\
let h = document.getElementsByClassName(\"ULSxyf\")[0].offsetHeight;\n\
////document.getElementsByClassName(\"google-weather-place\")[0].style.height = h + 'px';\n\
////document.getElementsByClassName(\"google-weather-crop\")[0].style.height = h + 'px';\n\
//if (1) for (let j = 0; j < document.styleSheets.length; j++) changeCSSStyle(j, '.wob_ds', 'background-color', '#303134');\n\
document.getElementsByClassName(\"KFFQ0c\")[0].style.display = 'none';\n\
if (document.getElementsByClassName(\"QS5gu sy4vM\").length > 1) { document.getElementsByClassName(\"QS5gu sy4vM\")[1].click(); return \"run_part_1\"; }\n\
//document.getElementById(\"search\").scrollIntoView(true);\n\
return ep_result;\n\
}\n\
let banner1 = document.getElementById(\"taw\"); if (banner1) { banner1.style = \"display: none\"; }\n\
scrolldisable();\n\
ep_weather_part2();\n\
";
#endif