Download index.html from Mohmmad35883736/darkpythonplayground: direct link, hf CLI and curl.
- Browser
- Download file 5.57 kB
-
https://huggingface.co/spaces/Mohmmad35883736/darkpythonplayground/resolve/main/index.html
- Command line
-
hf download hf://spaces/Mohmmad35883736/darkpythonplayground/index.html
-
curl -L -o index.html https://huggingface.co/spaces/Mohmmad35883736/darkpythonplayground/resolve/main/index.html
5.57 kB
| <html lang="en" class="dark"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Python Code Runner</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <script src="https://cdn.jsdelivr.net/pyodide/v0.23.4/full/pyodide.js"></script> | |
| <style> | |
| .cm-editor { | |
| height: 100% ; | |
| font-size: 14px ; | |
| } | |
| .cm-scroller { | |
| font-family: 'Fira Code', monospace ; | |
| } | |
| .cm-gutters { | |
| background-color: #111827 ; | |
| border-right: 1px solid #374151 ; | |
| } | |
| .cm-activeLineGutter { | |
| background-color: #1f2937 ; | |
| } | |
| .cm-content { | |
| caret-color: white ; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-900 text-gray-100 min-h-screen flex flex-col"> | |
| <header class="bg-black border-b border-gray-800 py-4 px-6"> | |
| <div class="flex items-center justify-between"> | |
| <div class="flex items-center space-x-2"> | |
| <i data-feather="code" class="text-green-500"></i> | |
| <h1 class="text-xl font-bold">DarkPythonPlayground</h1> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <button id="run-btn" class="bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-md flex items-center space-x-2 transition duration-200"> | |
| <i data-feather="play" class="w-4 h-4"></i> | |
| <span>Run</span> | |
| </button> | |
| <button id="theme-toggle" class="p-2 rounded-md hover:bg-gray-800 transition duration-200"> | |
| <i data-feather="moon" class="w-5 h-5"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </header> | |
| <main class="flex-1 flex flex-col md:flex-row overflow-hidden"> | |
| <div class="flex-1 border-r border-gray-800 overflow-hidden"> | |
| <div id="editor" class="h-full w-full"></div> | |
| </div> | |
| <div class="flex-1 flex flex-col overflow-hidden"> | |
| <div class="border-b border-gray-800 py-2 px-4 flex items-center"> | |
| <i data-feather="terminal" class="text-green-500 mr-2"></i> | |
| <h2 class="font-medium">Output</h2> | |
| </div> | |
| <div id="output" class="flex-1 overflow-auto p-4 font-mono text-sm bg-gray-800"></div> | |
| </div> | |
| </main> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/codemirror.min.js"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/mode/python/python.min.js"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/addon/edit/matchbrackets.min.js"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/addon/edit/closebrackets.min.js"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/theme/dracula.min.js"></script> | |
| <script> | |
| feather.replace(); | |
| let pyodide; | |
| async function initializePyodide() { | |
| pyodide = await loadPyodide({ | |
| indexURL: "https://cdn.jsdelivr.net/pyodide/v0.23.4/full/" | |
| }); | |
| await pyodide.loadPackage("micropip"); | |
| } | |
| const editor = CodeMirror(document.getElementById('editor'), { | |
| mode: 'python', | |
| lineNumbers: true, | |
| theme: 'dracula', | |
| autoCloseBrackets: true, | |
| matchBrackets: true, | |
| indentUnit: 4, | |
| tabSize: 4, | |
| value: `# Welcome to DarkPythonPlayground!\n# Write your Python code here and click Run\n\ndef greet(name):\n return f"Hello, {name}!"\n\nprint(greet("Python Developer"))` | |
| }); | |
| document.getElementById('run-btn').addEventListener('click', async () => { | |
| if (!pyodide) { | |
| await initializePyodide(); | |
| } | |
| const code = editor.getValue(); | |
| const outputDiv = document.getElementById('output'); | |
| outputDiv.innerHTML = '<span class="text-gray-400">Running...</span>'; | |
| try { | |
| const result = await pyodide.runPythonAsync(code); | |
| if (result !== undefined) { | |
| outputDiv.innerHTML = `<span class="text-green-400">${result}</span>`; | |
| } else { | |
| outputDiv.innerHTML = '<span class="text-green-400">Code executed successfully!</span>'; | |
| } | |
| } catch (error) { | |
| outputDiv.innerHTML = `<span class="text-red-400">${error}</span>`; | |
| } | |
| }); | |
| // Theme toggle | |
| const themeToggle = document.getElementById('theme-toggle'); | |
| themeToggle.addEventListener('click', () => { | |
| const html = document.documentElement; | |
| if (html.classList.contains('dark')) { | |
| html.classList.remove('dark'); | |
| themeToggle.innerHTML = '<i data-feather="sun" class="w-5 h-5"></i>'; | |
| feather.replace(); | |
| } else { | |
| html.classList.add('dark'); | |
| themeToggle.innerHTML = '<i data-feather="moon" class="w-5 h-5"></i>'; | |
| feather.replace(); | |
| } | |
| }); | |
| </script> | |
| </body> | |
| </html> | |