Code Monkey home page Code Monkey logo

ws-osd-py's Introduction

This repository is no longer maintained in favor or https://github.com/avsaase/walksnail-osd-tool

Thanks for all your support <3


image

Tool for generating OSD for Walksnail DVR

That's easy, drag and drop files into UI, click Generate. Then import generated sequence into and video editing software and adjust framerate to 60fps if needed.

How to run

Windows

Nothing to do, Go to Release page

Linux / MacOS

Disclamer: I've tried my best to make it work on all systems, but it's only tested on Windows. So it might not work as expected on other systems.

Only works with Python 3.10 due to issues with wxPython and python-opencv libs

Install ffmpeg:

For Linux:

sudo apt install ffmpeg 

For MacOs:

brew install ffmpeg

Then clone respotiory and run app

git clone https://github.com/kirek007/ws-osd-py.git
cd ws-osd-py
make run

CLI

Thanks to @odgrace it's now possible to run tool without GUI (which is quite complicated sometimes).

pip install -r requirements-noui.txt
python3 cli.py -h #It will list all required parameters

Common issues for linux:

If there is an issue with ModuleNotFoundError: No module named 'attrdict' try to install wxPython from wheel.

Get packge link from here https://extras.wxpython.org/wxPython4/extras/linux/gtk3

eg. for Ubuntu 20: https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04/wxPython-4.2.0-cp310-cp310-linux_x86_64.whl

source .venv/bin/activate
pip install -f <link to package> wxPython

Usage tutorial

https://www.youtube.com/watch?v=we3F4rIXTqU

Fonts

You can get fancy fonts from Sneaky_FPV, or get default walksnails fonts

Examples

Here are some results:

https://www.youtube.com/watch?v=fHHXh9k-SGg

https://www.youtube.com/watch?v=2u7wiJBIdCg

Ack

Software is provided as is and it is open sourced so contributions are welcome!

Feel free to create a ticket in case something is not working.

Coffee needed

If you like tool, you can buy me a coffee so keep working more overnights :)

Buy Me A Coffee

ws-osd-py's People

Contributors

endymuhardin avatar kirek007 avatar odgrace avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ws-osd-py's Issues

SRT getting out of sync

It starts at same time but the SRT file runs faster. by a min its off by 4sec and by 3mins almost 10s.
SRT plays correct in original video

Error message after .png generation

Hello together,

when i try to render my videos from the internal hard drive i get an error message that there are no .png available. When I then go into the AvatarGxxxx_generated folder it is actually empty. As soon as the video files and the .srt and .osd files are on another drive (e.g. external SSD or microSd card) I can render the videos normally.
Is this error known or is it just me?

image

Not Automatically Detecting/Matching files

Hey - firstly huge thanks!
I'm new so maybe doing something daft.
I'm running latest version of avatar 32.37.10
Running win11 everything up to date.

When i drag a video in from the goggles it does nothing. But if i copy the onboard DVR file across and rename it to match the .osd and .srt it works fine.

When i drag just the .srt and .osd it shows fine but leave the video path blank. the debug window show the file but no errors etc.

I dont know how normal but my 40 second file is 2gb when outputted.
Again thank you for the work you are doing!

Error on generating images with one of my .osd files

Can't generate image files from one of my .osd files (attached in the zip file). It works fine with version 0.5 but any newer release gives error:

DEBUG:root:Current: 2800/12570 (fps: 277)
Exception in thread Thread-1 (main):
Traceback (most recent call last):
  File "threading.py", line 1016, in _bootstrap_inner
  File "threading.py", line 953, in run
  File "processor.py", line 632, in main
  File "processor.py", line 536, in __render_osd_frame
  File "processor.py", line 536, in <listcomp>
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\matrix_operations.cpp:67: error: (-215:Assertion failed) src[i].dims <= 2 && src[i].rows == src[0].rows && src[i].type() == src[0].type() in function 'cv::hconcat'

AvatarG0004.zip

macOS compile error

