0) { $percentagediff = INF; } else { $percentagediff = 0; } } return $percentagediff; } $db = new SQLite3('./scripts/birds.db', SQLITE3_OPEN_READONLY); $db->busyTimeout(1000); $statement1 = $db->prepare('SELECT Sci_Name, Com_Name, COUNT(*) FROM detections WHERE Date BETWEEN "' . date("Y-m-d", $startdate) . '" AND "' . date("Y-m-d", $enddate) . '" GROUP By Sci_Name ORDER BY COUNT(*) DESC'); ensure_db_ok($statement1); $result1 = $statement1->execute(); while ($detection = $result1->fetchArray(SQLITE3_ASSOC)) { $com_name = $detection["Com_Name"]; $sci_name = $detection["Sci_Name"]; $scount = $detection["COUNT(*)"]; # previous week $statement2 = $db->prepare('SELECT COUNT(*) FROM detections WHERE Sci_Name == "' . $detection["Sci_Name"] . '" AND Date BETWEEN "' . date("Y-m-d", $startdate - (7 * 86400)) . '" AND "' . date("Y-m-d", $enddate - (7 * 86400)) . '"'); ensure_db_ok($statement2); $result2 = $statement2->execute(); $priorweekcount = $result2->fetchArray(SQLITE3_ASSOC)['COUNT(*)']; $percentagediff = safe_percentage($scount, $priorweekcount); # is_first_seen? $statement3 = $db->prepare('SELECT COUNT(*) FROM detections WHERE Sci_Name == "'.$sci_name.'" AND Date NOT BETWEEN "'.date("Y-m-d",$startdate).'" AND "'.date("Y-m-d",$enddate).'"'); ensure_db_ok($statement3); $result3 = $statement3->execute(); $totalcount = $result3->fetchArray(SQLITE3_ASSOC)['COUNT(*)']; $is_first_seen = $totalcount === 0; $detections[$com_name] = ["count" => $scount, "percentagediff" => $percentagediff, "is_first_seen" => $is_first_seen]; } $statement4 = $db->prepare('SELECT COUNT(*) FROM detections WHERE Date BETWEEN "'.date("Y-m-d",$startdate).'" AND "'.date("Y-m-d",$enddate).'"'); ensure_db_ok($statement4); $result4 = $statement4->execute(); $totalcount = $result4->fetchArray(SQLITE3_ASSOC)['COUNT(*)']; $statement5 = $db->prepare('SELECT COUNT(*) FROM detections WHERE Date BETWEEN "'.date("Y-m-d",$startdate- (7*86400)).'" AND "'.date("Y-m-d",$enddate- (7*86400)).'"'); ensure_db_ok($statement5); $result5 = $statement5->execute(); $priortotalcount = $result5->fetchArray(SQLITE3_ASSOC)['COUNT(*)']; $statement6 = $db->prepare('SELECT COUNT(DISTINCT(Sci_Name)) FROM detections WHERE Date BETWEEN "'.date("Y-m-d",$startdate).'" AND "'.date("Y-m-d",$enddate).'"'); ensure_db_ok($statement6); $result6 = $statement6->execute(); $totalspeciestally = $result6->fetchArray(SQLITE3_ASSOC)['COUNT(DISTINCT(Sci_Name))']; $statement7 = $db->prepare('SELECT COUNT(DISTINCT(Sci_Name)) FROM detections WHERE Date BETWEEN "'.date("Y-m-d",$startdate- (7*86400)).'" AND "'.date("Y-m-d",$enddate- (7*86400)).'"'); ensure_db_ok($statement7); $result7= $statement7->execute(); $priortotalspeciestally = $result7->fetchArray(SQLITE3_ASSOC)['COUNT(DISTINCT(Sci_Name))']; $percentagedifftotal = safe_percentage($totalcount, $priortotalcount); if(isset($_GET['ascii'])) { if($percentagedifftotal > 0) { $percentagedifftotal = "+".$percentagedifftotal."%"; } else { $percentagedifftotal = "-".abs($percentagedifftotal)."%"; } $percentagedifftotaldistinctspecies = safe_percentage($totalspeciestally, $priortotalspeciestally); if($percentagedifftotaldistinctspecies > 0) { $percentagedifftotaldistinctspecies = "+".$percentagedifftotaldistinctspecies."%"; } else { $percentagedifftotaldistinctspecies = "-".abs($percentagedifftotaldistinctspecies)."%"; } echo "# BirdNET-Pi: Week ".date('W', $enddate)." Report\n"; echo "Total Detections: ".$totalcount." (".$percentagedifftotal.")
"; echo "Unique Species Detected: ".$totalspeciestally." (".$percentagedifftotaldistinctspecies.")

"; echo "= Top 10 Species =
"; $i = 0; foreach($detections as $com_name=>$stats) { $count = $stats["count"]; $percentagediff = $stats["percentagediff"]; $i++; if($i <= 10) { if($percentagediff > 0) { $percentagediff = "+".$percentagediff."%"; } else { $percentagediff = "-".abs($percentagediff)."%"; } echo $com_name." - ".$scount." (".$percentagediff.")
"; } } echo "
= Species Detected for the First Time =
"; $newspeciescount=0; foreach($detections as $com_name=>$stats) { if($stats["is_first_seen"]) { $newspeciescount++; echo $com_name." - ".$scount."
"; } } if($newspeciescount == 0) { echo "No new species were seen this week."; } $prevweek = date('W', $enddate) - 1; if($prevweek < 1) { $prevweek = 52; } echo "
* data from ".date('Y-m-d', $startdate)." — ".date('Y-m-d',$enddate).".
"; echo "* percentages are calculated relative to week ".($prevweek)."."; die(); } ?>
Week ".date('W', $enddate)." Report".date('F jS, Y',$startdate)." — ".date('F jS, Y',$enddate)."
"; ?>

$stats) { $i++; if($i <= 10) { $count = $stats["count"]; $percentagediff = $stats["percentagediff"]; if($percentagediff > 0) { $percentagediff = "+".$percentagediff."%"; } else { $percentagediff = "-".abs($percentagediff)."%"; } echo ""; } } ?>
"; ?>
".$com_name."
".$count." (".$percentagediff.")
$stats) { if($stats["is_first_seen"]) { $newspeciescount++; echo ""; } } if($newspeciescount == 0) { echo ""; } ?>
"; ?>
".$com_name."
".$scount."
No new species were seen this week.


* percentages are calculated relative to week