Skip to content

Local fs #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
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
5 changes: 5 additions & 0 deletions local-fs/.pyscript.com/manifest.json
Original file line number Diff line number Diff line change
@@ -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/"
}
22 changes: 22 additions & 0 deletions local-fs/files.py
Original file line number Diff line number Diff line change
@@ -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()
33 changes: 33 additions & 0 deletions local-fs/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Crimson Scene</title>

<!-- Recommended meta tags -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">

<!-- PyScript CSS -->
<link rel="stylesheet" href="https://pyscript.net/releases/2024.2.1/core.css">

<!-- This script tag bootstraps PyScript -->
<script type="module" src="https://pyscript.net/releases/2024.2.1/core.js"></script>
</head>
<body>
<script type="py" src="./main.py" config="./pyscript.toml" async></script>

<button mpy-click="my_files.select_folder">Choose Folder</button>
<button mpy-click="get_file">Get test.txt</button>

<label for="cars">Choose a device:</label>

<select name="devices" id="devices"></select>

<button id="pick-device">Select the device</button>
<button id="snap">Snap</button>

<div id="result"></div>

<video id="video" width="600" height="400" autoplay></video>
</body>
</html>
11 changes: 11 additions & 0 deletions local-fs/main.py
Original file line number Diff line number Diff line change
@@ -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()
31 changes: 31 additions & 0 deletions local-fs/media.py
Original file line number Diff line number Diff line change
@@ -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()

4 changes: 4 additions & 0 deletions local-fs/pyscript.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name = "local_fs Copy"
[[fetch]]
files = [ "files.py", "media.py"]