Now it works with my python version, but i get an error, short after downloading wxPython:
(macOS 13.1, M1)

`makefile:1: Makefile.venv: No such file or directory
curl
-o Makefile.fetched
-L "https://github.com/sio/Makefile.venv/raw/v2022.07.20/Makefile.venv"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 7159 100 7159 0 0 2300 0 0:00:03 0:00:03 --:--:-- 4370
echo "147b164f0cbbbe4a2740dcca6c9adb6e9d8d15b895be3998697aa6a821a277d8 *Makefile.fetched"
&& mv Makefile.fetched Makefile.venv
147b164f0cbbbe4a2740dcca6c9adb6e9d8d15b895be3998697aa6a821a277d8 *Makefile.fetched
python3 -m venv ./.venv
./.venv/bin/python -m pip install --upgrade pip setuptools wheel
Requirement already satisfied: pip in ./.venv/lib/python3.11/site-packages (22.3.1)
Collecting pip
Downloading pip-23.0.1-py3-none-any.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 6.5 MB/s eta 0:00:00
Requirement already satisfied: setuptools in ./.venv/lib/python3.11/site-packages (65.5.0)
Collecting setuptools
Downloading setuptools-67.3.2-py3-none-any.whl (1.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 6.3 MB/s eta 0:00:00
Collecting wheel
Using cached wheel-0.38.4-py3-none-any.whl (36 kB)
Installing collected packages: wheel, setuptools, pip
Attempting uninstall: setuptools
Found existing installation: setuptools 65.5.0
Uninstalling setuptools-65.5.0:
Successfully uninstalled setuptools-65.5.0
Attempting uninstall: pip
Found existing installation: pip 22.3.1
Uninstalling pip-22.3.1:
Successfully uninstalled pip-22.3.1
Successfully installed pip-23.0.1 setuptools-67.3.2 wheel-0.38.4
./.venv/bin/pip install -r requirements.txt
Collecting altgraph==0.17.3
Using cached altgraph-0.17.3-py2.py3-none-any.whl (21 kB)
Collecting ffmpeg-python==0.2.0
Using cached ffmpeg_python-0.2.0-py3-none-any.whl (25 kB)
Collecting future==0.18.2
Using cached future-0.18.2.tar.gz (829 kB)
Preparing metadata (setup.py) ... done
Collecting numpy==1.24.1
Downloading numpy-1.24.1-cp311-cp311-macosx_11_0_arm64.whl (13.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 7.0 MB/s eta 0:00:00
Collecting opencv-python==4.6.0.66
Using cached opencv_python-4.6.0.66-cp37-abi3-macosx_11_0_arm64.whl (30.0 MB)
Collecting pefile==2022.5.30
Using cached pefile-2022.5.30.tar.gz (72 kB)
Preparing metadata (setup.py) ... done
Collecting Pillow==9.3.0
Downloading Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl (2.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.9/2.9 MB 6.9 MB/s eta 0:00:00
Collecting pyinstaller==5.7.0
Using cached pyinstaller-5.7.0-py3-none-macosx_10_13_universal2.whl (923 kB)
Collecting pyinstaller-hooks-contrib==2022.14
Using cached pyinstaller_hooks_contrib-2022.14-py2.py3-none-any.whl (252 kB)
Collecting Pypubsub==4.0.3
Using cached Pypubsub-4.0.3-py3-none-any.whl (61 kB)
Collecting pywin32-ctypes==0.2.0
Using cached pywin32_ctypes-0.2.0-py2.py3-none-any.whl (28 kB)
Collecting six==1.16.0
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting wxPython==4.2.0
Downloading wxPython-4.2.0.tar.gz (71.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 71.0/71.0 MB 6.8 MB/s eta 0:00:00
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [8 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/private/var/folders/nx/f2jsnvsj0p1_420lxfncrq4r0000gn/T/pip-install-3f8fsw94/wxpython_3e1edf12fc2044d6b8cb6c5165d99e83/setup.py", line 27, in
from buildtools.config import Config, msg, opj, runcmd, canGetSOName, getSOName
File "/private/var/folders/nx/f2jsnvsj0p1_420lxfncrq4r0000gn/T/pip-install-3f8fsw94/wxpython_3e1edf12fc2044d6b8cb6c5165d99e83/buildtools/config.py", line 30, in
from attrdict import AttrDict
ModuleNotFoundError: No module named 'attrdict'
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
make: *** [.venv/bin/.initialized-with-Makefile.venv] Error 1
`

