diff --git a/README.md b/README.md
index 699facc..df8e235 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,7 @@ Check out birds from around the world
- [Norman, Oklahoma, United States](https://normanok.birdnetpi.com)
- [Nijmegen, the Netherlands](https://nijmegen.birdnetpi.com)
- [Murrysville, Pennsylvania, United States](https://murrysvillepa.birdnetpi.com/)
+- [Berowra, New South Wales, Australia](https://berowra.birdnetpi.com/)
[Share your installation!!](https://github.com/mcguirepr89/BirdNET-Pi/wiki/Sharing-Your-BirdNET-Pi)
diff --git a/birdnet.conf-defaults b/birdnet.conf-defaults
index 2b6f9f3..e75cda1 100644
--- a/birdnet.conf-defaults
+++ b/birdnet.conf-defaults
@@ -62,6 +62,10 @@ APPRISE_NOTIFICATION_TITLE="New BirdNET-Pi Detection"
APPRISE_NOTIFICATION_BODY="A \$sciname \$comname was just detected with a confidence of \$confidence"
APPRISE_NOTIFY_EACH_DETECTION=false
+#---------------------- Flickr Images API Configuration -----------------------#
+
+FLICKR_API_KEY=
+
################################################################################
#-------------------------------- Defaults ----------------------------------#
################################################################################
diff --git a/homepage/images/lock.svg b/homepage/images/lock.svg
new file mode 100644
index 0000000..a3bd577
--- /dev/null
+++ b/homepage/images/lock.svg
@@ -0,0 +1,42 @@
+
+
+
diff --git a/homepage/images/sort_date.svg b/homepage/images/sort_date.svg
new file mode 100644
index 0000000..ab7fbd0
--- /dev/null
+++ b/homepage/images/sort_date.svg
@@ -0,0 +1,43 @@
+
+
+
diff --git a/homepage/images/unlock.svg b/homepage/images/unlock.svg
new file mode 100644
index 0000000..e8ddb69
--- /dev/null
+++ b/homepage/images/unlock.svg
@@ -0,0 +1,40 @@
+
+
+
diff --git a/homepage/static/RobotoFlex-Regular.ttf b/homepage/static/RobotoFlex-Regular.ttf
new file mode 100644
index 0000000..3f13b17
Binary files /dev/null and b/homepage/static/RobotoFlex-Regular.ttf differ
diff --git a/homepage/style.css b/homepage/style.css
index ba5e360..b43b2c3 100644
--- a/homepage/style.css
+++ b/homepage/style.css
@@ -1,6 +1,10 @@
+@font-face {
+ font-family: 'Roboto Flex' ;
+ src: url('static/RobotoFlex-Regular.ttf') format('truetype');
+}
+
* {
- font-family: 'Arial', 'Gill Sans', 'Gill Sans MT',
- ' Calibri', 'Trebuchet MS', 'sans-serif';
+ font-family: 'Roboto Flex', sans-serif;
box-sizing: border-box;
font-size: medium;
}
@@ -37,6 +41,9 @@ table {
border-spacing: 0;
margin-left: auto;
margin-right: auto;
+ box-shadow: 0px 0px 17px 1px rgba(0, 0, 0, 0.10);
+ border-radius:3px;
+ overflow: hidden;
}
td {
@@ -44,7 +51,6 @@ td {
vertical-align: top;
background-color: rgb(219, 255, 235);
font-weight: lighter;
- border: 2px solid black;
text-align: center;
}
@@ -132,6 +138,8 @@ button:hover {
margin-left: auto;
margin-right: auto;
margin-bottom: 15px;
+ box-shadow: 0px 0px 17px 1px rgba(0, 0, 0, 0.10); !important;
+ border-radius: 4px;
}
.topnav form {
@@ -178,7 +186,6 @@ button:hover {
.overview th {
background-color: rgb(219, 255, 235);
- border: 2px solid black;
text-align: center;
padding: 12px;
}
@@ -238,7 +245,6 @@ button:hover {
}
.views .centered button {
- border: 2px solid black;
background-color: rgb(219, 255, 235);
padding: 12px;
}
@@ -257,7 +263,6 @@ button:hover {
}
.settings button {
- border: 2px solid black;
background-color: rgb(219, 255, 235);
padding: 12px;
}
@@ -284,7 +289,7 @@ button:hover {
.customlabels button,.customlabels2 button {
padding: 12px;
background-color: rgb(219, 255, 235);
- border: 2px solid black;
+
width: 100%;
}
@@ -339,7 +344,7 @@ button:hover {
}
.systemcontrols button,.servicecontrols button {
- border: 2px solid black;
+
background-color: rgb(219, 255, 235);
padding: 12px;
width: 50%;
@@ -541,7 +546,7 @@ button:hover {
font-size:x-large;
background:#dbffeb;
padding:5px;
- border: 2px solid black;
+
}
button.legacyview {
color:gray;
@@ -552,12 +557,65 @@ button.legacyview {
font-size:small;
background:#dbffeb;
padding:5px;
- border: 2px solid black;
+
}
button.loadmore {
margin-top:10px;
font-size:x-large;
background:#dbffeb;
padding:10px;
- border: 2px solid black;
+
}
+
+tr {
+ background-color:#9fe29b;
+}
+.history.centered form {
+ display:flex;
+ justify-content: center;
+}
+.history.centered input {
+ margin-right:5px;
+ border:0px;
+}
+.centered form#views button {
+ box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.10);
+ margin:2px;
+}
+input {
+ box-shadow: 0px 0px 17px 1px rgba(0, 0, 0, 0.10);
+}
+dialog {
+ border:none;
+}
+dialog::backdrop {
+ background: repeating-linear-gradient(
+ 30deg,
+ rgba(24, 194, 236, 0.2),
+ rgba(24, 194, 236, 0.2) 1px,
+ rgba(24, 194, 236, 0.3) 1px,
+ rgba(24, 194, 236, 0.3) 20px
+ );
+ backdrop-filter: blur(1px)
+}
+.centered_image_container {
+ font-size:19px !important;
+ display:inline-block;
+ position:relative;
+ margin-bottom:3px;
+}
+.centered_image_container img.img1 {
+ cursor:pointer;
+ height:95%;
+ position:absolute;
+ right:110%;
+ top:0px;
+ border-radius: 5px;
+ width:unset;
+}
+.centered_image_container * {
+ font-size:19px !important;
+}
+.centered_image_container form {
+ margin-bottom:0px;
+}
\ No newline at end of file
diff --git a/homepage/views.php b/homepage/views.php
index 942f6bf..e190569 100644
--- a/homepage/views.php
+++ b/homepage/views.php
@@ -47,6 +47,17 @@ body::-webkit-scrollbar {
} else {
topbuttons[0].classList.add("button-hover");
}
+ function copyOutput(elem) {
+ elem.innerHTML = 'Copied!';
+ const copyText = document.getElementsByTagName("pre")[0].textContent;
+ const textArea = document.createElement('textarea');
+ textArea.style.position = 'absolute';
+ textArea.style.left = '-100%';
+ textArea.textContent = copyText;
+ document.body.append(textArea);
+ textArea.select();
+ document.execCommand("copy");
+ }
$results"; + $results = str_replace("FAILURE", "FAILURE", $results); + $results = str_replace("failed", "failed",$results); + $results = str_replace("active (running)", "active (running)",$results); + if(strlen($results) == 0) { + $results = "This command has no output."; + } + echo "
| Output of command:`".$initcommand."` |
|---|
$results |
When the disk becomes full, you can choose to 'purge' old files to make room for new ones or 'keep' your data and stop all services instead.
+When the disk becomes full, you can choose to 'purge' old files to make room for new ones or 'keep' your data and stop all services instead.
Note: you can exclude specific files from 'purge' on the Recordings page.
Set Audio Card to 'default' to use PulseAudio (always recommended), or an ALSA recognized sound card device from the output of `aplay -L`.
diff --git a/scripts/birdnet_log.sh b/scripts/birdnet_log.sh index e480664..1d49023 100755 --- a/scripts/birdnet_log.sh +++ b/scripts/birdnet_log.sh @@ -1,2 +1,2 @@ #!/usr/bin/env bash -journalctl --no-hostname -q -o short -fu birdnet_analysis -ubirdnet_server -uextraction | sed "s/$(date "+%b %d ")//g;s/${HOME//\//\\/}\///g" +journalctl --no-hostname -q -o short -fu birdnet_analysis -ubirdnet_server -uextraction | sed "s/$(date "+%b %d ")//g;s/${HOME//\//\\/}\///g;/Line/d;/systemd/d;s/ .*\[.*\]: /---/" diff --git a/scripts/config.php b/scripts/config.php index c662dfb..4fecbba 100644 --- a/scripts/config.php +++ b/scripts/config.php @@ -10,6 +10,7 @@ $birdweather_id = $_GET["birdweather_id"]; $apprise_input = $_GET['apprise_input']; $apprise_notification_title = $_GET['apprise_notification_title']; $apprise_notification_body = $_GET['apprise_notification_body']; +$flickr_api_key = $_GET['flickr_api_key']; if(isset($_GET['apprise_notify_each_detection'])) { $apprise_notify_each_detection = 1; } else { @@ -45,6 +46,7 @@ $contents = preg_replace("/BIRDWEATHER_ID=.*/", "BIRDWEATHER_ID=$birdweather_id" $contents = preg_replace("/APPRISE_NOTIFICATION_TITLE=.*/", "APPRISE_NOTIFICATION_TITLE=\"$apprise_notification_title\"", $contents); $contents = preg_replace("/APPRISE_NOTIFICATION_BODY=.*/", "APPRISE_NOTIFICATION_BODY=\"$apprise_notification_body\"", $contents); $contents = preg_replace("/APPRISE_NOTIFY_EACH_DETECTION=.*/", "APPRISE_NOTIFY_EACH_DETECTION=$apprise_notify_each_detection", $contents); +$contents = preg_replace("/FLICKR_API_KEY=.*/", "FLICKR_API_KEY=$flickr_api_key", $contents); $contents2 = file_get_contents("./scripts/thisrun.txt"); @@ -54,6 +56,8 @@ $contents2 = preg_replace("/BIRDWEATHER_ID=.*/", "BIRDWEATHER_ID=$birdweather_id $contents2 = preg_replace("/APPRISE_NOTIFICATION_TITLE=.*/", "APPRISE_NOTIFICATION_TITLE=\"$apprise_notification_title\"", $contents2); $contents2 = preg_replace("/APPRISE_NOTIFICATION_BODY=.*/", "APPRISE_NOTIFICATION_BODY=\"$apprise_notification_body\"", $contents2); $contents2 = preg_replace("/APPRISE_NOTIFY_EACH_DETECTION=.*/", "APPRISE_NOTIFY_EACH_DETECTION=$apprise_notify_each_detection", $contents2); +$contents2 = preg_replace("/FLICKR_API_KEY=.*/", "FLICKR_API_KEY=$flickr_api_key", $contents2); + $fh = fopen("/etc/birdnet/birdnet.conf", "w"); $fh2 = fopen("./scripts/thisrun.txt", "w"); @@ -144,6 +148,10 @@ https://discordapp.com/api/webhooks/{WebhookID}/{WebhookToken}Set your Flickr API key to enable the display of bird images next to detections. Get your free key here.