Last active
June 18, 2018 13:27
-
-
Save yuru4c/786810608d14306ff49d4bb623c00935 to your computer and use it in GitHub Desktop.
いま pixiv アカウントを作ると id はいくつになるか調べます
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> | |
<html lang="ja-JP"> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
<title>pixiv member id</title> | |
<style type="text/css"> | |
* { | |
font-size: large; | |
} | |
body { | |
white-space: nowrap; | |
} | |
label { | |
display: block; | |
font-weight: normal; | |
} | |
label, input { | |
text-align: right; | |
} | |
button { | |
width: 100%; | |
} | |
.half button { | |
width: 50%; | |
} | |
#abort, .invert #button { | |
display: none; | |
} | |
.invert #abort { | |
display: inline; | |
} | |
#out { | |
list-style-type: none; | |
} | |
</style> | |
</head> | |
<body> | |
<table> | |
<tr id="initials"> | |
<th><label for="initial">初期値: </label></th> | |
<td><input id="initial" value="1"></td> | |
<td><button type="button">0</button></td> | |
<td><button type="button">-0</button></td> | |
<td><button type="button">-1</button></td> | |
</tr> | |
<tr id="deltas"> | |
<th><label for="delta">幅: </label></th> | |
<td><input id="delta" value="8388608"></td> | |
<td><button type="button">1</button></td> | |
<td colspan="2" class="half"> | |
<button type="button">/2</button><!-- | |
--><button type="button">*2</button> | |
</td> | |
</tr> | |
<tr> | |
<td colspan="5" id="buttons"> | |
<button type="button" id="button">検索</button> | |
<button type="button" id="abort" >中断</button> | |
</td> | |
</tr> | |
</table> | |
<ul id="out"><li></li></ul> | |
<script type="text/javascript" src="member_id.js"></script> | |
<script type="text/javascript"> | |
var log = function (str) { | |
// console.log(str); | |
}; | |
(function ($) { | |
function getButtons(id) { | |
return $.getElementById(id) | |
.getElementsByTagName('button'); | |
} | |
function initButton(button, input) { | |
var value = button.firstChild.data; | |
button.onclick = function () { | |
input.value = value; | |
}; | |
} | |
$.onreadystatechange = function () { | |
$.onreadystatechange = null; | |
search.init(); | |
var initial = $.getElementById('initial'); | |
var delta = $.getElementById('delta'); | |
var initials = getButtons('initials'); | |
var deltas = getButtons('deltas'); | |
var buttons = $.getElementById('buttons'); | |
var button = $.getElementById('button'); | |
var abort = $.getElementById('abort'); | |
var out = $.getElementById('out'); | |
function setInitial(value) { | |
if (isNaN(value)) { | |
value = 0; | |
} | |
if (value == 0 && 1 / value < 0) { | |
initial.value = '-0'; | |
} else { | |
initial.value = value; | |
} | |
return value; | |
} | |
function getInitial() { | |
return setInitial(parseInt(initial.value)); | |
} | |
function setDelta(value) { | |
if (isNaN(value) || value < 1) { | |
value = 1; | |
} | |
delta.value = value; | |
return value; | |
} | |
function getDelta() { | |
return setDelta(parseInt(delta.value)); | |
} | |
initButton(initials[0], initial); | |
initButton(initials[1], initial); | |
initButton(initials[2], initial); | |
initButton(deltas[0], delta); | |
deltas[1].onclick = function () { | |
setDelta(parseInt(delta.value) >> 1); | |
}; | |
deltas[2].onclick = function () { | |
setDelta(parseInt(delta.value) << 1); | |
}; | |
function disabled(bool) { | |
initial .disabled = bool; | |
initials[0].disabled = bool; | |
initials[1].disabled = bool; | |
initials[2].disabled = bool; | |
delta .disabled = bool; | |
deltas[0].disabled = bool; | |
deltas[1].disabled = bool; | |
deltas[2].disabled = bool; | |
} | |
function done() { | |
disabled(false); | |
buttons.className = ''; | |
} | |
var callback = function () { | |
initial.value = '-0'; | |
delta.value = '16'; | |
callback = done; | |
done(); | |
}; | |
button.onclick = function () { | |
disabled(true); | |
buttons.className = 'invert'; | |
search(getInitial(), getDelta(), callback); | |
}; | |
abort.onclick = function () { | |
search.abort(); | |
done(); | |
}; | |
var _log = log; | |
log = function (str) { | |
_log(str); | |
var li = $.createElement('li'); | |
li.appendChild($.createTextNode(str)); | |
out.insertBefore(li, out.firstChild); | |
}; | |
}; | |
})(document); | |
</script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var search = (function ($) { | |
var title = '<title>イラストコミュニケーションサービス[pixiv]</title>'; | |
var url = (function () { | |
var yql0 = 'http://query.yahooapis.com/v1/public/yql?q='; | |
var q0 = 'select * from htmlstring where url="'; | |
var pixiv = 'https://www.pixiv.net/member.php?id='; | |
var q1 = '" and xpath="/html/head/title"'; | |
var yql1 = '&format=json&env='; | |
var env = 'store://datatables.org/alltableswithkeys'; | |
var yql2 = '&callback='; | |
var url0 = yql0 + | |
encodeURIComponent(q0 + pixiv); | |
var url1 = | |
encodeURIComponent(q1) + yql1 + | |
encodeURIComponent(env) + yql2; | |
return function (id, callback) { | |
return url0 + id + url1 + callback; | |
}; | |
})(); | |
var head; | |
var known, running; | |
var n, delta, callback; | |
var testCallback, testN; | |
var key, script; | |
var date, result; | |
function finish() { | |
log('[' + new Date(date).toLocaleString() + ']: ' + n); | |
running = false; | |
callback(n); | |
} | |
function stop() { | |
delete search[key]; | |
script = null; | |
} | |
function onload(json) { | |
stop(); | |
var query = json.query; | |
result = title == query.results.result; | |
if (result) date = query.created; | |
else known = testN; | |
testCallback(); | |
} | |
function skip() { | |
if (running) { | |
result = false; | |
testCallback(); | |
} | |
} | |
function test(n) { | |
testN = n; | |
if (n > known) { | |
log('確認中 ' + n + ' ' + delta); | |
key = '_' + Math.random().toFixed(15).slice(2); | |
search[key] = onload; | |
script = $.createElement('script'); | |
script.type = 'text/javascript'; | |
script.src = url(n, 'search.' + key); | |
head.appendChild(script); | |
} else { | |
log('既知 ' + n + ' ' + delta); | |
setTimeout(skip, 0); | |
} | |
} | |
function abortTest() { | |
if (script) { | |
head.removeChild(script); | |
stop(); | |
} | |
} | |
function binary() { | |
if (delta == 1) { | |
finish(); | |
return; | |
} | |
delta = Math.ceil(delta / 2); | |
test(n - delta); | |
} | |
function binaryCallback() { | |
if (result) n = testN; | |
binary(); | |
} | |
function step() { | |
test(n); | |
} | |
function stepCallback() { | |
if (result) { | |
testCallback = binaryCallback; | |
binary(); | |
} else { | |
n += delta; | |
step(); | |
} | |
} | |
function exec(_n, _delta, _callback) { | |
n = _n; delta = _delta; callback = _callback; | |
running = true; | |
if (1 / n < 0) { | |
n = known - n; | |
} | |
if (n <= known) { | |
n += Math.ceil((known - n + 1) / delta) * delta; | |
} | |
testCallback = stepCallback; | |
step(); | |
} | |
function abort() { | |
if (running) { | |
abortTest(); | |
running = false; | |
log('中断'); | |
} | |
} | |
function init() { | |
abort(); | |
head = $.getElementsByTagName('head')[0]; | |
known = 1; | |
} | |
function search(initial, delta, callback) { | |
abort(); | |
exec(initial, delta, callback); | |
} | |
search.init = init; | |
search.abort = abort; | |
return search; | |
})(document); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment