Files changed (5) hide show
  1. 1.py +0 -39
  2. index.html +304 -155
  3. index3.html +0 -156
  4. requirements.txt +0 -1
  5. up.py +23 -0
1.py DELETED
@@ -1,39 +0,0 @@
1
- from huggingface_hub import HfApi
2
-
3
- # --- CONFIGURATION ---
4
- # 1. Hugging Face Settings se 'Write' Token yahan copy-paste karein
5
- #HF_TOKEN = "PASTE_YOUR_WRITE_TOKEN_HERE"
6
-
7
- # 2. Aapka Repo ID (Screenshot ke mutabiq)
8
- REPO_ID = "Studytime171/lalit"
9
-
10
- # 3. Archive Link aur File Name
11
- FILE_URL = "https://archive.org/download/windows-7x-86-supernano-final/Windows7SuperNanoLite.iso"
12
- FILE_NAME = "Windows7SuperNanoLite.iso"
13
-
14
- def start_remote_upload():
15
- #api = HfApi(token=HF_TOKEN)
16
-
17
- print(f"Starting remote transfer to {REPO_ID}...")
18
-
19
- try:
20
- # Ye command direct server-to-server transfer karegi
21
- api.add_from_url(
22
- url=FILE_URL,
23
- path_in_repo=FILE_NAME,
24
- repo_id=REPO_ID,
25
- repo_type="space" # Kyunki aap 'Space' use kar rahe hain
26
- )
27
-
28
- print("-" * 30)
29
- print("SUCCESS: Remote transfer trigger ho gaya hai!")
30
- print(f"Check progress here: https://huggingface.co/spaces/{REPO_ID}/tree/main")
31
- print("-" * 30)
32
- print("Ab aap browser band kar sakte hain, transfer background mein chalta rahega.")
33
-
34
- except Exception as e:
35
- print(f"Error: {e}")
36
- print("Check karein ki aapka Token 'Write' permission wala hai ya nahi.")
37
-
38
- if __name__ == "__main__":
39
- start_remote_upload()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
index.html CHANGED
@@ -1,156 +1,305 @@
1
- <!DOCTYPE html>
2
  <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Lalit Gangwani</title>