Mac release

Would be nice to have instruction on the readme to build the project.

Recognized 'unknown' Software

Hi i am using KISS if i drang an OSD file on the overlay tool it tells me this.

do you need some KISS *.osd files for development?

No version info anywhere

Not an issue, just a little suggestion.
There isn't any information about the version of the app. It would be nice to also see some "about" page with the version, http address etc.

Source files still locked after processing is finished

After the PNG files for the overlay have been created and the process finishes, the video/osd files are still locked by Python as it didn't seem to close/flush/whatever the file (handles).

perhaps this could be fixed to get access again after the job is done (and without new file assigment or quitting the programm)

distance on SRT not updating

I tried rendering the flight from my arduplane setup, you can see here that distance from home is already around 1.5km, but the distance on the SRT overlay is still 0... upon checking the SRT file, I was able to validate that the distance is 0...

image

[Request] Naming the files different!

Currently the generated png files are named ws_000000001.png and so one for every file.

If you however fly for longer and one flight has several video files then this causes extra work to get together again.

Could the files be named in a pattern that includes the source file? e.g. AvatarG0001_xxxxxx.png

processor.py :

    def render(self):
        self.osdGenStatus.update(0, 1, 0)

        video_size = self.video.get_size()
        if self.config.render_upscale:
            ff_size = {"w": 2560, "h": 1440}
        else:
            ff_size = {"w": video_size[1], "h": video_size[0]}

        ### HERE "ws" should be replaced by the source file name's sequence number ###
        out_path = os.path.join(self.output, "ws_%09d.png")
        ...

That would make it easier to attached the generated files to each other ( like if AvatarG0001+AvatarG0002+AvatarG0003 = ONE FLIGHT)
WIth the current version I would have to rename all files to get them in the right sequence :)

Feature request - support for long files

Most of my flights are > 10 minutes so files are split.

Is it feasible to add support for "joining" of files.

I have produced separate files and tried to join using apps, but they have not been very successful. Usually errors playing.

Freezes when processing large files

I know you’re recommending that people use Alex’s tool. But his doesn’t support outputting to a png sequence or transparent OSD only video.

The only problem I have with your tool is that is freezes when processing large files. The seem to freeze around the same number of frames. I can run a couple of tests to check.

Please could you fix this. Yours is the only tool with a nice to use UI which accepts the avatar font files, and outputs just the OSD. No other tool does this.

Add ability to 'widescreen' the OSD elements in the X axis for Walksnail so OSD elements are at side of screen

Hello again! Love the tool and thank you so much for sharing it with the community!

One thing I like with DJI is that the OSD elements can be pushed to the very sides and top of the screen and that results in a less cluttered video. With Walksnail the OSD elements sit in a 4:3 box that you can move and resize using the tools in the app (thank you again).

One thing that I'd welcome is the ability to stretch the elements on the X axis to move them into the sides of the screen to leave the centre less cluttered. By using a multiplier applied for OSD elements from the centre of the normal layout they could be pushed into a more 16:9 format from that default 4:3.

I hope that makes sense.

help me : Why am I getting this error?, Is there any workaround?

Same error in all versions.
This is the text that appears in the command window below.
Moving other fonts gives the same error.


