diff --git a/local-fs/.pyscript.com/manifest.json b/local-fs/.pyscript.com/manifest.json
new file mode 100644
index 0000000..e061814
--- /dev/null
+++ b/local-fs/.pyscript.com/manifest.json
@@ -0,0 +1,5 @@
+{
+ "project_id": "8b39db48-f8ba-487e-bc77-15b94bc56a1c",
+ "user_id": "7589ccb7-f838-4034-abea-5550f0e8d949",
+ "url": "https://fpliger.pyscriptapps.com/local-fs/latest/"
+}
\ No newline at end of file
diff --git a/local-fs/files.py b/local-fs/files.py
new file mode 100644
index 0000000..9b752cd
--- /dev/null
+++ b/local-fs/files.py
@@ -0,0 +1,22 @@
+from pyscript import window
+
+class Files:
+ def __init__(self):
+ self.folder = None
+
+ async def select_folder(self, event=None):
+ self.folder = await window.showDirectoryPicker()
+
+ async def get_file_contents(self, file_name):
+ file = await self.folder.getFileHandle(file_name)
+ file_data = await file.getFile()
+ return await file_data.text()
+
+ async def create_new_file(self, contents):
+ file = await window.showSaveFilePicker()
+ await self.write_file(file, contents)
+
+ async def write_file(self, file, contents):
+ writeable = await file.createWritable()
+ await writeable.write(contents)
+ await writeable.close()
\ No newline at end of file
diff --git a/local-fs/index.html b/local-fs/index.html
new file mode 100644
index 0000000..0d4f01b
--- /dev/null
+++ b/local-fs/index.html
@@ -0,0 +1,33 @@
+
+
+
+ Crimson Scene
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/local-fs/main.py b/local-fs/main.py
new file mode 100644
index 0000000..aa1cc4a
--- /dev/null
+++ b/local-fs/main.py
@@ -0,0 +1,11 @@
+from files import *
+from pyscript import window, display
+import media
+
+my_files = Files()
+
+async def get_file(event):
+ data = await my_files.get_file_contents("test.txt")
+ display(data)
+
+await media.list_media_devices()
\ No newline at end of file
diff --git a/local-fs/media.py b/local-fs/media.py
new file mode 100644
index 0000000..ac527fc
--- /dev/null
+++ b/local-fs/media.py
@@ -0,0 +1,31 @@
+from pyodide.ffi import create_proxy
+from pyscript import display, document, when, window
+from pyweb import media, pydom
+
+devicesSelect = pydom["#devices"][0]
+video = pydom["video"][0]
+devices = {}
+
+
+async def list_media_devices(event=None):
+ """List the available media devices."""
+ global devices
+ for i, device in enumerate(await media.list_devices()):
+ devices[device.id] = device
+ label = f"{i} - ({device.kind}) {device.label} [{device.id}]"
+ devicesSelect.options.add(value=device.id, html=label)
+
+
+@when("click", "#pick-device")
+async def connect_to_device(e):
+ """Connect to the selected device."""
+ device = devices[devicesSelect.value]
+ video._js.srcObject = await device.get_stream()
+
+
+@when("click", "#snap")
+async def camera_click(e):
+ """Take a picture and download it."""
+ video.snap().download()
+ video.snap()
+
diff --git a/local-fs/pyscript.toml b/local-fs/pyscript.toml
new file mode 100644
index 0000000..060765e
--- /dev/null
+++ b/local-fs/pyscript.toml
@@ -0,0 +1,4 @@
+name = "local_fs Copy"
+[[fetch]]
+files = [ "files.py", "media.py"]
+