6
- <meta property="og:title" content="Lalit Gangwani"/>
7
- <meta property="og:type" content="website"/>
8
- <meta property="og:site_name" content="Lalit Gangwani"/>
9
- <meta name="theme-color" content="#000000"/>
10
- <meta name="mobile-web-app-capable" content="yes"/>
11
- <meta name="apple-mobile-web-app-capable" content="yes"/>
12
- <link rel="manifest" href="VirtualXP.json"/>
13
- <link rel="icon" sizes="16x16" type="image/png" href="VirtualXPFavIcon_16x16.png"/>
14
- <link rel="icon" sizes="192x192" type="image/png" href="VirtualXPFavIcon_192x192.png"/>
15
- <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
16
- <style>
17
- html,body{background-color:black;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;cursor:default}
18
- #canvas{position:fixed;left:0;right:0;top:0;bottom:0;height:100%;width:100%}
19
-
20
- .percentage{position:fixed;width:64px;height:64px;left:0;right:0;top:120px;bottom:0;margin:auto auto;border:0;font-family:Arial;font-weight:bold;font-size:20px;background-color:black;color:white;text-align:center}
21
- .pleasewait{position:fixed;width:64px;height:64px;left:0;right:0;top:-50px;bottom:0;margin:auto auto;border:0}
22
- .lds-spinner{color:white;display:inline-block;position:relative;width:64px;height:64px}
23
- .lds-spinner div{transform-origin:32px 32px;animation:lds-spinner 1.2s linear infinite}
24
- .lds-spinner div:after{content:" ";display:block;position:fixed;top:3px;left:29px;width:5px;height:14px;border-radius:20%;background:white}
25
- .lds-spinner div:nth-child(1){transform:rotate(0deg);animation-delay:-1.1s}
26
- .lds-spinner div:nth-child(2){transform:rotate(30deg);animation-delay:-1s}
27
- .lds-spinner div:nth-child(3){transform:rotate(60deg);animation-delay:-0.9s}
28
- .lds-spinner div:nth-child(4){transform:rotate(90deg);animation-delay:-0.8s}
29
- .lds-spinner div:nth-child(5){transform:rotate(120deg);animation-delay:-0.7s}
30
- .lds-spinner div:nth-child(6){transform:rotate(150deg);animation-delay:-0.6s}
31
- .lds-spinner div:nth-child(7){transform:rotate(180deg);animation-delay:-0.5s}
32
- .lds-spinner div:nth-child(8){transform:rotate(210deg);animation-delay:-0.4s}
33
- .lds-spinner div:nth-child(9){transform:rotate(240deg);animation-delay:-0.3s}
34
- .lds-spinner div:nth-child(10){transform:rotate(270deg);animation-delay:-0.2s}
35
- .lds-spinner div:nth-child(11){transform:rotate(300deg);animation-delay:-0.1s}
36
- .lds-spinner div:nth-child(12){transform:rotate(330deg);animation-delay:0s}
37
- @keyframes lds-spinner{0%{opacity:1}100%{opacity:0}}
38
- </style>
39
- </head>
40
- <body>
41
- <div class="pleasewait"><div class="lds-spinner"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div></div>
42
- <div class="percentage"></div>
43
- <canvas id="canvas" width="800" height="600"></canvas>
44
-
45
- <script src="VirtualXPLoader.js"></script>
46
- <script>
47
- var finalResponse;
48
- function getISOImage()
49
- {
50
- var oReq = new XMLHttpRequest();
51
- oReq.open("GET", "VirtualXP.iso", true);
52
- oReq.responseType = "blob";
53
- oReq.onload = function (oEvent)
54
- {
55
- if (oReq.readyState==oReq.DONE)
56
- {
57
- if (oReq.status==200)
58
- {
59
- finalResponse = oReq.response;
60
- var opts = {reportSpeed: function(s){document.title = "Lalit Gangwani - " + s + " MIPS";}};
61
- // बेहतर परफॉरमेंस और स्पेस के लिए RAM को 512MB और VGA को 32MB किया गया
62
- opts.mem = "512";
63
- opts.vgamem = "32";
64
- opts.fast = true;
65
- opts.bios = "VirtualXPBIOS.bin";
66
- opts.vgabios = "VirtualXPVGA.bin";
67
- opts.apic = false;
68
- opts.acpi = false;
69
- opts.pci = false;
70
- opts.pcivga = false;
71
- opts.floppy = false;
72
- opts.winnt_hack = true;
73
- opts.canvas = document.getElementById("canvas");
74
- opts["cda"] = new File(["empty.txt"], "filename");
75
-
76
- var halfix = new Halfix(opts);
77
- halfix.init(function()
78
- {
79
- halfix.run();
80
- setInterval(function(){try{halfix.updateScreen();}catch(err){}}, 1000);
81
- setTimeout(function()
82
- {
83
- document.getElementsByClassName("pleasewait")[0].style.display = "none";
84
- document.getElementsByClassName("percentage")[0].style.display = "none";
85
- },5000);
86
- });
87
- }
88
- else
89
- {
90
- getISOImage();
91
- }
92
- }
93
- };
94
- oReq.onprogress = function (oEvent)
95
- {
96
- if (oEvent.total>0)
97
- {
98
- document.getElementsByClassName("percentage")[0].innerHTML = Math.floor(oEvent.loaded * 100 / oEvent.total) + "%";
99
- }
100
- };
101
- oReq.onerror = function(){setTimeout(function(){getISOImage();},1000);};
102
- oReq.ontimeout = function(e){setTimeout(function(){getISOImage();},1000);};
103
- oReq.send(null);
104
- }
105
-
106
- function blockSpecialKeys(e)
107
- {
108
- try
109
- {
110
- e = e || window.event;
111
- if (e.altKey || e.ctrlKey || e.metaKey || e.keyCode == 27)
112
- {
113
- e.preventDefault();
114
- e.stopPropagation();
115
- e.stopImmediatePropagation();
116
- }
117
- }
118
- catch(err)
119
- {
120
- }
121
- }
122
- window.oncontextmenu = function()
123
- {
124
- return false;
125
- }
126
- window.addEventListener("load", function()
127
- {
128
- document.getElementById("canvas").addEventListener("click",function(event)
129
- {
130
- try
131
- {
132
- document.getElementById("canvas").requestPointerLock();
133
- }
134
- catch(err)
135
- {
136
- }
137
- });
138
- document.addEventListener("keydown",function(e){blockSpecialKeys(e)});
139
- document.addEventListener("keypress",function(e){blockSpecialKeys(e)});
140
- document.addEventListener("keyup", function(e){blockSpecialKeys(e)});
141
- if (window.top == window.self)
142
- {
143
- getISOImage();
144
- }
145
- });
146
- if ("serviceWorker" in navigator)
147
- {
148
- navigator.serviceWorker.register("worker.js").then(function(registration)
149
- {
150
- }).catch(function(err)
151
- {
152
- });
153
- }
154
- </script>
155
- </body>
156
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
  <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Virtual x86</title>