DEBUG:root:File drop: E:\ㅇ Downloade\release\AvatarG0059.mp4
DEBUG:root:File drop: E:\ㅇ Downloade\release\user_ardu_36.png
[ WARN:[email protected]] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('E:?Traceback (most recent call last):
File "osd_gui.py", line 32, in OnDropFiles
File "pubsub\core\publisher.py", line 216, in sendMessage
File "pubsub\core\topicobj.py", line 452, in publish
File "pubsub\core\topicobj.py", line 482, in __sendMessage
File "pubsub\core\listener.py", line 237, in call
File "osd_gui.py", line 103, in eventConfigUpdate
File "osd_gui.py", line 114, in updateSettings
File "osd_gui.py", line 123, in updateInfo
File "processor.py", line 70, in is_hd
AttributeError: 'NoneType' object has no attribute 'shape'

Directory already exists, error in red text

Having created the OSD overlay files, and then clicking on render video, Error message in red text "Directory already exists, remove directory"? No idea what that means as the path is auto generating?
Hangs and fails to render video and overlay?
It's creating the OSD files...lots of them!
Frustrating..

Interface suggestion: Prompt for font file automatically after loading in video, OSD and SRT file

Hi!

Love the tool! I was wondering if it would be possible to add a prompt for when the app started to guide new users through the process of importing the key files. In particular the font file. Or, have the app select a default font based on the video file format so that the OSD image appears as soon as the video file is imported?

Thanks for reading this, I am a fan of this project and will make a video soon!

Lee
P.S. I've tried to send you some money using the 'coffee' app but it will not work, happy to PayPal you some cash instead if you contact me at [email protected] :D

SRT data freezes then updates in quick bursts (BUG)

Noticed this as soon as I armed iNav that all the SRT data (time, distance etc) would freeze for a few seconds, then there would be a burst of activity, a freeze for a few seconds, burst of activity etc, for the duration of the flight.

SRT.Bug.mov

On a ten minute video file, roughly 15 seconds before the end, the SRT data stops updating.

Feature Request: Render OSD as video ONLY (transparent background)

Currently I'm struggling a bit with the intended workflow (v0.9). My DVR videos are about 9mins long and as such create a humongous pile of PNG files as I choose to render PNG only.

These 9min of DVR footage result in about 35840 PNG files ... to process these within the video editor of choice is not much of a pleasant task :) So here is my suggestion

add an option where the OSD is generated as a video with transparent background ONLY

That would make file handling MUCH easier and not even cost to much changes in the code .. e.g.

if option transparent osd video is checked then return a transparent frame instead of the frame in the video.

    def read_frame(self):
        ret, frame = self.videoFile.read()
        if not ret:
            return None

        if len(frame) == 0:
            return None

       """
            could look like this perhaps:
       """
       if transparent_osd_video:
            return transparentFrame


        return VideoFrame(frame)

Benefits

  • The resulting video would be easy to overlay over ANY format and content
  • It's only ONE file against several 35840 per 9min (I fly long trips, ... yes!)

how to change python version on macos

Hi,
i have the problem that my MacMini M1 has the python3 v3.8 binary in the /usr/bin directory. I can not change or delete it.

So i installed the v3.11.1 pkg from www.python.org which did not work. After some google search i installed the same version with pyenv, but it still not work.

my current setup:
ralle@MMM1 ws-osd-py % which python3 /Users/ralle/.pyenv/shims/python3 ralle@MMM1 ws-osd-py % python3 --version Python 3.11.1

but the 'make run' command still uses the /usr/bin version:

ralle@MMM1 ws-osd-py % make run Python 3.8.2 (default, Apr 8 2021, 23:19:18) [Clang 12.0.5 (clang-1205.0.22.9)] pip 22.3.1 from /Volumes/Samsung_T5/dox/Drohnen/ws-osd-py/.venv/lib/python3.8/site-packages/pip (python 3.8) venv: ./.venv ./.venv/bin/python -c 'import sys; valid=(sys.version_info > (3,9) and sys.version_info < (3,11)); sys.exit(0) if valid else sys.exit(1)' || (echo "Python 3.10 is required"; exit 1) Python 3.10 is required make: *** [run] Error 1
the PATH looks like:
ralle@MMM1 ws-osd-py % echo $path /Users/ralle/.pyenv/shims /opt/homebrew/bin /usr/local/bin /Library/Frameworks/Python.framework/Versions/3.11/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Frameworks/Python.framework/Versions/3.11

