adding new homepage for testing :)
- replaced all SERVICES arrays with commands
- altered {install,update}_services.sh to install new homepage
- renamed old index.html to mobile.html for mobile redirect
This commit is contained in:
@@ -1 +0,0 @@
|
||||
I hope this works:)
|
||||
@@ -0,0 +1,60 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>HTML Frames Example - Content</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family:verdana,arial,sans-serif;
|
||||
font-size:10pt;
|
||||
margin:30px;
|
||||
background-color:#ffcc00;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
tbc....
|
||||
<h1>Thanks</h1>
|
||||
stefan kahl
|
||||
patrick mcguire
|
||||
<h1>Similar Systems</h1>
|
||||
<h1>Technical Details</h1>
|
||||
machine learning
|
||||
deep learning
|
||||
<h1>Used Tools</h1>
|
||||
SoX
|
||||
ffmpeg
|
||||
Python
|
||||
Tensorfflow (Lite)
|
||||
Rasberian OS
|
||||
<h1>Disclaimer</h1>
|
||||
<h1>Other Systems</h1>
|
||||
links to other systems
|
||||
|
||||
|
||||
|
||||
<h1>Content</h1>
|
||||
<h2>Replacing the Contents of the Current Frame</h2>
|
||||
<p>Clicking on these links will open the new page within the current frame.</p>
|
||||
<ul>
|
||||
<li><a href="white.html" target="content">Load white page</a></li>
|
||||
<li><a href="green.html" target="content">Load green page</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Replacing the Whole Frameset</h2>
|
||||
<p>When you click on any of the following links, the whole frameset is replaced with the new website. This is because we're using <code>target="_top"</code> in the anchor links.</p>
|
||||
<ul>
|
||||
<li><a href="http://www.quackit.com" target="_top">Quackit</a></li>
|
||||
<li><a href="http://www.quackit.com/html/templates/frames/" target="_top">HTML Frames Templates</a></li>
|
||||
<li>Learn more about frames with the <a href="http://www.quackit.com/html/tutorial/html_frames.cfm" target="_top">frames tutorial</a><//li>
|
||||
</ul>
|
||||
|
||||
<h2>Open a New Window</h2>
|
||||
<p>These links open in a new browser window. This is because we use <code>target="_blank"</code>.</p>
|
||||
<ul>
|
||||
<li><a href="http://www.code-generator.net" target="_blank">Code Generator</a></li>
|
||||
<li><a href="http://www.zappyhost.com" target="_blank">ZappyHost</a></li>
|
||||
<li><a href="http://www.natural-environment.com" target="_blank">Natural Environment</a></li>
|
||||
<li><a href="http://www.great-workout.com" target="_blank">Great Workout</a></li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,28 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>HTML Frames Example - Footer</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family:verdana,arial,sans-serif;
|
||||
font-size:medium;
|
||||
margin:10px;
|
||||
background-color:black;
|
||||
color:white;
|
||||
}
|
||||
a {
|
||||
color:white;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h3>External Services</h3>
|
||||
<p> <a href="https://github.com/mcguirepr89/BirdNET-Pi" target="_top">Project Page</a> |
|
||||
<a href="https://birdnetwiki.pmcgui.xyz" target="content">Wiki Help Page</a> |
|
||||
<a href="http://birdnetpi.local/stream" target="footer">Live Audio Stream</a> |
|
||||
<a href="http://birdnetpi.local/spectrogram.png" target="content">Realtime Spectrogram</a> |
|
||||
<a href="external.html" target="content">Links to External Pages</a> |
|
||||
<a href="https://www.accuweather.com" target="content">Weather</a> |
|
||||
<a href="https://www.birds.cornell.edu" target="_content">The Cornell Lab of Ornitology</a>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>BirdNET-Pi</title>
|
||||
</head>
|
||||
<!--
|
||||
Note the following:
|
||||
1. Each frame has it's own 'frame' tag.
|
||||
2. Each frame has a name (eg, name="menu"). This is used for when you need to load one frame from another. For example, your left frame might have links that, when clicked on, loads a new page in the right frame. This is acheived by using 'target="content"' within your links/anchor tags.
|
||||
3. Each 'frame' tag has a 'src' attribute. This is where you specify the name of the file to be loaded into that frame when the page first loads.
|
||||
4. You can change the size of the frames by changing the value of the 'cols' and/or 'rows' attribute. A value of "200" sets the frame at 200 pixels. An asterisk (*) specifies that the frame should use up whatever space is left over from the other frames. You can also use percentage values if desired (i.e. 20%,80%)
|
||||
5. To specify a border, set 'frameborder' and 'border' to "1". I included both attributes for maximum browser compatibility.
|
||||
6. The 'framespacing' attribute doesn't work in all browsers, but you can set any numeric value you like here.
|
||||
7. To learn more about HTML frames, check out: http://www.quackit.com/html/tutorial/html_frames.cfm
|
||||
-->
|
||||
<script type="text/javascript">
|
||||
if (screen.width <= 699) {
|
||||
document.location = "/mobile.html";
|
||||
}
|
||||
</script>
|
||||
|
||||
<frameset rows="100,*,100" frameborder="0" border="0" framespacing="0">
|
||||
<frame name="topNav" src="top.html" scrolling="off">
|
||||
<frameset cols="150,*" frameborder="0" border="0" framespacing="0">
|
||||
<frame name="menu" src="menu.html" marginheight="0" marginwidth="0" scrolling="auto" noresize>
|
||||
<frame name="content" src="http://birdnetpi.local/viewdb.php" marginheight="0" marginwidth="0" scrolling="auto" noresize>
|
||||
</frameset>
|
||||
|
||||
<frame name="footer" src="footer.html" scrolling="off">
|
||||
|
||||
<noframes>
|
||||
<p>This section (everything between the 'noframes' tags) will only be displayed if the users' browser doesn't support frames. You can provide a link to a non-frames version of the website here. Feel free to use HTML tags within this section.</p>
|
||||
</noframes>
|
||||
|
||||
</frameset>
|
||||
</html>
|
||||
@@ -0,0 +1,28 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>HTML Frames Example - Menu</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family:verdana,arial,sans-serif;
|
||||
font-size:medium;
|
||||
margin:10px;
|
||||
margin-bottom:50px;
|
||||
background-color: rgb(119, 196, 135);
|
||||
}
|
||||
h4 {
|
||||
margin: 15px 0px 0px 0px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h4>Extractions</h4>
|
||||
<a href="http://birdnetpi.local/By_Common_Name/" target="content">By Common Name</a><br/>
|
||||
<a href="http://birdnetpi.local/By_Date/" target="content">By Date</a><br/>
|
||||
<a href="http://birdnetpi.local/By_Scientific_Name/" target="content">By Scientiffic Name</a><br/>
|
||||
<a href="http://birdnetpi.local/Processed/" target="content">Processed</a><br/>
|
||||
<h4>GitHub</h4>
|
||||
<a href="https://github.com/mcguirepr89/BirdNET-Pi" target="_content">Repository</a><br/>
|
||||
<a href="https://github.com/mcguirepr89/BirdNET-Pi/discussions" target="_content">Discussions</a><br/>
|
||||
<a href="https://github.com/mcguirepr89/BirdNET-Pi/issues" target="_content">Issues</a><br/>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,36 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>BirdNET-Pi</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family:verdana,arial,sans-serif;
|
||||
font-size:medium;
|
||||
margin:10px;
|
||||
background-color: rgb(119, 196, 135);
|
||||
background-image: linear-gradient(to top, rgb(119, 196, 135), rgb(149, 226, 165));
|
||||
}
|
||||
#content {
|
||||
position: relative;
|
||||
}
|
||||
#content img {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<img src="images/bird.png" class="ribbon"/>
|
||||
</div>
|
||||
<h2>BirdNET-Pi</h2>
|
||||
<p>
|
||||
<a href="http://birdnetpi.local/viewdb.php" target="content"><b>Recognized Birds Library</b></a> |
|
||||
<a href="http://birdnetpi.local:8080" target="content">Deep Learning Analysis</a> |
|
||||
<a href="http://birdnetpi.local:8888" target="content">Audio Extraction</a> |
|
||||
<a href="http://birdnetpi.local/phpsysinfo" target="content">Hardware</a> |
|
||||
<a href="http://birdnetpi.local/scripts/" target="content">System</a>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
+3
-14
@@ -3,25 +3,14 @@
|
||||
# set -x # Uncomment to debug
|
||||
source /etc/birdnet/birdnet.conf &> /dev/null
|
||||
LOG_DIR="${HOME}/BirdNET-Pi/logs"
|
||||
SERVICES=(avahi-alias@.service
|
||||
birdnet_analysis.service
|
||||
birdnet_log.service
|
||||
birdnet_recording.service
|
||||
birdstats.service
|
||||
birdterminal.service
|
||||
caddy.service
|
||||
extraction_log.service
|
||||
extraction.service
|
||||
extraction.timer
|
||||
icecast2.service
|
||||
livestream.service
|
||||
${SYSTEMD_MOUNT})
|
||||
|
||||
services=$(awk '/service/ && /systemctl/ && !/php/ {print $3}' ${my_dir}/install_services.sh | sort)
|
||||
|
||||
# Create logs directory
|
||||
[ -d ${LOG_DIR} ] || mkdir ${LOG_DIR}
|
||||
|
||||
# Create services logs
|
||||
for i in "${SERVICES[@]}";do
|
||||
for i in "${services[@]}";do
|
||||
if [ -L /etc/systemd/system/multi-user.target.wants/${i} ];then
|
||||
journalctl -u ${i} -n 100 --no-pager > ${LOG_DIR}/${i}.log
|
||||
cp -L /etc/systemd/system/multi-user.target.wants/${i} ${LOG_DIR}/${i}
|
||||
|
||||
@@ -109,17 +109,17 @@ create_necessary_dirs() {
|
||||
[ -d ${EXTRACTED}/By_Scientific_Name ] || sudo -u ${USER} mkdir -p ${EXTRACTED}/By_Scientific_Name
|
||||
[ -d ${PROCESSED} ] || sudo -u ${USER} mkdir -p ${PROCESSED}
|
||||
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/templates/index.html ${EXTRACTED}
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/homepage/* ${EXTRACTED}
|
||||
if [ ! -z ${BIRDNETLOG_URL} ];then
|
||||
BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" $(dirname ${my_dir})/templates/index.html
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" $(dirname ${my_dir})/homepage/*
|
||||
fi
|
||||
if [ ! -z ${EXTRACTIONLOG_URL} ];then
|
||||
EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" $(dirname ${my_dir})/templates/index.html
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" $(dirname ${my_dir})/homepage/*
|
||||
fi
|
||||
|
||||
[ -L ${EXTRACTED}/scripts ] || sudo -u ${USER} ln -s $(dirname ${my_dir})/scripts ${EXTRACTED}
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts ${EXTRACTED}
|
||||
if [ ! -z ${BIRDNETPI_URL} ];then
|
||||
BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
|
||||
phpfiles="$(grep -l birdnetpi.local ${my_dir}/*.php)"
|
||||
@@ -132,9 +132,8 @@ create_necessary_dirs() {
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/viewdb.php ${EXTRACTED}
|
||||
sudo -u ${USER} ln -fs ${HOME}/phpsysinfo ${EXTRACTED}
|
||||
[ -L ${EXTRACTED}/phpsysinfo/phpsysinfo.ini ] || sudo -u ${USER} cp ${HOME}/phpsysinfo/phpsysinfo.ini.new ${HOME}/phpsysinfo/phpsysinfo.ini
|
||||
|
||||
}
|
||||
|
||||
|
||||
install_alsa() {
|
||||
echo "Checking for alsa-utils and pulseaudio"
|
||||
if which arecord &> /dev/null ;then
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# This script installs a web-based terminal @ http://birdterminal.local
|
||||
# ONLY run this additional script if you trust everyone on your
|
||||
# local network completely as the credentials are sent WITHOUT
|
||||
# any SSL/TLS encryption. For a secure remote connection to your
|
||||
# BirdNET-Pi command line, consider enabling SSH on the
|
||||
# Raspberry Pi and using another Linux machine or an SSH
|
||||
# client software, or you can alternately add the 'tls internal'
|
||||
# directive to the Caddyfile to add a self-signed certificate for TLS/SSL
|
||||
# encryption. For remote desktop access, NoMachine can be installed.
|
||||
source /etc/birdnet/birdnet.conf
|
||||
my_dir=$(realpath $(dirname $0))
|
||||
|
||||
# Install tmux from version control
|
||||
install_tmux() {
|
||||
DEPENDS=(
|
||||
automake
|
||||
autoconf
|
||||
libevent-2*
|
||||
libevent-dev
|
||||
ncurses-bin
|
||||
ncurses-base
|
||||
ncurses-term
|
||||
libncurses-dev
|
||||
build-essential
|
||||
bison
|
||||
pkg-config
|
||||
gcc
|
||||
)
|
||||
|
||||
if which tmux &>/dev/null; then
|
||||
echo "tmux is installed"
|
||||
else
|
||||
|
||||
sudo apt update && sudo apt -y install "${DEPENDS[@]}"
|
||||
|
||||
cd ${HOME} && git clone https://github.com/tmux/tmux.git
|
||||
cd tmux
|
||||
sh autogen.sh
|
||||
./configure && make && sudo make install
|
||||
cd && rm -drf ./tmux
|
||||
sudo ln -sf "$(dirname ${my_dir})/templates/tmux.conf" /etc/tmux.conf
|
||||
fi
|
||||
}
|
||||
|
||||
install_web_terminal() {
|
||||
cat << EOF | sudo tee /etc/systemd/system/birdterminal.service
|
||||
[Unit]
|
||||
Description=A BirdNET-Pi Web Terminal
|
||||
|
||||
[Service]
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
Type=simple
|
||||
User=${BIRDNET_USER}
|
||||
Environment=TERM=xterm-256color
|
||||
ExecStart=/usr/local/bin/gotty -w --title-format "Login!" -p 9111 tmux new -A -s Login sudo bash -c login
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
HASHWORD="$(caddy hash-password -plaintext "${CADDY_PWD}")"
|
||||
cat << EOF | sudo tee -a /etc/caddy/Caddyfile
|
||||
http://birdterminal.local {
|
||||
reverse_proxy localhost:9111
|
||||
basicauth {
|
||||
birdnet "${HASHWORD}"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
sudo systemctl enable --now birdterminal.service
|
||||
sudo systemctl enable --now avahi-alias@birdterminal.local.service
|
||||
sudo systemctl restart caddy
|
||||
}
|
||||
install_tmux
|
||||
install_web_terminal
|
||||
@@ -6,18 +6,9 @@ sudo systemctl stop birdnet_recording.service
|
||||
sudo rm -rf ${RECS_DIR}/$(date +%B-%Y/%d-%A)/*
|
||||
sudo systemctl start birdnet_recording.service
|
||||
|
||||
SERVICES=(avahi-alias@birdlog.local.service
|
||||
avahi-alias@birdnetpi.local.service
|
||||
avahi-alias@birdstats.local.service
|
||||
avahi-alias@extractionlog.local.service
|
||||
birdnet_analysis.service
|
||||
birdnet_log.service
|
||||
birdstats.service
|
||||
extraction.timer
|
||||
extractionlog.service
|
||||
livestream.service)
|
||||
services=$(awk '/service/ && /systemctl/ && !/php/ {print $3}' ${my_dir}/install_services.sh | sort)
|
||||
|
||||
for i in "${SERVICES[@]}";do
|
||||
for i in "${services[@]}";do
|
||||
sudo systemctl restart ${i}
|
||||
done
|
||||
|
||||
|
||||
+2
-22
@@ -45,30 +45,10 @@ uninstall.sh
|
||||
update_species.sh
|
||||
${HOME}/.gotty)
|
||||
|
||||
|
||||
SERVICES=(avahi-alias@birdlog.local.service
|
||||
avahi-alias@birdnetpi.local.service
|
||||
avahi-alias@birdstats.local.service
|
||||
avahi-alias@extractionlog.local.service
|
||||
avahi-alias@birdterminal.local.service
|
||||
birdnet_analysis.service
|
||||
birdnet_log.service
|
||||
birdnet_recording.d
|
||||
birdnet_recording.service
|
||||
birdstats.service
|
||||
birdterminal.service
|
||||
caddy.service
|
||||
edit_birdnet_conf.service
|
||||
extraction_log.service
|
||||
extraction.service
|
||||
extraction.timer
|
||||
livestream.service
|
||||
pushed_notifications.service
|
||||
spectrogram_viewer.service
|
||||
${SYSTEMD_MOUNT})
|
||||
services=$(awk '/service/ && /systemctl/ && !/php/ {print $3}' ${my_dir}/install_services.sh | sort)
|
||||
|
||||
remove_services() {
|
||||
for i in "${SERVICES[@]}"; do
|
||||
for i in "${services[@]}"; do
|
||||
if [ -L /etc/systemd/system/multi-user.target.wants/"${i}" ];then
|
||||
sudo systemctl disable --now "${i}"
|
||||
fi
|
||||
|
||||
@@ -109,14 +109,14 @@ create_necessary_dirs() {
|
||||
[ -d ${EXTRACTED}/By_Scientific_Name ] || sudo -u ${USER} mkdir -p ${EXTRACTED}/By_Scientific_Name
|
||||
[ -d ${PROCESSED} ] || sudo -u ${USER} mkdir -p ${PROCESSED}
|
||||
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/templates/index.html ${EXTRACTED}
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/homepage/* ${EXTRACTED}
|
||||
if [ ! -z ${BIRDNETLOG_URL} ];then
|
||||
BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" $(dirname ${my_dir})/templates/index.html
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" $(dirname ${my_dir})/homepage/*
|
||||
fi
|
||||
if [ ! -z ${EXTRACTIONLOG_URL} ];then
|
||||
EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" $(dirname ${my_dir})/templates/index.html
|
||||
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" $(dirname ${my_dir})/homepage/*
|
||||
fi
|
||||
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts ${EXTRACTED}
|
||||
@@ -128,13 +128,12 @@ create_necessary_dirs() {
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/spectrogram.* ${EXTRACTED}
|
||||
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/viewdb.php ${EXTRACTED}
|
||||
sudo -u ${USER} ln -fs ${HOME}/phpsysinfo ${EXTRACTED}
|
||||
[ -L ${EXTRACTED}/phpsysinfo/phpsysinfo.ini ] || sudo -u ${USER} cp ${HOME}/phpsysinfo/phpsysinfo.ini.new ${HOME}/phpsysinfo/phpsysinfo.ini
|
||||
}
|
||||
|
||||
|
||||
install_alsa() {
|
||||
echo "Checking for alsa-utils and pulseaudio"
|
||||
if which arecord &> /dev/null ;then
|
||||
|
||||
+5
-4
@@ -59,18 +59,17 @@ $mysqli->close();
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- <meta name="viewport" content="width=device-width, initial-scale=1"> -->
|
||||
<title>BirdNET-Pi DB</title>
|
||||
<!-- CSS FOR STYLING THE PAGE -->
|
||||
<style>
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
margin-left:-5px;
|
||||
margin-right:-5px;
|
||||
}
|
||||
|
||||
.column {
|
||||
@@ -114,6 +113,7 @@ $mysqli->close();
|
||||
border: 1px solid black;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
background-color: rgb(219, 296, 235);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
@@ -166,7 +166,8 @@ $mysqli->close();
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body style="background-color: rgb(119, 196, 135);background-image: linear-gradient(to top, rgb(119, 196, 135),black;">
|
||||
|
||||
<section>
|
||||
<h2>Number of Detections</h2>
|
||||
<table>
|
||||
|
||||
Reference in New Issue
Block a user