silos559 commited on
Commit
e3b45ea
·
verified ·
1 Parent(s): 59b93bd

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +437 -19
  3. prompts.txt +0 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Webs
3
- emoji: 🐠
4
- colorFrom: gray
5
- colorTo: indigo
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: webs
3
+ emoji: 🐳
4
+ colorFrom: pink
5
+ colorTo: blue
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,437 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>TimeCapsule Search | Internet Archive</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ @import url('https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap');
11
+
12
+ body {
13
+ font-family: 'Space Mono', monospace;
14
+ background-color: #f0f4f8;
15
+ background-image: radial-gradient(#cbd5e1 1px, transparent 1px);
16
+ background-size: 20px 20px;
17
+ }
18
+
19
+ .vintage-card {
20
+ border: 1px solid rgba(0,0,0,0.1);
21
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
22
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06),
23
+ inset 0 0 10px rgba(0,0,0,0.05);
24
+ transition: all 0.3s ease;
25
+ }
26
+
27
+ .vintage-card:hover {
28
+ transform: translateY(-2px);
29
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
30
+ 0 4px 6px -2px rgba(0, 0, 0, 0.05),
31
+ inset 0 0 10px rgba(0,0,0,0.05);
32
+ }
33
+
34
+ .search-box {
35
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),
36
+ 0 1px 2px 0 rgba(0, 0, 0, 0.06),
37
+ inset 0 0 10px rgba(0,0,0,0.05);
38
+ }
39
+
40
+ .typewriter {
41
+ border-right: 3px solid;
42
+ animation: typing 3.5s steps(40, end), blink-caret .75s step-end infinite;
43
+ overflow: hidden;
44
+ white-space: nowrap;
45
+ }
46
+
47
+ @keyframes typing {
48
+ from { width: 0 }
49
+ to { width: 100% }
50
+ }
51
+
52
+ @keyframes blink-caret {
53
+ from, to { border-color: transparent }
54
+ 50% { border-color: #3b82f6; }
55
+ }
56
+
57
+ .fade-in {
58
+ animation: fadeIn 1s;
59
+ }
60
+
61
+ @keyframes fadeIn {
62
+ 0% { opacity: 0; }
63
+ 100% { opacity: 1; }
64
+ }
65
+ </style>
66
+ </head>
67
+ <body class="min-h-screen py-12 px-4 sm:px-6 lg:px-8">
68
+ <div class="max-w-7xl mx-auto">
69
+ <!-- Header -->
70
+ <header class="text-center mb-12">
71
+ <div class="flex justify-center items-center mb-4">
72
+ <i class="fas fa-book text-yellow-600 text-4xl mr-3"></i>
73
+ <h1 class="text-4xl font-bold text-gray-800">TimeCapsule Search</h1>
74
+ </div>
75
+ <p class="text-gray-600 max-w-2xl mx-auto">
76
+ Dive into the digital archives of the past. Search through millions of web pages, books, videos, audio files, and software preserved for future generations.
77
+ </p>
78
+ </header>
79
+
80
+ <!-- Search Box -->
81
+ <div class="max-w-2xl mx-auto mb-16 relative">
82
+ <div class="relative flex items-center">
83
+ <input
84
+ type="text"
85
+ id="search-input"
86
+ placeholder="Search the archive..."
87
+ class="search-box w-full pl-12 pr-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
88
+ >
89
+ <i class="fas fa-search absolute left-4 text-gray-400"></i>
90
+ <button
91
+ id="search-button"
92
+ class="absolute right-2 bg-blue-600 text-white px-4 py-1.5 rounded-md hover:bg-blue-700 transition-colors"
93
+ >
94
+ Explore
95
+ </button>
96
+ </div>
97
+
98
+ <!-- Quick Filters -->
99
+ <div class="flex flex-wrap justify-center mt-4 gap-2">
100
+ <button class="filter-btn bg-gray-100 hover:bg-gray-200 px-3 py-1 rounded-full text-sm text-gray-700 transition-colors" data-type="web">
101
+ <i class="fas fa-globe mr-1"></i> Web
102
+ </button>
103
+ <button class="filter-btn bg-gray-100 hover:bg-gray-200 px-3 py-1 rounded-full text-sm text-gray-700 transition-colors" data-type="texts">
104
+ <i class="fas fa-book mr-1"></i> Texts
105
+ </button>
106
+ <button class="filter-btn bg-gray-100 hover:bg-gray-200 px-3 py-1 rounded-full text-sm text-gray-700 transition-colors" data-type="video">
107
+ <i class="fas fa-film mr-1"></i> Video
108
+ </button>
109
+ <button class="filter-btn bg-gray-100 hover:bg-gray-200 px-3 py-1 rounded-full text-sm text-gray-700 transition-colors" data-type="audio">
110
+ <i class="fas fa-music mr-1"></i> Audio
111
+ </button>
112
+ <button class="filter-btn bg-gray-100 hover:bg-gray-200 px-3 py-1 rounded-full text-sm text-gray-700 transition-colors" data-type="software">
113
+ <i class="fas fa-file-code mr-1"></i> Software
114
+ </button>
115
+ </div>
116
+ </div>
117
+
118
+ <!-- Time Machine Slider -->
119
+ <div class="max-w-2xl mx-auto mb-12 px-4">
120
+ <div class="flex items-center justify-between mb-2">
121
+ <span class="text-sm text-gray-600">Time Travel:</span>
122
+ <span id="year-display" class="font-bold text-blue-600">2000</span>
123
+ </div>
124
+ <input
125
+ type="range"
126
+ id="year-slider"
127
+ min="1996"
128
+ max="2023"
129
+ value="2000"
130
+ class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"
131
+ >
132
+ </div>
133
+
134
+ <!-- Featured Collections -->
135
+ <div class="mb-12">
136
+ <h2 class="text-2xl font-semibold mb-6 text-gray-800 border-b pb-2">Featured Collections</h2>
137
+ <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
138
+ <div class="vintage-card bg-white p-6 rounded-lg flex flex-col hover:bg-yellow-50">
139
+ <i class="fas fa-laptop-code text-3xl text-yellow-600 mb-3"></i>
140
+ <h3 class="text-xl font-semibold mb-2">Software Library</h3>
141
+ <p class="text-gray-600 mb-4 flex-grow">Explore thousands of historical software programs from the early days of computing.</p>
142
+ <button class="collection-btn mt-auto self-start text-blue-600 hover:text-blue-800 text-sm font-medium" data-collection="software">Browse →</button>
143
+ </div>
144
+
145
+ <div class="vintage-card bg-white p-6 rounded-lg flex flex-col hover:bg-blue-50">
146
+ <i class="fas fa-newspaper text-3xl text-blue-600 mb-3"></i>
147
+ <h3 class="text-xl font-semibold mb-2">News & Magazines</h3>
148
+ <p class="text-gray-600 mb-4 flex-grow">Historical periodicals, newspapers, and magazines from around the world.</p>
149
+ <button class="collection-btn mt-auto self-start text-blue-600 hover:text-blue-800 text-sm font-medium" data-collection="news">Browse →</button>
150
+ </div>
151
+
152
+ <div class="vintage-card bg-white p-6 rounded-lg flex flex-col hover:bg-green-50">
153
+ <i class="fas fa-music text-3xl text-green-600 mb-3"></i>
154
+ <h3 class="text-xl font-semibold mb-2">Live Music Archive</h3>
155
+ <p class="text-gray-600 mb-4 flex-grow">Thousands of concert recordings from independent artists and iconic performances.</p>
156
+ <button class="collection-btn mt-auto self-start text-blue-600 hover:text-blue-800 text-sm font-medium" data-collection="music">Browse →</button>
157
+ </div>
158
+ </div>
159
+ </div>
160
+
161
+ <!-- Search Results (initially hidden) -->
162
+ <div id="results-container" class="hidden">
163
+ <div class="flex justify-between items-center mb-6">
164
+ <h2 id="results-title" class="text-2xl font-semibold text-gray-800">Search Results</h2>
165
+ <div class="flex items-center">
166
+ <span class="text-sm text-gray-600 mr-2">Sort by:</span>
167
+ <select id="sort-by" class="border rounded px-2 py-1 text-sm bg-white">
168
+ <option value="relevance">Relevance</option>
169
+ <option value="newest">Newest First</option>
170
+ <option value="oldest">Oldest First</option>
171
+ </select>
172
+ </div>
173
+ </div>
174
+
175
+ <div id="results-list" class="space-y-6">
176
+ <!-- Results will be populated here by JavaScript -->
177
+ </div>
178
+
179
+ <div class="flex justify-center mt-8">
180
+ <button id="load-more" class="bg-gray-100 hover:bg-gray-200 px-4 py-2 rounded text-gray-700">
181
+ Load More Results
182
+ </button>
183
+ </div>
184
+ </div>
185
+
186
+ <!-- Recent Searches -->
187
+ <div id="recent-searches" class="bg-white bg-opacity-70 backdrop-filter backdrop-blur-sm p-6 rounded-lg shadow-sm mt-12">
188
+ <h2 class="text-xl font-semibold mb-4 text-gray-800">Recent Searches</h2>
189
+ <div class="flex flex-wrap gap-2">
190
+ <!-- Recent searches will be populated here -->
191
+ <span class="text-gray-600">No recent searches yet</span>
192
+ </div>
193
+ </div>
194
+ </div>
195
+
196
+ <script>
197
+ document.addEventListener('DOMContentLoaded', function() {
198
+ const searchInput = document.getElementById('search-input');
199
+ const searchButton = document.getElementById('search-button');
200
+ const yearSlider = document.getElementById('year-slider');
201
+ const yearDisplay = document.getElementById('year-display');
202
+ const filterButtons = document.querySelectorAll('.filter-btn');
203
+ const collectionButtons = document.querySelectorAll('.collection-btn');
204
+ const resultsContainer = document.getElementById('results-container');
205
+ const resultsList = document.getElementById('results-list');
206
+ const resultsTitle = document.getElementById('results-title');
207
+ const sortBy = document.getElementById('sort-by');
208
+ const loadMore = document.getElementById('load-more');
209
+
210
+ // Typewriter effect for search placeholder
211
+ const placeholderTexts = [
212
+ "Search for '90s websites...",
213
+ "Look up classic software...",
214
+ "Find historical newspapers...",
215
+ "Explore concert recordings...",
216
+ "Discover vintage computer manuals..."
217
+ ];
218
+
219
+ let currentPlaceholder = 0;
220
+
221
+ function cyclePlaceholder() {
222
+ searchInput.placeholder = '';
223
+ const text = placeholderTexts[currentPlaceholder];
224
+ let i = 0;
225
+
226
+ const typeWriter = setInterval(() => {
227
+ if (i < text.length) {
228
+ searchInput.placeholder += text.charAt(i);
229
+ i++;
230
+ } else {
231
+ clearInterval(typeWriter);
232
+ setTimeout(() => {
233
+ currentPlaceholder = (currentPlaceholder + 1) % placeholderTexts.length;
234
+ cyclePlaceholder();
235
+ }, 3000);
236
+ }
237
+ }, 100);
238
+ }
239
+
240
+ // Start the placeholder animation
241
+ setTimeout(cyclePlaceholder, 1000);
242
+
243
+ // Update year display when slider moves
244
+ yearSlider.addEventListener('input', function() {
245
+ yearDisplay.textContent = this.value;
246
+ });
247
+
248
+ // Set filter button
249
+ filterButtons.forEach(button => {
250
+ button.addEventListener('click', function() {
251
+ const type = this.getAttribute('data-type');
252
+ searchInput.placeholder = `Search ${type} collections...`;
253
+ searchInput.focus();
254
+
255
+ // Highlight selected filter
256
+ filterButtons.forEach(btn => btn.classList.remove('bg-blue-100', 'text-blue-700'));
257
+ this.classList.add('bg-blue-100', 'text-blue-700');
258
+ });
259
+ });
260
+
261
+ // Set collection button
262
+ collectionButtons.forEach(button => {
263
+ button.addEventListener('click', function() {
264
+ const collection = this.getAttribute('data-collection');
265
+ performSearch('', collection);
266
+ });
267
+ });
268
+
269
+ // Perform search function (mock implementation)
270
+ function performSearch(query, collection = '') {
271
+ if (!query && !collection) return;
272
+
273
+ // Show loading state
274
+ resultsList.innerHTML = '<div class="text-center py-12"><i class="fas fa-spinner fa-spin text-4xl text-blue-500 mb-4"></i><p>Searching the archives...</p></div>';
275
+ resultsContainer.classList.remove('hidden');
276
+
277
+ // Update title
278
+ let title = 'Search Results';
279
+ if (collection === 'software') title = 'Software Library';
280
+ else if (collection === 'news') title = 'News & Magazines';
281
+ else if (collection === 'music') title = 'Live Music Archive';
282
+ resultsTitle.textContent = title;
283
+
284
+ // Store recent search
285
+ if (query) {
286
+ storeRecentSearch(query);
287
+ }
288
+
289
+ // Simulate API delay
290
+ setTimeout(() => {
291
+ // Mock data
292
+ const mockResults = generateMockResults(query, collection);
293
+ displayResults(mockResults);
294
+ }, 1500);
295
+ }
296
+
297
+ // Generate mock results
298
+ function generateMockResults(query, collection) {
299
+ const collections = {
300
+ 'software': ['Windows 95', 'Mac OS 7', 'MS-DOS 6.22', 'Linux 0.01', 'Netscape Navigator'],
301
+ 'news': ['Time Magazine 1999', 'Newsweek 2001', 'Wired 1995', 'National Geographic 1985', 'PC Magazine 1990'],
302
+ 'music': ['Grateful Dead 1977', 'Nirvana 1993', 'Radiohead 2001', 'Pink Floyd 1980', 'The Beatles 1966'],
303
+ '': ['Wayback Machine', 'Classic Websites', 'Vintage Computers', 'Historical Documents', 'Old Books Collection']
304
+ };
305
+
306
+ const results = collections[collection] || [
307
+ `Results for "${query}" from ${yearDisplay.textContent}`,
308
+ 'Internet history archive',
309
+ 'Digital preservation project',
310
+ 'Historical web pages collection',
311
+ 'Public domain media library'
312
+ ];
313
+
314
+ return results.map((title, index) => ({
315
+ id: Date.now() + index,
316
+ title: collection ? title : `${title} (${2000 + index})`,
317
+ description: `This is a sample description of ${title.toLowerCase()}. The Internet Archive is a non-profit library of millions of free books, movies, software, music, websites, and more.`,
318
+ type: collection || ['web', 'text', 'video', 'audio', 'software'][index % 5],
319
+ url: `https://archive.org/details/${title.toLowerCase().replace(/\s+/g, '-')}`,
320
+ date: new Date(2000 + index, index % 12, (index % 28) + 1).toLocaleDateString()
321
+ }));
322
+ }
323
+
324
+ // Display results
325
+ function displayResults(results) {
326
+ resultsList.innerHTML = '';
327
+
328
+ if (results.length === 0) {
329
+ resultsList.innerHTML = '<div class="text-center py-12 text-gray-500">No results found. Try a different search.</div>';
330
+ return;
331
+ }
332
+
333
+ results.forEach(result => {
334
+ const typeIcons = {
335
+ 'web': 'fas fa-globe',
336
+ 'text': 'fas fa-book',
337
+ 'video': 'fas fa-film',
338
+ 'audio': 'fas fa-headphones',
339
+ 'software': 'fas fa-file-code'
340
+ };
341
+
342
+ const resultItem = document.createElement('div');
343
+ resultItem.className = 'vintage-card bg-white p-6 rounded-lg hover:shadow-md transition-shadow fade-in';
344
+ resultItem.innerHTML = `
345
+ <div class="flex items-start">
346
+ <div class="flex-shrink-0">
347
+ <i class="${typeIcons[result.type] || 'fas fa-archive'} text-xl text-yellow-600 mr-4 mt-1"></i>
348
+ </div>
349
+ <div>
350
+ <h3 class="text-lg font-semibold text-blue-700 mb-1">
351
+ <a href="${result.url}" target="_blank" class="hover:underline">${result.title}</a>
352
+ </h3>
353
+ <p class="text-gray-600 text-sm mb-2">${result.description}</p>
354
+ <div class="flex items-center text-xs text-gray-500">
355
+ <span class="inline-block px-2 py-1 bg-gray-100 rounded-full mr-2">${result.type}</span>
356
+ <span>${result.date}</span>
357
+ </div>
358
+ </div>
359
+ </div>
360
+ `;
361
+ resultsList.appendChild(resultItem);
362
+ });
363
+ }
364
+
365
+ // Store recent search
366
+ function storeRecentSearch(query) {
367
+ let recentSearches = JSON.parse(localStorage.getItem('recentSearches')) || [];
368
+ recentSearches = recentSearches.filter(item => item !== query);
369
+ recentSearches.unshift(query);
370
+ recentSearches = recentSearches.slice(0, 5);
371
+ localStorage.setItem('recentSearches', JSON.stringify(recentSearches));
372
+
373
+ updateRecentSearchesDisplay();
374
+ }
375
+
376
+ // Update recent searches display
377
+ function updateRecentSearchesDisplay() {
378
+ const recentSearches = JSON.parse(localStorage.getItem('recentSearches')) || [];
379
+ const recentSearchesContainer = document.querySelector('#recent-searches > div');
380
+
381
+ if (recentSearches.length === 0) {
382
+ recentSearchesContainer.innerHTML = '<span class="text-gray-600">No recent searches yet</span>';
383
+ return;
384
+ }
385
+
386
+ recentSearchesContainer.innerHTML = '';
387
+ recentSearches.forEach(search => {
388
+ const searchPill = document.createElement('span');
389
+ searchPill.className = 'inline-block px-3 py-1 bg-gray-100 hover:bg-gray-200 rounded-full text-gray-700 cursor-pointer transition-colors';
390
+ searchPill.textContent = search;
391
+ searchPill.addEventListener('click', () => {
392
+ searchInput.value = search;
393
+ searchInput.focus();
394
+ });
395
+ recentSearchesContainer.appendChild(searchPill);
396
+ });
397
+ }
398
+
399
+ // Load more results
400
+ loadMore.addEventListener('click', function() {
401
+ const currentQuery = searchInput.value;
402
+ const mockResults = generateMockResults(currentQuery, '');
403
+ displayResults(mockResults);
404
+ });
405
+
406
+ // Search event listeners
407
+ searchButton.addEventListener('click', () => {
408
+ const query = searchInput.value.trim();
409
+ if (query) {
410
+ performSearch(query);
411
+ }
412
+ });
413
+
414
+ searchInput.addEventListener('keypress', (e) => {
415
+ if (e.key === 'Enter') {
416
+ const query = searchInput.value.trim();
417
+ if (query) {
418
+ performSearch(query);
419
+ }
420
+ }
421
+ });
422
+
423
+ // Sort results
424
+ sortBy.addEventListener('change', function() {
425
+ // In a real implementation, this would re-fetch sorted results
426
+ console.log('Sorting by:', this.value);
427
+ });
428
+
429
+ // Initialize recent searches display
430
+ updateRecentSearchesDisplay();
431
+
432
+ // Auto-focus search input
433
+ searchInput.focus();
434
+ });
435
+ </script>
436
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=silos559/webs" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
437
+ </html>
prompts.txt ADDED
File without changes