Files
hassio-addons/birdnet-pi/rootfs/helpers/addition_processed.py
2024-06-01 20:48:52 +02:00

31 lines
1.9 KiB
Python

# Code to modify the birdnet_analysis.py and restore the Processed folder
# The last 30 wav files are stored in a dynamic manner in the Processed folder
import re
def modify_code(original_file, modified_file):
with open(original_file, 'r') as f:
lines = f.readlines()
# Define the modifications
modifications = {
'os.remove(file.file_name)': 'move_to_processed(file.file_name)',
'def handle_reporting_queue(queue):': 'def handle_reporting_queue(queue):\n conf = get_settings()\n processed_dir = os.path.join(conf[\'RECS_DIR\'], \'Processed\')\n os.makedirs(processed_dir, exist_ok=True)\n user_id = pwd.getpwnam(os.getenv(\'USER\')).pw_uid\n os.chown(processed_dir, user_id, user_id)',
'import threading\nfrom queue import Queue\nfrom subprocess import CalledProcessError': 'import threading\nfrom queue import Queue\nfrom subprocess import CalledProcessError\nimport glob\nimport time\nimport pwd',
'def move_to_processed(file_name):': 'def move_to_processed(file_name):\n conf = get_settings()\n processed_dir = os.path.join(conf[\'RECS_DIR\'], \'Processed\')\n os.rename(file_name, os.path.join(processed_dir, os.path.basename(file_name)))\n files = glob.glob(os.path.join(processed_dir, \'*\'))\n files.sort(key=os.path.getmtime)\n buffer_size = int(os.getenv(\'Processed_Buffer\', 30))\n while len(files) > buffer_size:\n os.remove(files.pop(0))'
}
# Apply the modifications
modified_lines = []
for line in lines:
for original, modified in modifications.items():
line = line.replace(original, modified)
modified_lines.append(line)
# Write the modified code to the new file
with open(modified_file, 'w') as f:
f.writelines(modified_lines)
# Use the function
modify_code('/home/pi/BirdNET-Pi/scripts/birdnet_analysis.py', '/home/pi/BirdNET-Pi/scripts/birdnet_analysis.py')