Implemented tools as applets, Added Docker CCTV page, Fixed small issues
Update app.py, uuid-generator.yml, and 47 more files...
This commit is contained in:
8
data/applets/uuid-generator.yml
Normal file
8
data/applets/uuid-generator.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
applets:
|
||||
- id: "uuid-generator"
|
||||
resources:
|
||||
scripts:
|
||||
- "uuid-generator.mjs"
|
||||
stylesheets:
|
||||
- "uuid-generator.css"
|
35
data/projects/.circuitpython-custom-fs.yml
Normal file
35
data/projects/.circuitpython-custom-fs.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
projects:
|
||||
- id: "circuitpython-custom-fs"
|
||||
metadata:
|
||||
head:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
opengraph:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
type: null
|
||||
url: null
|
||||
image_url: "/resources/NibblePoker/images/content/circuitpython-ebyte-e32/main.png"
|
||||
image_type: null
|
||||
twitter:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
index:
|
||||
priority: 105
|
||||
enable: true
|
||||
title_key: "meta.title"
|
||||
preamble_key: "meta.description"
|
||||
image_url: "/resources/NibblePoker/images/content/circuitpython-ebyte-e32/main.png"
|
||||
image_alt_key: ""
|
||||
general:
|
||||
icon: "fab fa-python"
|
||||
title_key: "meta.title"
|
||||
subtitle_key: "article.subtitle"
|
||||
tags:
|
||||
- "experiments"
|
||||
- "electronic"
|
||||
- "python"
|
||||
- "circuitpython"
|
||||
languages:
|
||||
- "python"
|
@@ -1,31 +0,0 @@
|
||||
head:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
opengraph:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
type: null
|
||||
url: null
|
||||
image_url: "/resources/NibblePoker/images/content/circuitpython-ebyte-e32/main.png"
|
||||
image_type: null
|
||||
twitter:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
index:
|
||||
priority: 105
|
||||
enable: true
|
||||
title_key: "meta.title"
|
||||
preamble_key: "meta.description"
|
||||
image_url: "/resources/NibblePoker/images/content/circuitpython-ebyte-e32/main.png"
|
||||
image_alt_key: ""
|
||||
general:
|
||||
icon: "fab fa-python"
|
||||
title_key: "meta.title"
|
||||
subtitle_key: "article.subtitle"
|
||||
tags:
|
||||
- "experiments"
|
||||
- "electronic"
|
||||
- "python"
|
||||
- "circuitpython"
|
||||
languages:
|
||||
- "python"
|
34
data/projects/docker-mini-cctv-nvr.yml
Normal file
34
data/projects/docker-mini-cctv-nvr.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
projects:
|
||||
- id: "docker-mini-cctv-nvr"
|
||||
metadata:
|
||||
head:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
opengraph:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
type: null
|
||||
url: null
|
||||
image_url: "/resources/NibblePoker/images/content/docker-mini-cctv-nvr/main.png"
|
||||
image_type: null
|
||||
twitter:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
index:
|
||||
priority: 105
|
||||
enable: true
|
||||
title_key: "meta.title"
|
||||
preamble_key: "meta.description"
|
||||
image_url: "/resources/NibblePoker/images/content/docker-mini-cctv-nvr/main.png"
|
||||
image_alt_key: ""
|
||||
general:
|
||||
icon: "fab fa-docker"
|
||||
title_key: "meta.title"
|
||||
subtitle_key: "article.subtitle"
|
||||
tags:
|
||||
- "docker"
|
||||
languages:
|
||||
- "docker"
|
||||
- "php"
|
||||
- "python"
|
@@ -42,13 +42,13 @@
|
||||
abs_href: "/tools"
|
||||
icon: fad fa-toolbox
|
||||
active_id: tools
|
||||
has_new_until_utc: 0
|
||||
has_new_until_utc: 1760986472
|
||||
|
||||
- title_key: text.downloads
|
||||
raw_href: "https://files.nibblepoker.lu/"
|
||||
icon: fad fa-download
|
||||
active_id: ""
|
||||
has_new_until_utc: 1760986472
|
||||
has_new_until_utc: 0
|
||||
|
||||
-
|
||||
|
||||
|
72
data/strings/en/docker-mini-cctv-nvr.yml
Normal file
72
data/strings/en/docker-mini-cctv-nvr.yml
Normal file
@@ -0,0 +1,72 @@
|
||||
# EN - Docker Mini CCTV NVR
|
||||
|
||||
meta.title: "Mini Dockerized CCTV NVR"
|
||||
meta.description: "Mini docker stack that allows you to easily record, clean and serve CCTV recordings made
|
||||
over RSTP while using a minimal amount of system resources."
|
||||
|
||||
intro.title: "Introduction"
|
||||
intro.1: "A mini docker stack that allows you to easily record, clean and serve CCTV recordings made
|
||||
over RSTP while using a minimal amount of system resources."
|
||||
intro.2: "This stack is mainly intended to be used as a backup when other and more complete solutions crash or
|
||||
need to be shutdown.This simple docker stack aims to provide you with a simple,
|
||||
lightweight and robust NVR for all of your RTSP-based CCTV cameras."
|
||||
|
||||
preamble.title: "Preamble"
|
||||
preamble.1: "This stack records the camera's streams as-is and doesn't re-encode or compress it which uses more disk space.
|
||||
See \"Usage statistics example\" for an example."
|
||||
preamble.2: "If served out of your LAN, the web server should be behind a secure reverse-proxy that requires authentication."
|
||||
|
||||
setup.title: "Setup"
|
||||
setup.1: "All of the setup is done through environment variables in the docker-compose.yml file."
|
||||
setup.2: "It should only take 2-3 minutes if you already have the RTSP URL on hand.<br>
|
||||
If you don't have them, you should see your camera's user manual and test the URLs with VLC."
|
||||
|
||||
setup.camera.title: "Cameras"
|
||||
setup.camera.1: "Each recording container needs to be given a RSTP stream URL and a unique folder
|
||||
into which the recordings will go."
|
||||
setup.camera.2: "The URL must be given via the <span class=\"code\">NP_CCTV_URL</span> environment variable,
|
||||
and the output folder via a mounted volume that is mounted as <span class=\"code\">/data</span> in the container."
|
||||
setup.camera.3: "This example will use the <span class=\"code\">rtsp://user:password@address:554/sub-path</span>
|
||||
URL and will put its recordings in <span class=\"code\">./recordings/cam1.</span>"
|
||||
|
||||
setup.cleaner.title: "Cleaner"
|
||||
setup.cleaner.1: "The cleaner script named cleaner.py only requires you to set 1 environment variable named
|
||||
<span class=\"code\">NP_MAX_FILE_AGE_HOURS</span> to the max amount of hours any recording should be kept."
|
||||
setup.cleaner.2: "If not set, the script will simply clean any recordings older than 72 hours."
|
||||
|
||||
setup.web.title: "Web interface"
|
||||
setup.web.1: "The web interface provides more customization options, but at its core,
|
||||
it only requires the camera's environment variables to be set."
|
||||
setup.web.2: "Each camera requires one of the following environment variable:<br>
|
||||
<span class=\"code\">NP_CAM_<camId> = <Camera's name></span>"
|
||||
setup.web.3: "Here is an example for <span class=\"code\">cam1</span> if named as <span class=\"code\">Camera #1</span>:<br>
|
||||
<span class=\"code\">NP_CAM_cam1 = Camera #1</span>"
|
||||
setup.web.vars.title: "Other variables"
|
||||
setup.web.vars.description.title: "Page's title"
|
||||
setup.web.vars.description.footer: "Page's footer HTML content"
|
||||
|
||||
startup.title: "Startup"
|
||||
startup.1: "Once you have finished setting up the stack, you can simply run the following command:"
|
||||
#docker-compose up --build -d
|
||||
|
||||
screenshots.title: "Screenshots"
|
||||
|
||||
statistics.title: "Usage statistics example"
|
||||
statistics.1: "NanoPi R4S 4GB"
|
||||
statistics.1.1: "Uses 0.008 kWh / 8 Watts with other containers and USB HDD & USB SSD"
|
||||
statistics.2: "4 IP Cameras"
|
||||
statistics.2.1: "All H.256 4k RTSP TCP streams"
|
||||
statistics.2.2: "Around 220 GB of data per day"
|
||||
statistics.2.2.1: "Around 20.4 Mbit/s or 2.6 MB/s"
|
||||
statistics.3: "Less than 200MB of RAM usage"
|
||||
statistics.3.1: "~32 MB per recorder"
|
||||
statistics.3.2: "4 MB for cleaner"
|
||||
statistics.3.3: "4 MB for web server"
|
||||
statistics.4: "Uses ~10% of CPU on average over 6 cores"
|
||||
statistics.4.1: "Average of 15% per recorder"
|
||||
statistics.4.2: "Average of 1-5% on cleaner and web server"
|
||||
|
||||
license.title: "License"
|
||||
license.1: "This software, as well as the Simplette CSS Stylesheet used for the web interface are both licensed under Unlicense."
|
||||
|
||||
commons.example: "Example"
|
@@ -1,4 +1,17 @@
|
||||
# EN - UUID Generator
|
||||
|
||||
option.count: "UUID/GUID count"
|
||||
meta.title: "UUID Generator"
|
||||
|
||||
type.label: "UUID Type"
|
||||
|
||||
type.uuid4: "UUID4 / GUID4"
|
||||
|
||||
option.count: "UUID Count"
|
||||
option.hyphen: "Add hyphens"
|
||||
option.guid_brackets: "Add GUID brackets"
|
||||
|
||||
generate: "Generate"
|
||||
|
||||
download.raw: "Raw"
|
||||
download.json: "JSON"
|
||||
download.yaml: "YAML"
|
||||
|
5
data/strings/fr/docker-mini-cctv-nvr.yml
Normal file
5
data/strings/fr/docker-mini-cctv-nvr.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
# FR - Docker Mini CCTV NVR
|
||||
|
||||
meta.title: "Mini Dockerized CCTV NVR"
|
||||
meta.description: "Mini docker stack that allows you to easily record, clean and serve CCTV recordings made
|
||||
over RSTP while using a minimal amount of system resources."
|
@@ -1,4 +1,17 @@
|
||||
# FR - UUID Generator
|
||||
|
||||
meta.title: "Générateur d'UUID"
|
||||
|
||||
type.label: "Type d'UUID"
|
||||
|
||||
type.uuid4: "UUID4 / GUID4"
|
||||
|
||||
option.count: "Nombre d'UUID/GUID"
|
||||
option.hyphen: "Ajouter trait d'union"
|
||||
option.guid_brackets: "Ajouter accolades pour GUID"
|
||||
|
||||
generate: "Générer"
|
||||
|
||||
download.raw: "Brut"
|
||||
download.json: "JSON"
|
||||
download.yaml: "YAML"
|
||||
|
@@ -25,6 +25,6 @@ metadata:
|
||||
subtitle_key: "article.subtitle"
|
||||
tags:
|
||||
- "undefined"
|
||||
data:
|
||||
resources:
|
||||
scripts:
|
||||
- "epr_main.js"
|
@@ -25,7 +25,7 @@ metadata:
|
||||
subtitle_key: "article.subtitle"
|
||||
tags:
|
||||
- "undefined"
|
||||
data:
|
||||
resources:
|
||||
scripts:
|
||||
- "svg-to-png.mjs"
|
||||
stylesheets:
|
@@ -1,32 +1,31 @@
|
||||
metadata:
|
||||
head:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
opengraph:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
type: null
|
||||
url: null
|
||||
image_url: "/resources/NibblePoker/images/tools/excel-password-remover/excel-password-remover.png"
|
||||
image_type: null
|
||||
twitter:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
index:
|
||||
priority: 100
|
||||
enable: true
|
||||
title_key: "meta.title"
|
||||
preamble_key: "meta.description"
|
||||
image_url: "/resources/NibblePoker/images/tools/excel-password-remover/excel-password-remover.png"
|
||||
image_alt_key: ""
|
||||
general:
|
||||
icon: "fab fa-python"
|
||||
title_key: "meta.title"
|
||||
subtitle_key: "article.subtitle"
|
||||
tags:
|
||||
- "undefined"
|
||||
data:
|
||||
scripts:
|
||||
- "uuid-generator.mjs"
|
||||
stylesheets:
|
||||
- "uuid-generator.css"
|
||||
|
||||
tools:
|
||||
- id: "uuid-generator"
|
||||
applet_id: "uuid-generator"
|
||||
metadata:
|
||||
head:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
opengraph:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
type: null
|
||||
url: null
|
||||
image_url: "/resources/NibblePoker/images/tools/excel-password-remover/excel-password-remover.png"
|
||||
image_type: null
|
||||
twitter:
|
||||
title_key: "meta.title"
|
||||
description_key: "meta.description"
|
||||
index:
|
||||
priority: 100
|
||||
enable: true
|
||||
title_key: "meta.title"
|
||||
preamble_key: "meta.description"
|
||||
image_url: "/resources/NibblePoker/images/tools/excel-password-remover/excel-password-remover.png"
|
||||
image_alt_key: ""
|
||||
general:
|
||||
icon: "fab fa-python"
|
||||
title_key: "meta.title"
|
||||
subtitle_key: "article.subtitle"
|
||||
tags:
|
||||
- "undefined"
|
||||
|
Reference in New Issue
Block a user