Somebody has an idea how i get rid of the old v3.8?

Burn In Walksnail SRT file as an optional feature

Other than OSD information from FC, the OSD information from VRX (.srt file) is also useful.

It will be awesome if there is an optional feature to burn in these .srt information along with the .osd file.

Thanks for developing!

Using directories with diacritic chars silently fail

I do the first step, render the osd and then I give ok to the message, the RENDER VIDEO WITH OSD tab was supposed to be visible, but it is deleted and the generated folder is empty. I've tried several times and nothing. what am I doing wrong? AvatarG0000.mp4 does not exist in the folder.
Captura de tela_20230121_080151

Captura de tela_20230121_075636

Suggested features

I don't normally do these, so forgive me if my formatting is substandard. As per your suggestion, I'll produce a list of potential improvements. The main one is the encoder, and the rest is just QoL stuff. Feel free to blow any of these off as I'm just some guy that occasionally uses FFmpeg and doesn't know squat.

  1. Greater control over the encoder settings. Being able to choose from a few different codecs and the level of quality will help with outputting files of a more reasonable size while also being flexible. FFmpeg appears to just use 100Mbps when the CRF is set to 0. Most of the quality appears to be retained at 10-20Mbps when using HEVC software encoding.

  2. Automatic removal of PNG overlay files at end of job.

  3. Option to retain font file and OSD positions.

  4. Walksnail splits files at 10 minutes, so splicing long footage could be useful.

Thanks again for putting the time and effort in to create this tool! I love it!

Using non-INAV font with INAV OSD causes a error

Stack trace:

DEBUG:root:File drop: C:\Users\wilco\Downloads\pre-release-88c19ba942ba0af66e779dd71e07674a244e1d40-windows\release\user_bf_24.png
DEBUG:root:Preview update requested.
Traceback (most recent call last):
  File "osd_gui.py", line 32, in OnDropFiles
  File "pubsub\core\publisher.py", line 216, in sendMessage
  File "pubsub\core\topicobj.py", line 452, in publish
  File "pubsub\core\topicobj.py", line 482, in sendMessage
  File "pubsub\core\listener.py", line 237, in call
  File "osd_gui.py", line 379, in eventConfigUpdate
  File "osd_gui.py", line 383, in onView
  File "processor.py", line 396, in generate_preview
  File "processor.py", line 396, in <listcomp>
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\matrix_operations.cpp:67: error: (-215:Assertion failed) src[i].dims <= 2 && src[i].rows == src[0].rows && src[i].type() == src[0].type() in function 'cv::hconcat'

Exception in thread Thread-1 (main):
Traceback (most recent call last):
  File "threading.py", line 1016, in _bootstrap_inner
  File "threading.py", line 953, in run
  File "processor.py", line 624, in main
  File "processor.py", line 523, in render_osd_frame
  File "processor.py", line 523, in <listcomp>
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\matrix_operations.cpp:67: error: (-215:Assertion failed) src[i].dims <= 2 && src[i].rows == src[0].rows && src[i].type() == src[0].type() in function 'cv::hconcat'

make run don't work

