This repository has been archived by the owner on May 16, 2023. It is now read-only.
/
main.html
executable file
·110 lines (102 loc) · 3.24 KB
/
main.html
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
<html>
<head>
<title>wikiclick</title>
<style>
body {
word-wrap: break-word;
white-space: normal;
}
</style>
<script>
function browser_open(url, element) {
var open = require("open");
open(url);
element.style.color = "purple";
return false;
}
function shuffle(array) {
var n = array.length, t, i;
while (n) {
i = Math.floor(Math.random() * n--);
t = array[n];
array[n] = array[i];
array[i] = t;
}
return array;
}
var result_arr = [];
function wiki_load(lang) {
var max_file_size = 3000000 * 2; // 50% is max
var store_size = 100000;
var loading_period_size = 50000;
var line_num = 0;
var file_name = 'title_url_abstract_' + lang + '.tsv.gz';
var firstReadline = require('readline').createInterface({
input: require('fs').createReadStream(file_name).pipe(require('zlib').createGunzip())
});
firstReadline.on('line', function (line) {
++line_num;
if (line_num % loading_period_size == 0) {
document.body.innerHTML = 'Loading... ' + Math.floor(line_num * 100 / max_file_size) + '%';
}
});
firstReadline.on('close', function (input) {
document.body.innerHTML = 'Loading... ' + '50%';
var secoundReadline = require('readline').createInterface({
input: require('fs').createReadStream(file_name).pipe(require('zlib').createGunzip())
});
var read_num = 0;
secoundReadline.on('line', function (line) {
++read_num;
if (read_num % loading_period_size == 0) {
document.body.innerHTML = 'Loading... ' + (Math.floor(read_num * 100 / line_num / 2) + 50) + '%';
}
if (Math.random() < store_size / line_num ) {
result_arr.push(line);
}
});
secoundReadline.on('close', function (line) {
shuffle(result_arr);
document.body.innerHTML = '';
add_link(1000);
//document.body.innerHTML = result_arr.length + " / " + store_size + '<br>';
window.onscroll = function(ev) {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
add_link();
}
};
});
});
}
var added_num = 0;
function add_link(num) {
var load_num = num || 500;
var load_max = Math.min(added_num + load_num, result_arr.length);
html_add = "";
for (var i = added_num; i < load_max; ++i) {
var columns = result_arr[i].split("\t")
html_add += '<a href="' + columns[1] + '" onclick="return browser_open(' + "'" + columns[1] + "'" + ', this)">' + columns[2] + '</a> ';
}
document.body.innerHTML += html_add;
added_num = i;
}
function read_current_dir() {
require('fs').readdir('./', function (err, list) {
var body_html = '';
list.forEach(function (file_name) {
if (/^title_url_abstract_(.*)\.tsv\.gz$/.test(file_name)) {
body_html += '<button onclick="wiki_load(' + "'" + RegExp.$1 + "'" + ')">' + file_name + ' (' + RegExp.$1 + ')</button><br><br>';
}
});
document.body.innerHTML = body_html;
});
}
function init() {
read_current_dir();
}
</script>
</head>
<body onload="init()">
Loading...
</body>
</html>