6
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
+ <link rel="stylesheet" href="v86.css">
8
+ <!-- keep your original v86 bundle path unchanged -->
9
+ <script src="build/v86_all.js"></script>
10
+ </head>
11
+ <body style="font-family: Arial, sans-serif; background:#111; color:#eee;">
12
+
13
+ <div>
14
+ <div id="boot_options">
15
+ <h2 style="margin:0 0 8px 0">Virtual x86 - Boot Options</h2>
16
+ <hr>
17
+
18
+ <table>
19
+ <tr>
20
+ <td width="250">CD image</td>
21
+ <td>
22
+ <input type="file" id="cd_image"><br>
23
+ <input type="text" id="cd_url" placeholder="Or paste ISO/IMG URL (http(s)://...) or path" style="width:90%; margin-top:6px;"><br>
24
+ <div id="cd_display" style="font-size:12px; color:#bbb; margin-top:4px;">No file selected</div>
25
+ </td>
26
+ </tr>
27
+
28
+ <tr>
29
+ <td>Floppy disk image</td>
30
+ <td>
31
+ <input type="file" id="floppy_image"><br>
32
+ <input type="text" id="floppy_url" placeholder="Or paste floppy URL/path" style="width:90%; margin-top:6px;"><br>
33
+ <div id="floppy_display" style="font-size:12px; color:#bbb; margin-top:4px;">No file selected</div>
34
+ </td>
35
+ </tr>
36
+
37
+ <tr>
38
+ <td>Master Hard drive disk image</td>
39
+ <td>
40
+ <input type="file" id="hda_image"><br>
41
+ <input type="text" id="hda_url" placeholder="Or paste HDD URL/path" style="width:90%; margin-top:6px;"><br>
42
+ <div id="hda_display" style="font-size:12px; color:#bbb; margin-top:4px;">No file selected</div>
43
+ </td>
44
+ </tr>
45
+
46
+ <tr>
47
+ <td>Slave Hard drive disk image</td>
48
+ <td>
49
+ <input type="file" id="hdb_image"><br>
50
+ <input type="text" id="hdb_url" placeholder="Or paste second HDD URL/path" style="width:90%; margin-top:6px;"><br>
51
+ <div id="hdb_display" style="font-size:12px; color:#bbb; margin-top:4px;">No file selected</div>
52
+ </td>
53
+ </tr>
54
+
55
+ <tr>
56
+ <td>Multiboot kernel image</td>
57
+ <td>
58
+ <input type="file" id="multiboot_image"><br>
59
+ <input type="text" id="multiboot_url" placeholder="Or paste kernel image URL/path" style="width:90%; margin-top:6px;"><br>
60
+ <div id="multiboot_display" style="font-size:12px; color:#bbb; margin-top:4px;">No file selected</div>
61
+ </td>
62
+ </tr>
63
+
64
+ <tr>
65
+ <td colspan="2"><hr></td>
66
+ </tr>
67
+
68
+ <tr>
69
+ <td>Memory size</td>
70
+ <td>
71
+ <input id="memory_size" type="number" value="256" min="16" max="4096" step="16"> MB<br>
72
+ </td>
73
+ </tr>
74
+
75
+ <tr>
76
+ <td>Video Memory size</td>
77
+ <td>
78
+ <input id="video_memory_size" type="number" value="8" min="1" max="128" step="1"> MB<br>
79
+ </td>
80
+ </tr>
81
+
82
+ <tr>
83
+ <td colspan="2"><hr></td>
84
+ </tr>
85
+
86
+ <tr>
87
+ <td>Boot order</td>
88
+ <td>
89
+ <select id="boot_order">
90
+ <option value="213">CD / Floppy / Hard Disk</option>
91
+ <option value="123">CD / Hard Disk / Floppy</option>
92
+ <option value="231">Floppy / CD / Hard Disk</option>
93
+ <option value="321">Floppy / Hard Disk / CD</option>
94
+ <option value="312">Hard Disk / Floppy / CD</option>
95
+ <option value="132">Hard Disk / CD / Floppy</option>
96
+ </select>
97
+ </td>
98
+ </tr>
99
+ </table>
100
+
101
+ <br>
102
+ <button id="start_emulation" style="padding:8px 14px; font-size:16px;">Start Emulation</button>
103
+ <div id="status" style="margin-top:10px; font-size:13px; color:#cfc;"></div>
104
+ <br><br>
105
+ </div>
106
+
107
+ <div id="runtime_options" style="display: none; margin-bottom:8px;">
108
+ <input type="button" id="pause_btn" value="Pause">
109
+ <input type="button" id="reset_btn" value="Reset">
110
+ <input type="button" id="exit_btn" value="Exit">
111
+ <input type="button" id="send_cad" value="Send Ctrl-Alt-Del">
112
+ </div>
113
+
114
+ <pre style="margin: 0" id="log_levels"></pre>
115
+ <pre style="margin: 3px 0 0 0" id="debug_infos"></pre>
116
+ </div>
117
+
118
+ <!-- Screen container (keeps original structure) -->
119
+ <div id="screen_container" style="display: none; position: relative;">
120
+ <div id="screen"></div>
121
+ <canvas id="vga"></canvas>
122
+ <div style="position: absolute; top: 0; z-index: 10">
123
+ <textarea class="phone_keyboard"></textarea>
124
+ </div>
125
+ </div>
126
+
127
+ <textarea readonly id="log" style="display:none"></textarea>
128
+ <textarea spellcheck="false" cols="40" rows="12" id="serial" style="display:none"></textarea>
129
+
130
+ <script>
131
+ /*
132
+ IMPORTANT:
133
+ - This script reads selected local files into ArrayBuffers and passes them to v86.
134
+ - Browsers do NOT reveal real absolute local paths; the script shows file.name or the browser's fakepath.
135
+ - Keep your folders (build/, bios/) unchanged as requested.
136
+ */
137
+
138
+ (function() {
139
+ // Helper: read File -> ArrayBuffer
140
+ function readFileAsArrayBuffer(file) {
141
+ return new Promise(function(resolve, reject) {
142
+ var fr = new FileReader();
143
+ fr.onload = function() { resolve(fr.result); };
144
+ fr.onerror = function(e) { reject(e); };
145
+ fr.readAsArrayBuffer(file);
146
+ });
147
+ }
148
+
149
+ // Drives mapping
150
+ var drives = [
151
+ { fileId: "cd_image", textId: "cd_url", displayId: "cd_display", optionName: "cdrom" },
152
+ { fileId: "floppy_image", textId: "floppy_url", displayId: "floppy_display", optionName: "fda" },
153
+ { fileId: "hda_image", textId: "hda_url", displayId: "hda_display", optionName: "hda" },
154
+ { fileId: "hdb_image", textId: "hdb_url", displayId: "hdb_display", optionName: "hdb" },
155
+ { fileId: "multiboot_image", textId: "multiboot_url", displayId: "multiboot_display", optionName: "multiboot" }
156
+ ];
157
+
158
+ // Attach change handlers: autofill text and update display
159
+ drives.forEach(function(d) {
160
+ var fileInput = document.getElementById(d.fileId);
161
+ var textInput = document.getElementById(d.textId);
162
+ var display = document.getElementById(d.displayId);
163
+
164
+ if (!fileInput || !textInput || !display) return;
165
+
166
+ fileInput.addEventListener("change", function() {
167
+ if (fileInput.files && fileInput.files.length > 0) {
168
+ var f = fileInput.files[0];
169
+ // Browsers restrict absolute path; we show either browser-provided fake path or filename
170
+ // some browsers set fileInput.value to "C:\fakepath\filename.ext"
171
+ var shown = fileInput.value && fileInput.value.indexOf("fakepath") > -1 ? fileInput.value : f.name;
172
+ textInput.value = shown;
173
+ display.textContent = "Selected: " + shown;
174
+ } else {
175
+ textInput.value = "";
176
+ display.textContent = "No file selected";
177
+ }
178
+ });
179
+
180
+ textInput.addEventListener("input", function() {
181
+ display.textContent = this.value ? ("Path/URL: " + this.value) : "No file selected";
182
+ });
183
+ });
184
+
185
+ // Wait for v86 to be available
186
+ function v86Available() {
187
+ return (typeof V86Starter === "function" || typeof window.V86Starter === "function");
188
+ }
189
+
190
+ // Start emulator click
191
+ document.getElementById("start_emulation").addEventListener("click", async function() {
192
+ var status = document.getElementById("status");
193
+ status.textContent = "";
194
+ if (!v86Available()) {
195
+ status.style.color = "#f88";
196
+ status.textContent = "Error: v86 library not loaded - check build/v86_all.js is present.";
197
+ return;
198
+ }
199
+
200
+ // gather config
201
+ var memorySizeMb = parseInt(document.getElementById("memory_size").value, 10) || 256;
202
+ var videoMemoryMb = parseInt(document.getElementById("video_memory_size").value, 10) || 8;
203
+ var bootOrder = parseInt(document.getElementById("boot_order").value, 10) || 213;
204
+
205
+ // base options (keep your bios paths exactly)
206
+ var options = {
207
+ wasm_path: "build/v86.wasm",
208
+ memory_size: memorySizeMb * 1024 * 1024,
209
+ vga_memory_size: videoMemoryMb * 1024 * 1024,
210
+ screen_container: document.getElementById("screen_container"),
211
+ bios: { url: "bios/seabios.bin" },
212
+ vga_bios: { url: "bios/vgabios.bin" },
213
+ boot_order: bootOrder,
214
+ autostart: true
215
+ };
216
+
217
+ // read files if selected (async). If file chosen -> use buffer, else if text is a URL -> use url
218
+ try {
219
+ for (var i = 0; i < drives.length; i++) {
220
+ var d = drives[i];
221
+ var fileEl = document.getElementById(d.fileId);
222
+ var textEl = document.getElementById(d.textId);
223
+ var val = (textEl && textEl.value) ? textEl.value.trim() : "";
224
+
225
+ if (fileEl && fileEl.files && fileEl.files.length > 0) {
226
+ // read file to ArrayBuffer
227
+ status.style.color = "#ffc";
228
+ status.textContent = "Reading " + fileEl.files[0].name + " ...";
229
+ var buf = await readFileAsArrayBuffer(fileEl.files[0]);
230
+ // pass ArrayBuffer directly to v86
231
+ options[d.optionName] = { buffer: buf };
232
+ } else if (val) {
233
+ // If user typed a URL (http/https) we provide it as url, otherwise still pass as url (user knows their path)
234
+ options[d.optionName] = { url: val };
235
+ }
236
+ }
237
+ } catch (err) {
238
+ status.style.color = "#f88";
239
+ status.textContent = "Failed reading image file: " + (err && err.message ? err.message : err);
240
+ return;
241
+ }
242
+
243
+ // hide boot UI and show screen container + runtime controls
244
+ document.getElementById("boot_options").style.display = "none";
245
+ document.getElementById("screen_container").style.display = "block";
246
+ document.getElementById("runtime_options").style.display = "block";
247
+
248
+ status.style.color = "#cfc";
249
+ status.textContent = "Starting emulator... (this may take a few seconds)";
250
+
251
+ try {
252
+ // start v86
253
+ window.emulator = new V86Starter(options);
254
+
255
+ // wire up runtime buttons safely if emulator supports methods
256
+ var pauseBtn = document.getElementById("pause_btn");
257
+ var resetBtn = document.getElementById("reset_btn");
258
+ var exitBtn = document.getElementById("exit_btn");
259
+ var cadBtn = document.getElementById("send_cad");
260
+
261
+ if (pauseBtn) {
262
+ pauseBtn.addEventListener("click", function() {
263
+ try {
264
+ if (window.emulator && window.emulator.stop) {
265
+ window.emulator.stop();
266
+ }
267
+ } catch(e) { console.warn(e); }
268
+ });
269
+ }
270
+ if (resetBtn) {
271
+ resetBtn.addEventListener("click", function() {
272
+ try { window.emulator.reset(); } catch(e){ console.warn(e); }
273
+ });
274
+ }
275
+ if (exitBtn) {
276
+ exitBtn.addEventListener("click", function() {
277
+ try { window.emulator.stop(); } catch(e){ console.warn(e); }
278
+ // show boot options again
279
+ document.getElementById("boot_options").style.display = "block";
280
+ document.getElementById("runtime_options").style.display = "none";
281
+ document.getElementById("screen_container").style.display = "none";
282
+ });
283
+ }
284
+ if (cadBtn) {
285
+ cadBtn.addEventListener("click", function() {
286
+ try { window.emulator.keyboard_send_ctrl_alt_del(); } catch(e){
287
+ // fallback attempts
288
+ try { window.emulator.send_ctrl_alt_del(); } catch(_) { console.warn("send CtrlAltDel not supported"); }
289
+ }
290
+ });
291
+ }
292
+
293
+ status.style.color = "#cfc";
294
+ status.textContent = "Emulator started.";
295
+ } catch (e) {
296
+ status.style.color = "#f88";
297
+ status.textContent = "Failed to start emulator: " + (e && e.message ? e.message : e);
298
+ console.error(e);
299
+ }
300
+ });
301
+ })();
302
+ </script>
303
+
304
+ </body>
305
+ </html>
index3.html DELETED
@@ -1,156 +0,0 @@
1
- <!DOCTYPE html> //// यह ब्राउज़र को बताता है कि यह एक आधुनिक HTML5 पेज है ////
2
- <html lang="en"> //// यह पूरे पेज की भाषा को इंग्लिश सेट करता है ////
3
- <head> //// यहाँ पेज की सेटिंग्स और जानकारी स्टोर की जाती है ////
4
- <meta charset="UTF-8"> //// यह सुनिश्चित करता है कि आपके नाम के अक्षर हर ब्राउज़र में सही दिखें ////
5
- <title>Lalit Gangwani</title> //// यह ब्राउज़र के सबसे ऊपर टैब में आपका नाम दिखाता है ////
6
- <meta property="og:title" content="Lalit Gangwani"/> //// सोशल मीडिया पर लिंक भेजने पर आपका नाम दिखाने के लिए ////
7
- <meta property="og:type" content="website"/> //// यह बताता है कि यह कंटेंट एक वेबसाइट है ////
8
- <meta property="og:site_name" content="Lalit Gangwani"/> //// साइट के मालिक का नाम सेट करने के लिए ////
9
- <meta name="theme-color" content="#000000"/> //// मोबाइल पर ऊपर की पट्टी का रंग काला करने के लिए ////
10
- <meta name="mobile-web-app-capable" content="yes"/> //// इसे मोबाइल पर फुल स्क्रीन ऐप की तरह चलाने के लिए ////
11
- <meta name="apple-mobile-web-app-capable" content="yes"/> //// आईफोन यूजर्स के लिए फुल स्क्रीन सपोर्ट इनेबल करने के लिए ////
12
- <link rel="manifest" href="VirtualXP.json"/> //// ऐप की आइकन और सेटिंग्स फाइल को लिंक करता है ////
13
- <link rel="icon" sizes="16x16" type="image/png" href="VirtualXPFavIcon_16x16.png"/> //// ब्राउज़र टैब का छोटा आइकन सेट करता है ////
14
- <link rel="icon" sizes="192x192" type="image/png" href="VirtualXPFavIcon_192x192.png"/> //// मोबाइल होम स्क्रीन के लिए बड़ा आइकन सेट करता है ////
15
- <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=no"/> //// पेज को मोबाइल स्क्रीन के हिसाब से फिट करता है और ज़ूम रोकता है ////
16
- <style> //// यहाँ से पेज की सजावट (डिजाइन) शुरू होती है ////
17
- html,body{background-color:black;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;cursor:default} //// बैकग्राउंड काला करता है और टेक्स्ट कॉपी करना बंद करता है ////
18
- #canvas{position:fixed;left:0;right:0;top:0;bottom:0;height:100%;width:100%} //// विंडोज की स्क्रीन को पूरे फोन/पीसी पर फैला देता है ////
19
- .percentage{position:fixed;width:64px;height:64px;left:0;right:0;top:120px;bottom:0;margin:auto auto;border:0;font-family:Arial;font-weight:bold;font-size:20px;background-color:black;color:white;text-align:center} //// डाउनलोड परसेंट के दिखने का स्टाइल सेट करता है ////
20
- .pleasewait{position:fixed;width:64px;height:64px;left:0;right:0;top:-50px;bottom:0;margin:auto auto;border:0} //// लोडिंग एनीमेशन की जगह तय करता है ////
21
- .lds-spinner{color:white;display:inline-block;position:relative;width:64px;height:64px} //// स्पिनर का आकार और रंग सेट करता है ////
22
- .lds-spinner div{transform-origin:32px 32px;animation:lds-spinner 1.2s linear infinite} //// स्पिनर के घूमने की रफ़्तार तय करता है ////
23
- .lds-spinner div:after{content:" ";display:block;position:fixed;top:3px;left:29px;width:5px;height:14px;border-radius:20%;background:white} //// स्पिनर की एक-एक डंडी का डिजाइन बनाता है ////
24
- .lds-spinner div:nth-child(1){transform:rotate(0deg);animation-delay:-1.1s} //// स्पिनर की पहली डंडी की पोजीशन ////
25
- .lds-spinner div:nth-child(2){transform:rotate(30deg);animation-delay:-1s} //// स्पिनर की दूसरी डंडी की पोजीशन ////
26
- .lds-spinner div:nth-child(3){transform:rotate(60deg);animation-delay:-0.9s} //// स्पिनर की तीसरी डंडी की पोजीशन ////
27
- .lds-spinner div:nth-child(4){transform:rotate(90deg);animation-delay:-0.8s} //// स्पिनर की चौथी डंडी की पोजीशन ////
28
- .lds-spinner div:nth-child(5){transform:rotate(120deg);animation-delay:-0.7s} //// स्पिनर की पांचवीं डंडी की पोजीशन ////
29
- .lds-spinner div:nth-child(6){transform:rotate(150deg);animation-delay:-0.6s} //// स्पिनर की छठी डंडी की पोजीशन ////
30
- .lds-spinner div:nth-child(7){transform:rotate(180deg);animation-delay:-0.5s} //// स्पिनर की सातवीं डंडी की पोजीशन ////
31
- .lds-spinner div:nth-child(8){transform:rotate(210deg);animation-delay:-0.4s} //// स्पिनर की आठवीं डंडी की पोजीशन ////
32
- .lds-spinner div:nth-child(9){transform:rotate(240deg);animation-delay:-0.3s} //// स्पिनर की नौवीं डंडी की पोजीशन ////
33
- .lds-spinner div:nth-child(10){transform:rotate(270deg);animation-delay:-0.2s} //// स्पिनर की दसवीं डंडी की पोजीशन ////
34
- .lds-spinner div:nth-child(11){transform:rotate(300deg);animation-delay:-0.1s} //// स्पिनर की ग्यारहवीं डंडी की पोजीशन ////
35
- .lds-spinner div:nth-child(12){transform:rotate(330deg);animation-delay:0s} //// स्पिनर की बारहवीं डंडी की पोजीशन ////
36
- @keyframes lds-spinner{0%{opacity:1}100%{opacity:0}} //// स्पिनर के चमकने और बुझने का एनीमेशन इफेक्ट ////
37
- </style> //// डिजाइन सेक्शन यहाँ खत्म होता है ////
38
- </head> //// हेड सेक्शन यहाँ खत्म होता है ////
39
- <body> //// यहाँ से वो हिस्सा शुरू होता है जो स्क्रीन पर दिखता है ////
40
- <div class="pleasewait"><div class="lds-spinner"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div></div> //// लोडिंग स्पिनर को पेज पर डालता है ////
41
- <div class="percentage"></div> //// डाउनलोडिंग परसेंटेज यहाँ नंबर में दिखेगा ////
42
- <canvas id="canvas" height="600" width="800"></canvas> //// यह विंडोज की असली टीवी स्क्रीन है (साइज 800x600) ////
43
-
44
- <script src="VirtualXPLoader.js"></script> //// एमुलेटर को चलाने वाली मुख्य कोडिंग फाइल को लोड करता है ////
45
- <script> //// यहाँ से पेज का दिमाग यानी लॉजिक शुरू होता है ////
46
- var finalResponse; //// डाउनलोड की हुई विंडोज फाइल को रखने के लिए एक खाली बॉक्स ////
47
- function getISOImage() //// विंडोज की फाइल सर्वर से मांगने का फंक्शन ////
48
- {
49
- var oReq = new XMLHttpRequest(); //// सर्वर से फाइल मांगने की नई रिक्वेस्ट तैयार करता है ////
50
- oReq.open("GET", "VirtualXP.iso", true); //// सर्वर को बताता है कि "VirtualXP.iso" फाइल चाहिए ////
51
- oReq.responseType = "blob"; //// बताता है कि आने वाली फाइल एक बड़ा बाइनरी डेटा है ////
52
- oReq.onload = function (oEvent) //// जब फाइल पूरी डाउनलोड हो जाए तब यह कोड चलता है ////
53
- {
54
- if (oReq.readyState==oReq.DONE) //// चेक करता है कि रिक्वेस्ट का काम पूरा हुआ या नहीं ////
55
- {
56
- if (oReq.status==200) //// चेक करता है कि सर्वर ने फाइल सही सलामत भेजी है या नहीं ////
57
- {
58
- finalResponse = oReq.response; //// डाउनलोड फाइल को वेरिएबल में सेव करता है ////
59
- var opts = {reportSpeed: function(s){document.title = "Lalit Gangwani - " + s + " MIPS";}}; //// ब्राउज़र टैब में एमुलेटर की रफ़्तार दिखाता है ////
60
- opts.mem = "256"; //// एमुलेटर की रैम (RAM) को 256MB सेट करता है ताकि ज़्यादा स्पेस मिले ////
61
- opts.vgamem = "16"; //// ग्राफिक्स मेमोरी को 16MB सेट करता है ////
62
- opts.fast = true; //// एमुलेटर की स्पीड बढ़ाने के लिए फास्ट मोड इनेबल करता है ////
63
- opts.bios = "VirtualXPBIOS.bin"; //// कंप्यूटर की बेसिक सेटिंग्स वाली BIOS फाइल लोड करता है ////
64
- opts.vgabios = "VirtualXPVGA.bin"; //// ग्राफिक्स की सेटिंग्स वाली BIOS फाइल लोड करता है ////
65
- opts.apic = false; //// एडवांस कंट्रोलर बंद करता है ताकि क्रैश न हो ////
66
- opts.acpi = false; //// पावर मैनेजमेंट बंद करता है ताकि पुराने सिस्टम स्टेबल रहें ////
67
- opts.pci = false; //// हार्डवेयर कनेक्शन की सेटिंग बंद करता है ////
68
- opts.pcivga = false; //// ग्राफ़िक कार्ड कनेक्शन की सेटिंग बंद करता है ////
69
- opts.floppy = false; //// पुराने फ्लॉपी ड्राइव सपोर्ट को बंद करता है ////
70
- opts.winnt_hack = true; //// विंडोज XP को बिना एरर चलाने के लिए एक खास फिक्स है ////
71
- opts.canvas = document.getElementById("canvas"); //// बताता है कि विंडोज किस स्क्रीन (Canvas) पर दिखेगी ////
72
- opts["cda"] = new File(["empty.txt"], "filename"); //// सीडी ड्राइव को खाली रखने के लिए फाइल बनाता है ////
73
-
74
- var halfix = new Halfix(opts); //// इन सब सेटिंग्स के साथ नया वर्चुअल कंप्यूटर बनाता है ////
75
- halfix.init(function() //// कंप्यूटर को शुरू करने की तैयारी करता है ////
76
- {
77
- halfix.run(); //// कंप्यूटर का पावर बटन दबाकर उसे चालू करता है ////
78
- setInterval(function(){try{halfix.updateScreen();}catch(err){}}, 1000); //// हर सेकंड स्क्रीन को अपडेट करता है ताकि तस्वीर दिखे ////
79
- setTimeout(function() //// 5 सेकंड इंतजार करने का टाइमर है ////
80
- {
81
- document.getElementsByClassName("pleasewait")[0].style.display = "none"; //// लोडिंग स्पिनर को गायब करता है ////
82
- document.getElementsByClassName("percentage")[0].style.display = "none"; //// परसेंटेज नंबर को गायब करता है ////
83
- },5000); //// 5000 मिलीसेकंड यानी 5 सेकंड ////
84
- });
85
- }
86
- else
87
- {
88
- getISOImage(); //// अगर डाउनलोड में एरर आए तो दोबारा कोशिश करता है ////
89
- }
90
- }
91
- };
92
- oReq.onprogress = function (oEvent) //// डाउनलोडिंग कितनी हुई यह चेक करता रहता है ////
93
- {
94
- if (oEvent.total>0) //// अगर फाइल का कुल साइज पता है तो हिसाब लगाता है ////
95
- {
96
- document.getElementsByClassName("percentage")[0].innerHTML = Math.floor(oEvent.loaded * 100 / oEvent.total) + "%"; //// परसेंट नंबर को स्क्रीन पर अपडेट करता है ////
97
- }
98
- };
99
- oReq.onerror = function(){setTimeout(function(){getISOImage();},1000);}; //// इंटरनेट एरर आने पर 1 सेकंड बाद फिर ट्राई करता है ////
100
- oReq.ontimeout = function(e){setTimeout(function(){getISOImage();},1000);}; //// टाइम खत्म होने पर दोबारा कोशिश करता है ////
101
- oReq.send(null); //// सर्वर को फाइनल रिक्वेस्ट भेजता है ////
102
- }
103
-
104
- function blockSpecialKeys(e) //// कीबोर्ड के उन बटनों को रोकता है जो ब्राउज़र बंद कर सकते हैं ////
105
- {
106
- try
107
- {
108
- e = e || window.event; //// कीबोर्ड की जानकारी प्राप्त करता है ////
109
- if (e.altKey || e.ctrlKey || e.metaKey || e.keyCode == 27) //// चेक करता है कि Alt, Ctrl या Esc दबाया गया है या नहीं ////
110
- {
111
- e.preventDefault(); //// उस बटन का ब्राउज़र वाला काम रोक देता है ////
112
- e.stopPropagation(); //// इवेंट को आगे फैलने से रोकता है ////
113
- e.stopImmediatePropagation(); //// तुरंत पूरी तरह से बटन का काम बंद कर देता है ////
114
- }
115
- }
116
- catch(err)
117
- {
118
- }
119
- }
120
-
121
- window.oncontextmenu = function() //// माउस का राइट क्लिक मेनू बंद करता है ////
122
- {
123
- return false; //// राइट क्लिक करने पर कुछ नहीं खुलेगा ////
124
- }
125
-
126
- window.addEventListener("load", function() //// जब पूरी वेबसाइट लोड हो जाए तब यह कोड चलता है ////
127
- {
128
- document.getElementById("canvas").addEventListener("click",function(event) //// स्क्रीन पर कहीं भी क्लिक करने पर क्या होगा ////
129
- {
130
- try
131
- {
132
- document.getElementById("canvas").requestPointerLock(); //// माउस कर्सर को विंडोज स्क्रीन के अंदर कैद कर देता है ////
133
- }
134
- catch(err)
135
- {
136
- }
137
- });
138
- document.addEventListener("keydown",function(e){blockSpecialKeys(e)}); //// बटन दबाने पर ब्लॉकिंग चालू करता है ////
139
- document.addEventListener("keypress",function(e){blockSpecialKeys(e)}); //// बटन टाइप करने पर ब्लॉकिंग चालू करता है ////
140
- document.addEventListener("keyup", function(e){blockSpecialKeys(e)}); //// बटन छोड़ने पर ब्लॉकिंग चालू करता है ////
141
- if (window.top == window.self) //// चेक करता है कि यह किसी और वेबसाइट के फ्रेम में तो नहीं खुला है ////
142
- {
143
- getISOImage(); //// विंडोज लोड करने का काम शुरू करता है ////
144
- }
145
- });
146
- if ("serviceWorker" in navigator) //// तेज़ी से लोड होने और ऑफलाइन सपोर्ट के लिए सर्विस वर्कर चेक करता है ////
147
- {
148
- navigator.serviceWorker.register("worker.js").then(function(registration) //// 'worker.js' फाइल को रजिस्टर करता है ////
149
- {
150
- }).catch(function(err) //// अगर रजिस्ट्रेशन फेल हो जाए तो चुप रहता है ////
151
- {
152
- });
153
- }
154
- </script> //// जावास्क्रिप्ट सेक्शन यहाँ खत्म होता है ////
155
- </body> //// बॉडी सेक्शन यहाँ खत्म होता है ////
156
- </html> //// एचटीएमएल डॉक्यूमेंट यहाँ पूरी तरह खत्म होता है ////
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
requirements.txt DELETED
@@ -1 +0,0 @@
1
- https://dn720809.ca.archive.org/0/items/windows-7x-86-supernano-final/Windows7SuperNanoLite.iso
 
 
up.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from huggingface_hub import HfApi
2
+
3
+ api = HfApi()
4
+
5
+ # 1. Apne repo ka path yahan likhein (e.g., "username/my-windows-repo")
6
+ repo_id = "YOUR_USERNAME/YOUR_REPO_NAME"
7
+
8
+ # 2. Archive.org ka direct link
9
+ source_url = "https://archive.org/download/windows-7x-86-supernano-final/Windows7SuperNanoLite.iso"
10
+
11
+ print("Remote ki upload start ho raha hai...")
12
+
13
+ try:
14
+ api.add_from_url(
15
+ url=source_url,
16
+ path_in_repo="Windows7SuperNanoLite.iso", # Repo mein kis naam se dikhe
17
+ repo_id=repo_id,
18
+ repo_type="model" # Agar aapne 'model' repo banaya hai
19
+ )
20
+ print("Request submit ho gayi hai! Hugging Face backend par file transfer kar raha hai.")
21
+ print(f"Apni files yahan check karein: https://huggingface.co/{repo_id}")
22
+ except Exception as e:
23
+ print(f"Kuch error aaya: {e}")