JOYSOUND リクエスト投票

いつも忘れるので、HTA にして 08:00 でタスク スケジューラに入れておくことにする。動作未確認。

動いた。おk。

あーダメ。tic すなわちセッション ID がころころ変わる。[あとで直す]

joy.hta

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>_</title>
<script type="text/javascript" src="http://svn.coderepos.org/share/lang/javascript/jsdeferred/trunk/jsdeferred.mini.js"></script>
<form method="post" action="https://joysound.com/ex/utasuki/forwardLogin.htm">
	<input name="loginId" value="*******">
	<input name="loginPass" value="****">
</form>
<script type="text/javascript">// <![CDATA[
Deferred.define();
var vote = 10, num = '2007080288', tic = '********************************';
var sec = 4; target = 'joy', win = window.open('', target), form = document.forms[0];
next(function() {
  form.target = target;
  form.submit();
}).
wait(sec).
loop(vote + 1, function(i, o) {
  win.location.href = ['http://joysound.com/ex/utasuki/request/vote2/compentry.htm?requestNo=', num, '&tic=', tic].join('');
  return o.last ? i : wait(sec);
}).
next(function() {
  win.close();
  window.close();
});
// ]]></script>

いろいろ試したけど、結局 gdgd に落ち着いた。

joy.hta

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>_</title>
<form method="post" action="https://joysound.com/ex/utasuki/forwardLogin.htm" target="_">
	<input type="password" name="loginId" value="*******">
	<input type="password" name="loginPass" value="****">
</form>
<script type="text/javascript" src="jsdeferred.mini.js"></script>
<script type="text/javascript" src="joy.js"></script>

joy.js

Deferred.define();
var sec = 4, vote = 10, num = '2007080288', tic = '';
var form = document.forms[0], win = window.open('', form.target);
next(function() {
  form.submit();
}).
wait(sec).
next(function() {
  win.location.href = 'http://joysound.com/ex/utasuki/request/vote/index.htm?requestNo=' + num;
}).
wait(sec).
next(function() {
  tic = (/\"(\w{32})\"/.exec(win.document.body.innerHTML) || [])[1];
}).
loop(++vote, function(i, o) {
  win.location.href = ['http://joysound.com/ex/utasuki/request/vote2/compentry.htm?requestNo=', num, '&tic=', tic].join('');
  return o.last ? i : wait(sec);
}).
next(function() {
  win.close();
  window.close();
});

joy.wsf

サスペンドしないのもどうかと思う。動作未確認。

あっれーサスペンドしないな。[あとで直す]

直した。
<?xml version="1.0" encoding="shift_jis"?>
<job>
<object id="$shell" progid="WScript.Shell"/>
<script language="JScript"><![CDATA[
(function() {
  WSH.sleep(30 * 1000);
  $shell.run('joy.hta', 0, true);
  WSH.sleep(20 * 1000);
  $shell.run('rundll32.exe powrprof.dll, SetSuspendState');
})();
]]></script>
</job>
あ、WSH だけじゃ20秒眠らせててもキャンセルできないじゃん。

joy.bat

@echo off
setlocal
cscript //nologo joy.wsf
endlocal
echo on