My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* !
* Ping Your Yesterdays's WinOMeter Statistics - PYYWS2.js
* By est, electronicstar@126.com
* Copyleft @ 2009
*/

//put your Ping.fm authentication key (https://ping.fm/key/) here
var AUTH = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXX";


/* --------------------- WinOMeter part --------------------- */

var shell = new ActiveXObject("WScript.Shell");
var history = shell.RegRead("HKEY_CURRENT_USER\\Software\\Tomas Jelinek\\WinOMeter\\History").toArray();
var dupcheck_key = "HKEY_CURRENT_USER\\Software\\Tomas Jelinek\\WinOMeter\\last_PYYWS2";

var item, d = new Date();
var s = [d.getDate()-1, d.getMonth()+1, d.getFullYear() % 256, Math.floor(d.getFullYear()/256)].toString();
for(var i=history.length-24; i>=0; i-=24)
{
item = history.slice(i, i+24);
if(item.slice(0, 4).toString() == s) break;
}

/* date key p mouse t r m l uptime
* 0c,05,d9,07, dc,7b,00,00, 86,82,03,4a, 16,03, 8b,5b, e5,46,00,00, 1a,b0,00,00,
* 12,5,217,7, 220,123,0,0, 134,130,3,74, 22,3, 139,91, 229,70,0,0, 26,176,0,0
*/

function rs(l)
{
var c=0;
for(var i=0;i<l.length;i++)
{
c += l[i] * Math.pow(256, i);
}
return c
}

// 32-bit IEEE 754 floating point from http://code.google.com/p/jspack/ by Fair Oaks Labs, Inc.
// example: decode_ieee754( [72, 176, 78, 28] ) get 361072.875
decode_ieee754 = function (a)
{
var s, e, m, i, d, nBits, mLen, eLen, eBias, eMax;
var el = {len:4, mLen:23, rt:Math.pow(2, -24)-Math.pow(2, -77)};
var bBE = false; //big-endianness
mLen = el.mLen, eLen = el.len*8-el.mLen-1, eMax = (1<<eLen)-1, eBias = eMax>>1;

i = bBE?0:(el.len-1); d = bBE?1:-1; s = a[i]; i+=d; nBits = -7;
for (e = s&((1<<(-nBits))-1), s>>=(-nBits), nBits += eLen; nBits > 0; e=e*256+a[i], i+=d, nBits-=8);
for (m = e&((1<<(-nBits))-1), e>>=(-nBits), nBits += mLen; nBits > 0; m=m*256+a[i], i+=d, nBits-=8);

switch (e)
{
case 0:
// Zero, or denormalized number
e = 1-eBias;
break;
case eMax:
// NaN, or +/-Infinity
return m?NaN:((s?-1:1)*Infinity);
default:
// Normalized number
m = m + Math.pow(2, mLen);
e = e - eBias;
break;
}
return (s?-1:1) * m * Math.pow(2, e-mLen);
};


kp = rs(item.slice(4, 8)); //key presses
mt = decode_ieee754(item.slice(8, 12))/1000; //Mouse Trajectory
rc = rs(item.slice(12, 14)); //right clicks
mc = rs(item.slice(14, 16)); //middle clicks
lc = rs(item.slice(16, 20)); //left clicks
ut = rs(item.slice(20, 24)); //uptime in seconds
uth = Math.floor(ut / 3600)
utm = Math.floor( (ut-uth*3600)/60 )
uts = ut - uth*3600 - utm*60
ut = uth+'h'+utm+'m'+uts+'s' //uptime in 12h34m56s

//content to be sent to ping.fm/twitter
text = "WinOMeter yesterday for @est: key presses: "+kp+", mouse trajectory: "+mt+"m, L/M/R clicks: "+lc+"/"+mc+"/"+rc+", uptime: "+ut+" #PYYWS"



/* --------------------- ping.fm part --------------------- */
//WScript.Echo(0);

var xhr = new ActiveXObject("MsXml2.XmlHttp");
function post_to_pingfm(text)
{
xhr.Open("POST", "http://api.ping.fm/v1/user.post", 0);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xhr.Send("api_key=0b48e29f10e6f46acb1d9974f32be075&user_app_key=" + AUTH + "&post_method=default&body=" + encodeURIComponent(text))
return xhr.getResponseBody
}

try
{
posted = shell.RegRead(dupcheck_key);
}
catch(e)
{
shell.RegWrite(dupcheck_key, "sth");
}

try
{
if(shell.RegRead(dupcheck_key)!=s)
{
//WScript.Echo
post_to_pingfm(text);
}
shell.RegWrite(dupcheck_key, s);
}
catch(e)
{
WScript.Echo(e)
}

Change log

r59 by electronixtar on May 14, 2009   Diff
customize text
Go to: 
Project members, sign in to write a code review

Older revisions

r58 by electronixtar on May 14, 2009   Diff
ping.fm auth segregation
r57 by electronixtar on May 14, 2009   Diff
Ping Your Yesterday's WinOMeter
Statistics V2.0
All revisions of this file

File info

Size: 3970 bytes, 121 lines
Powered by Google Project Hosting