Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 187 additions & 0 deletions XsenViewer.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "view-in-github"
},
"source": [
"<a href=\"https://colab.research.google.com/github/dahyunk-snu/splat/blob/main/XsenViewer.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "npKH6fN4AfYO",
"outputId": "daf581dc-0603-4624-e3d4-980d3bb5c3f7"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cloning into 'splat'...\n",
"remote: Enumerating objects: 169, done.\u001b[K\n",
"remote: Counting objects: 100% (98/98), done.\u001b[K\n",
"remote: Compressing objects: 100% (39/39), done.\u001b[K\n",
"remote: Total 169 (delta 80), reused 59 (delta 59), pack-reused 71 (from 2)\u001b[K\n",
"Receiving objects: 100% (169/169), 6.29 MiB | 12.84 MiB/s, done.\n",
"Resolving deltas: 100% (95/95), done.\n",
"--2025-12-23 16:21:02-- https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb\n",
"Resolving github.com (github.com)... 140.82.112.3\n",
"Connecting to github.com (github.com)|140.82.112.3|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://github.com/cloudflare/cloudflared/releases/download/2025.11.1/cloudflared-linux-amd64.deb [following]\n",
"--2025-12-23 16:21:02-- https://github.com/cloudflare/cloudflared/releases/download/2025.11.1/cloudflared-linux-amd64.deb\n",
"Reusing existing connection to github.com:443.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://release-assets.githubusercontent.com/github-production-release-asset/106867604/8a32f7c6-649c-4f0d-806d-e14c19d0786d?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-12-23T17%3A12%3A59Z&rscd=attachment%3B+filename%3Dcloudflared-linux-amd64.deb&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-12-23T16%3A12%3A56Z&ske=2025-12-23T17%3A12%3A59Z&sks=b&skv=2018-11-09&sig=aVPaI%2BqTJ0USgLcrjjtNENeD329dNh4x5Q1Y5ZF3iVA%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc2NjUwODU1MywibmJmIjoxNzY2NTA2NzUzLCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.wlvjfm3-tDyGQGRR6i1MeRbFj1CCHXSNSMStrvbcKIE&response-content-disposition=attachment%3B%20filename%3Dcloudflared-linux-amd64.deb&response-content-type=application%2Foctet-stream [following]\n",
"--2025-12-23 16:21:02-- https://release-assets.githubusercontent.com/github-production-release-asset/106867604/8a32f7c6-649c-4f0d-806d-e14c19d0786d?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-12-23T17%3A12%3A59Z&rscd=attachment%3B+filename%3Dcloudflared-linux-amd64.deb&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-12-23T16%3A12%3A56Z&ske=2025-12-23T17%3A12%3A59Z&sks=b&skv=2018-11-09&sig=aVPaI%2BqTJ0USgLcrjjtNENeD329dNh4x5Q1Y5ZF3iVA%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc2NjUwODU1MywibmJmIjoxNzY2NTA2NzUzLCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.wlvjfm3-tDyGQGRR6i1MeRbFj1CCHXSNSMStrvbcKIE&response-content-disposition=attachment%3B%20filename%3Dcloudflared-linux-amd64.deb&response-content-type=application%2Foctet-stream\n",
"Resolving release-assets.githubusercontent.com (release-assets.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n",
"Connecting to release-assets.githubusercontent.com (release-assets.githubusercontent.com)|185.199.108.133|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 20192500 (19M) [application/octet-stream]\n",
"Saving to: ‘/content/cloudflared-linux-amd64.deb’\n",
"\n",
"/content/cloudflare 100%[===================>] 19.26M --.-KB/s in 0.1s \n",
"\n",
"2025-12-23 16:21:03 (129 MB/s) - ‘/content/cloudflared-linux-amd64.deb’ saved [20192500/20192500]\n",
"\n",
"(Reading database ... 117532 files and directories currently installed.)\n",
"Preparing to unpack cloudflared-linux-amd64.deb ...\n",
"Unpacking cloudflared (2025.11.1) over (2025.11.1) ...\n",
"Setting up cloudflared (2025.11.1) ...\n",
"Processing triggers for man-db (2.10.2-1) ...\n"
]
}
],
"source": [
"!git clone --branch 0.0.1 --single-branch https://github.com/dahyunk-snu/splat\n",
"!wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -O /content/cloudflared-linux-amd64.deb\n",
"!dpkg -i cloudflared-linux-amd64.deb"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "88xKxEOcAuwn",
"outputId": "85509625-965d-4b08-c42f-ae783744bba8"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<>:12: SyntaxWarning: invalid escape sequence '\\/'\n",
"<>:12: SyntaxWarning: invalid escape sequence '\\/'\n",
"/tmp/ipython-input-969851764.py:12: SyntaxWarning: invalid escape sequence '\\/'\n",
" tunnel_url = re.search(\"(?P<url>https?:\\/\\/[^\\s]+.trycloudflare.com)\", requests.get(f'http://127.0.0.1:{metrics_port}/metrics').text).group(\"url\")\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"https://published-trans-try-newman.trycloudflare.com\n",
"/content/splat\n",
"Serving HTTP on 0.0.0.0 port 7860 (http://0.0.0.0:7860/) ...\n",
"127.0.0.1 - - [23/Dec/2025 16:21:37] \"GET / HTTP/1.1\" 200 -\n",
"127.0.0.1 - - [23/Dec/2025 16:21:38] \"GET /main.js HTTP/1.1\" 200 -\n",
"127.0.0.1 - - [23/Dec/2025 16:21:38] \"GET /output.splat HTTP/1.1\" 200 -\n",
"127.0.0.1 - - [23/Dec/2025 16:21:39] code 404, message File not found\n",
"127.0.0.1 - - [23/Dec/2025 16:21:39] \"GET /favicon.ico HTTP/1.1\" 404 -\n",
"----------------------------------------\n",
"Exception occurred during processing of request from ('127.0.0.1', 55396)\n",
"Traceback (most recent call last):\n",
" File \"/usr/lib/python3.12/socketserver.py\", line 697, in process_request_thread\n",
" self.finish_request(request, client_address)\n",
" File \"/usr/lib/python3.12/http/server.py\", line 1311, in finish_request\n",
" self.RequestHandlerClass(request, client_address, self,\n",
" File \"/usr/lib/python3.12/http/server.py\", line 672, in __init__\n",
" super().__init__(*args, **kwargs)\n",
" File \"/usr/lib/python3.12/socketserver.py\", line 766, in __init__\n",
" self.handle()\n",
" File \"/usr/lib/python3.12/http/server.py\", line 436, in handle\n",
" self.handle_one_request()\n",
" File \"/usr/lib/python3.12/http/server.py\", line 424, in handle_one_request\n",
" method()\n",
" File \"/usr/lib/python3.12/http/server.py\", line 679, in do_GET\n",
" self.copyfile(f, self.wfile)\n",
" File \"/usr/lib/python3.12/http/server.py\", line 878, in copyfile\n",
" shutil.copyfileobj(source, outputfile)\n",
" File \"/usr/lib/python3.12/shutil.py\", line 204, in copyfileobj\n",
" fdst_write(buf)\n",
" File \"/usr/lib/python3.12/socketserver.py\", line 845, in write\n",
" self._sock.sendall(b)\n",
"ConnectionResetError: [Errno 104] Connection reset by peer\n",
"----------------------------------------\n",
"\n",
"Keyboard interrupt received, exiting.\n"
]
}
],
"source": [
"import atexit, requests, subprocess, time, re, os\n",
"from random import randint\n",
"from threading import Timer\n",
"from queue import Queue\n",
"def cloudflared(port, metrics_port, output_queue):\n",
" atexit.register(lambda p: p.terminate(), subprocess.Popen(['cloudflared', 'tunnel', '--url', f'http://127.0.0.1:{port}', '--metrics', f'127.0.0.1:{metrics_port}'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT))\n",
" attempts, tunnel_url = 0, None\n",
" while attempts < 10 and not tunnel_url:\n",
" attempts += 1\n",
" time.sleep(3)\n",
" try:\n",
" tunnel_url = re.search(\"(?P<url>https?:\\/\\/[^\\s]+.trycloudflare.com)\", requests.get(f'http://127.0.0.1:{metrics_port}/metrics').text).group(\"url\")\n",
" except:\n",
" pass\n",
" if not tunnel_url:\n",
" raise Exception(\"Can't connect to Cloudflare Edge\")\n",
" output_queue.put(tunnel_url)\n",
"output_queue, metrics_port = Queue(), randint(8100, 9000)\n",
"thread = Timer(2, cloudflared, args=(7860, metrics_port, output_queue))\n",
"thread.start()\n",
"thread.join()\n",
"tunnel_url = output_queue.get()\n",
"os.environ['webui_url'] = tunnel_url\n",
"print(tunnel_url)\n",
"%cd /content/splat\n",
"!python -m http.server 7860"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "1dApd29AA-yN"
},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"authorship_tag": "ABX9TyNHaS27pg6CY4E0cW4ufqoh",
"include_colab_link": true,
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Loading