blob: f49e7fb48ced5919ffbf91fa49f7851293836eed (
plain)
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
122
|
<html>
<head>
<title>dump.fm image search</title>
$head()$
<style>
img { max-width: 400px; max-height: 400px;}
h1 { width: 40%; display:inline-block; margin: 20px; font-size: 30px;}
</style>
</head>
<body class="profile">
<center>search dumps: <input type="text" name="search-query" id="search-query" /></center><br><br>
<center><div id="message"></div><br><br></center>
<div id="content"></div>
</body>
<script>
var term = ""
var imagesPerPage = 25;
var images = []
function addScript(term){
jQuery("#search-script").remove()
jQuery("head").append("<scr"+"ipt src='/cmd/ghettosearch/"+term+"' id='search-script'></sc"+"ript>")
}
function setContent(x){
jQuery("#content").html(x)
}
function setMessage(x){
jQuery("#message").html(x)
}
function searchError(error){
setContent("")
setMessage(error)
}
function renderPage(num){
if (images.length > 0)
setMessage("page " + (num + 1));
var contentString = ''
var start = num * imagesPerPage
var imageCounter = 0
for(var i = start; i < images.length; i++){
if(imageCounter > imagesPerPage) break;
contentString += '<a href="'+images[i]+'"><img src="'+images[i]+'"></a>'
imageCounter += 1
}
contentString += '<br><br>'
if(num > 0)
contentString += '<a href="javascript:renderPage('+(num-1)+')"><h1>previous</h1></a> '
if (images.length > start + imageCounter)
contentString += ' <a href="javascript:renderPage('+(num+1)+')"><h1>next</h1></a>'
setContent(contentString)
}
function searchResult(results){
images = []
var alreadyGot = {}
if(results === null || results.length == 0) {
setContent("")
setMessage("no results found")
} else {
for(var r = 0; r<results.length; r++){
var content = results[r]['content']
if (content.substring(0,6) == "<safe>") continue; // skip html posts
var imageUrls = getImagesAsArray(content);
for (var i=0; i<imageUrls.length; i++){
var imageUrl = imageUrls[i];
if (imageUrl in alreadyGot) continue;
alreadyGot[imageUrl] = true
var validImage = true;
for(var t = 0; t<tokens.length; t++){
if (imageUrl.toLowerCase().indexOf(tokens[t]) == -1) {
validImage = false;
break;
}
}
if (validImage)
images.push(imageUrl);
}
}
if (images.length == 0) {
setMessage("no results found")
}
renderPage(0)
}
}
var tokens = []
function doSearch(){
term = jQuery("#search-query").val().trim().toLowerCase()
var rawTokens = term.split(" ")
tokens = []
for(var t = 0; t < rawTokens.length; t++) {
if (rawTokens[t].length > 2)
tokens.push(rawTokens[t])
}
if (tokens.length == 0) {
setMessage("search query too small")
} else {
setMessage("searching for '"+tokens.join(" and ")+"'")
addScript(tokens.join("+"))
}
}
// only search every 800ms while someone is typing
function keyHandler(){
if (keyHandler.timeout) clearTimeout(keyHandler.timeout);
keyHandler.timeout = setTimeout(doSearch, 800)
}
jQuery("#search-query").keyup(keyHandler)
</script>
</html>
|