I download the latest version from git, but when I try make run I have this error, I'm using Ubuntu 22.04 with Python 3.10 and I add attrdict to requirements.txt
`➜ ws-osd-py git:(main) ✗ make run
./.venv/bin/pip install -r requirements.txt
Collecting attrdict
Using cached attrdict-2.0.1-py2.py3-none-any.whl (9.9 kB)
Collecting altgraph==0.17.3
Using cached altgraph-0.17.3-py2.py3-none-any.whl (21 kB)
Collecting ffmpeg-python==0.2.0
Using cached ffmpeg_python-0.2.0-py3-none-any.whl (25 kB)
Collecting future==0.18.2
Using cached future-0.18.2.tar.gz (829 kB)
Preparing metadata (setup.py) ... done
Collecting numpy==1.24.1
Using cached numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB)
Collecting opencv-python==4.6.0.66
Using cached opencv_python-4.6.0.66-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.9 MB)
Collecting pefile==2022.5.30
Using cached pefile-2022.5.30.tar.gz (72 kB)
Preparing metadata (setup.py) ... done
Collecting Pillow==9.3.0
Using cached Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.3 MB)
Collecting pyinstaller==5.7.0
Using cached pyinstaller-5.7.0-py3-none-manylinux2014_x86_64.whl (649 kB)
Collecting pyinstaller-hooks-contrib==2022.14
Using cached pyinstaller_hooks_contrib-2022.14-py2.py3-none-any.whl (252 kB)
Collecting Pypubsub==4.0.3
Using cached Pypubsub-4.0.3-py3-none-any.whl (61 kB)
Collecting pywin32-ctypes==0.2.0
Using cached pywin32_ctypes-0.2.0-py2.py3-none-any.whl (28 kB)
Collecting six==1.16.0
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting wxPython==4.2.0
Using cached wxPython-4.2.0.tar.gz (71.0 MB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [8 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/tmp/pip-install-n87c4cfj/wxpython_0a1de7204f67484e873b873f38bd48f3/setup.py", line 27, in
from buildtools.config import Config, msg, opj, runcmd, canGetSOName, getSOName
File "/tmp/pip-install-n87c4cfj/wxpython_0a1de7204f67484e873b873f38bd48f3/buildtools/config.py", line 30, in
from attrdict import AttrDict
ModuleNotFoundError: No module named 'attrdict'
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
make: *** [Makefile.venv:233: .venv/bin/.initialized-with-Makefile.venv] Error 1
`

Hiding out unwanted OSD elements

I just came up with something I need to do in several and almost any video: Hiding some items from the OSD.
As I'm not good in Python so I will write the statement in normal text:

if index+page (= the osd item) is part of the list/array of unwanted items then skip the render for it

Examples could be the usual favorites like GPS LAT/LON, DISTANCE, ALT etc ...

I will just assume it would fit in here :

    def __convert_to_glyphs(self):
        glyphs_arr = []
        for x in range(0, len(self.rawData), 2):
            index, page = unpack("<BB", self.rawData[x:x + 2])
            glyph = self.font.get_glyph(index + page * 255 )
            glyphs_arr.append(glyph)

        return glyphs_arr

Maybe this would be a handy little enhancement.

Can't run app on macOS

Can't rum app on my MacBook M1 (macOS Ventura 13.1), I've tried using the instructions

ivanprivalihin@MacBook-Pro-Ivan ~ % cd ws-osd-py
ivanprivalihin@MacBook-Pro-Ivan ws-osd-py % make run    
Python 3.9.6 (default, Oct 18 2022, 12:41:40) [Clang 14.0.0 (clang-1400.0.29.202)]
pip 23.0.1 from /Users/ivanprivalihin/ws-osd-py/.venv/lib/python3.9/site-packages/pip (python 3.9)
venv: ./.venv
./.venv/bin/python -c 'import sys; valid=(sys.version_info > (3,9) and sys.version_info < (3,11)); sys.exit(0) if valid else sys.exit(1)' || (echo "Python 3.10 is required"; exit 1)
./.venv/bin/python osd_gui.py
Traceback (most recent call last):
  File "/Users/ivanprivalihin/ws-osd-py/osd_gui.py", line 4, in <module>
    from processor import OSDFile, OsdFont, OsdPreview, VideoFile
  File "/Users/ivanprivalihin/ws-osd-py/processor.py", line 108
    match self.fcType:
          ^
SyntaxError: invalid syntax
make: *** [run] Error 1

I'm not a programmer so it will be cool have a compiled self-installing package for it. It's a good manners rule to have all platforms assets. Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.