Auto commit from /home/doc/genesis-tools
This commit is contained in:
parent
b64bde9d81
commit
77463904be
@ -4,7 +4,7 @@ from mastodon import Mastodon
|
|||||||
|
|
||||||
# === Configuration ===
|
# === Configuration ===
|
||||||
|
|
||||||
ROOT_DIR = r"/mnt/convert/archives" # Update this path to where your shows live
|
ROOT_DIR = r"/mnt/archives" # Update this path to where your shows live
|
||||||
ALLOWED_EXTENSIONS = {".mp3", ".wav", ".flac", ".m4a"}
|
ALLOWED_EXTENSIONS = {".mp3", ".wav", ".flac", ".m4a"}
|
||||||
BANNER_FILENAMES = ["banner.jpg", "banner.png", "banner.jpeg"]
|
BANNER_FILENAMES = ["banner.jpg", "banner.png", "banner.jpeg"]
|
||||||
|
|
||||||
|
35905
miscellaneous/cron_backup.log
Normal file
35905
miscellaneous/cron_backup.log
Normal file
File diff suppressed because it is too large
Load Diff
@ -7,6 +7,7 @@ PG_REMOTE_PORT="5432"
|
|||||||
PG_LOCAL_PORT="5432"
|
PG_LOCAL_PORT="5432"
|
||||||
DUMP_DIR="/tmp/pgbackup_verify"
|
DUMP_DIR="/tmp/pgbackup_verify"
|
||||||
BACKUP_TARGET="root@thevault.bounceme.net:/mnt/backup3/pgdumps"
|
BACKUP_TARGET="root@thevault.bounceme.net:/mnt/backup3/pgdumps"
|
||||||
|
CC_TARGET="doc@clustercontrol.sshjunkie.com:/home/doc/backups"
|
||||||
DBS=("mastodon_production" "giteaprod")
|
DBS=("mastodon_production" "giteaprod")
|
||||||
LOGFILE="$DUMP_DIR/verify_log_$(date +%Y%m%d_%H%M%S).txt"
|
LOGFILE="$DUMP_DIR/verify_log_$(date +%Y%m%d_%H%M%S).txt"
|
||||||
mkdir -p "$DUMP_DIR"
|
mkdir -p "$DUMP_DIR"
|
||||||
@ -78,10 +79,19 @@ if $ALL_OK && [ "${#UPLOAD_LIST[@]}" -eq "${#DBS[@]}" ]; then
|
|||||||
echo "All dumps verified, sending to $BACKUP_TARGET" | tee -a "$LOGFILE"
|
echo "All dumps verified, sending to $BACKUP_TARGET" | tee -a "$LOGFILE"
|
||||||
scp "${UPLOAD_LIST[@]}" "$BACKUP_TARGET"
|
scp "${UPLOAD_LIST[@]}" "$BACKUP_TARGET"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "Uploads successful." | tee -a "$LOGFILE"
|
echo "Uploads to thevault successful." | tee -a "$LOGFILE"
|
||||||
|
# --NEW: Also upload to ClusterControl controller
|
||||||
|
echo "Uploading to ClusterControl controller at $CC_TARGET" | tee -a "$LOGFILE"
|
||||||
|
scp "${UPLOAD_LIST[@]}" "$CC_TARGET"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Uploads to ClusterControl successful." | tee -a "$LOGFILE"
|
||||||
rm -f "${UPLOAD_LIST[@]}"
|
rm -f "${UPLOAD_LIST[@]}"
|
||||||
else
|
else
|
||||||
echo "Upload failed!" | tee -a "$LOGFILE"
|
echo "[WARN] Upload to ClusterControl controller failed!" | tee -a "$LOGFILE"
|
||||||
|
mastodon_alert "⚠️ Database backup verified, but upload to ClusterControl at $CC_TARGET failed on $(hostname) at $(date). See log: $LOGFILE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[FAIL] Upload to thevault failed!" | tee -a "$LOGFILE"
|
||||||
mastodon_alert "🚨 Database backup/verify FAILED: Upload to $BACKUP_TARGET failed on $(hostname) at $(date). See log: $LOGFILE"
|
mastodon_alert "🚨 Database backup/verify FAILED: Upload to $BACKUP_TARGET failed on $(hostname) at $(date). See log: $LOGFILE"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
20
miscellaneous/freezer.sh
Executable file
20
miscellaneous/freezer.sh
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Find all venvs, freeze their packages to requirements.txt
|
||||||
|
|
||||||
|
BASE_DIR="$HOME" # Or wherever your projects are
|
||||||
|
|
||||||
|
echo "Scanning for venvs under $BASE_DIR ..."
|
||||||
|
|
||||||
|
find "$BASE_DIR" -type f -name "pyvenv.cfg" 2>/dev/null | while read cfg; do
|
||||||
|
venv_dir="$(dirname "$cfg")"
|
||||||
|
reqfile="$venv_dir/requirements.txt"
|
||||||
|
echo "🔒 Freezing $venv_dir → $reqfile"
|
||||||
|
"$venv_dir/bin/python" -m pip freeze > "$reqfile"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✅ Done: $reqfile"
|
||||||
|
else
|
||||||
|
echo "❌ Failed to freeze $venv_dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "All venvs processed!"
|
48
miscellaneous/freezermove.sh
Executable file
48
miscellaneous/freezermove.sh
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SRC_ROOT="/home/doc"
|
||||||
|
TARGET_DIR="/home/doc/genesis-tools/venvrequirements"
|
||||||
|
DRY_RUN=0
|
||||||
|
|
||||||
|
if [[ "$1" == "--dry-run" ]]; then
|
||||||
|
DRY_RUN=1
|
||||||
|
echo "Dry run mode enabled: No files will be created or copied."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Scanning for venvs in $SRC_ROOT ..."
|
||||||
|
|
||||||
|
found_any=0
|
||||||
|
for dir in "$SRC_ROOT"/*/; do
|
||||||
|
venv_name=$(basename "$dir")
|
||||||
|
req_file="${dir}requirements.txt"
|
||||||
|
dest_file="$TARGET_DIR/requirements_${venv_name}.txt"
|
||||||
|
|
||||||
|
# Only proceed if it's a directory and requirements.txt exists
|
||||||
|
if [[ -d "$dir" && -f "$req_file" ]]; then
|
||||||
|
found_any=1
|
||||||
|
echo "Found: $req_file"
|
||||||
|
echo "→ Would copy to: $dest_file"
|
||||||
|
|
||||||
|
if [[ -f "$dest_file" ]]; then
|
||||||
|
echo " [SKIP] $dest_file already exists. Skipping."
|
||||||
|
else
|
||||||
|
if [[ "$DRY_RUN" -eq 1 ]]; then
|
||||||
|
echo " [DRY RUN] Would copy $req_file → $dest_file"
|
||||||
|
else
|
||||||
|
cp "$req_file" "$dest_file"
|
||||||
|
echo " [OK] Copied $req_file → $dest_file"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$found_any" -eq 0 ]]; then
|
||||||
|
echo "No requirements.txt files found in $SRC_ROOT!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$DRY_RUN" -eq 1 ]]; then
|
||||||
|
echo "All requirements processed. (Dry run mode)"
|
||||||
|
else
|
||||||
|
echo "All requirements copied and organized."
|
||||||
|
fi
|
@ -7,10 +7,10 @@ from datetime import datetime
|
|||||||
# Function to record the radio show using ffmpeg
|
# Function to record the radio show using ffmpeg
|
||||||
def record_show(folder_name, duration, filename_prefix):
|
def record_show(folder_name, duration, filename_prefix):
|
||||||
# Set the working directory for the recording
|
# Set the working directory for the recording
|
||||||
working_directory = "/mnt/convert/Genesis Radio"
|
working_directory = "home/doc/Genesis Radio"
|
||||||
|
|
||||||
# Ensure the folder exists in archives with the prefix as the folder name
|
# Ensure the folder exists in archives with the prefix as the folder name
|
||||||
archives_directory = "/mnt/convert/archives"
|
archives_directory = "/mnt/archives"
|
||||||
target_folder = os.path.join(archives_directory, filename_prefix)
|
target_folder = os.path.join(archives_directory, filename_prefix)
|
||||||
if not os.path.exists(target_folder):
|
if not os.path.exists(target_folder):
|
||||||
os.makedirs(target_folder)
|
os.makedirs(target_folder)
|
||||||
|
24
venvrequirements/requirements_archivecontrol.txt
Normal file
24
venvrequirements/requirements_archivecontrol.txt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
blinker==1.9.0
|
||||||
|
blurhash==1.1.4
|
||||||
|
certifi==2025.1.31
|
||||||
|
charset-normalizer==3.4.1
|
||||||
|
click==8.1.8
|
||||||
|
decorator==5.2.1
|
||||||
|
Flask==3.1.0
|
||||||
|
Flask-SQLAlchemy==3.1.1
|
||||||
|
greenlet==3.2.0
|
||||||
|
idna==3.10
|
||||||
|
itsdangerous==2.2.0
|
||||||
|
Jinja2==3.1.6
|
||||||
|
MarkupSafe==3.0.2
|
||||||
|
Mastodon.py==2.0.1
|
||||||
|
psycopg2-binary==2.9.10
|
||||||
|
python-dateutil==2.9.0.post0
|
||||||
|
python-magic==0.4.27
|
||||||
|
requests==2.32.3
|
||||||
|
six==1.17.0
|
||||||
|
SQLAlchemy==2.0.40
|
||||||
|
typing_extensions==4.13.2
|
||||||
|
urllib3==2.4.0
|
||||||
|
watchdog==6.0.0
|
||||||
|
Werkzeug==3.1.3
|
5
venvrequirements/requirements_ban.txt
Normal file
5
venvrequirements/requirements_ban.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
certifi==2025.1.31
|
||||||
|
charset-normalizer==3.4.1
|
||||||
|
idna==3.10
|
||||||
|
requests==2.32.3
|
||||||
|
urllib3==2.4.0
|
12
venvrequirements/requirements_dbcheck.txt
Normal file
12
venvrequirements/requirements_dbcheck.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
bcrypt==4.3.0
|
||||||
|
certifi==2025.1.31
|
||||||
|
cffi==1.17.1
|
||||||
|
charset-normalizer==3.4.1
|
||||||
|
cryptography==44.0.2
|
||||||
|
idna==3.10
|
||||||
|
paramiko==3.5.1
|
||||||
|
psycopg2-binary==2.9.10
|
||||||
|
pycparser==2.22
|
||||||
|
PyNaCl==1.5.0
|
||||||
|
requests==2.32.3
|
||||||
|
urllib3==2.4.0
|
22
venvrequirements/requirements_genesis-shield.txt
Normal file
22
venvrequirements/requirements_genesis-shield.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
blinker==1.9.0
|
||||||
|
certifi==2025.1.31
|
||||||
|
charset-normalizer==3.4.1
|
||||||
|
click==8.1.8
|
||||||
|
Flask==3.1.0
|
||||||
|
idna==3.10
|
||||||
|
itsdangerous==2.2.0
|
||||||
|
Jinja2==3.1.6
|
||||||
|
linkify-it-py==2.0.3
|
||||||
|
markdown-it-py==3.0.0
|
||||||
|
MarkupSafe==3.0.2
|
||||||
|
mdit-py-plugins==0.4.2
|
||||||
|
mdurl==0.1.2
|
||||||
|
platformdirs==4.3.7
|
||||||
|
Pygments==2.19.1
|
||||||
|
requests==2.32.3
|
||||||
|
rich==14.0.0
|
||||||
|
textual==3.1.0
|
||||||
|
typing_extensions==4.13.2
|
||||||
|
uc-micro-py==1.0.3
|
||||||
|
urllib3==2.4.0
|
||||||
|
Werkzeug==3.1.3
|
0
venvrequirements/requirements_logs.txt
Normal file
0
venvrequirements/requirements_logs.txt
Normal file
9
venvrequirements/requirements_recordtheshow.txt
Normal file
9
venvrequirements/requirements_recordtheshow.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
APScheduler==3.11.0
|
||||||
|
blinker==1.9.0
|
||||||
|
click==8.1.8
|
||||||
|
Flask==3.1.0
|
||||||
|
itsdangerous==2.2.0
|
||||||
|
Jinja2==3.1.6
|
||||||
|
MarkupSafe==3.0.2
|
||||||
|
tzlocal==5.3.1
|
||||||
|
Werkzeug==3.1.3
|
0
venvrequirements/requirements_text.txt
Normal file
0
venvrequirements/requirements_text.txt
Normal file
33
venvrequirements/requirements_toot.txt
Normal file
33
venvrequirements/requirements_toot.txt
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
alembic==1.13.2
|
||||||
|
blinker==1.8.2
|
||||||
|
blurhash==1.1.4
|
||||||
|
certifi==2024.7.4
|
||||||
|
charset-normalizer==3.3.2
|
||||||
|
click==8.1.7
|
||||||
|
decorator==5.1.1
|
||||||
|
dnspython==2.6.1
|
||||||
|
email_validator==2.2.0
|
||||||
|
Flask==3.0.3
|
||||||
|
Flask-Login==0.6.3
|
||||||
|
Flask-Migrate==4.0.7
|
||||||
|
Flask-SQLAlchemy==3.1.1
|
||||||
|
Flask-WTF==1.2.1
|
||||||
|
greenlet==3.0.3
|
||||||
|
idna==3.7
|
||||||
|
itsdangerous==2.2.0
|
||||||
|
Jinja2==3.1.4
|
||||||
|
Mako==1.3.5
|
||||||
|
MarkupSafe==2.1.5
|
||||||
|
Mastodon.py==1.8.1
|
||||||
|
psycopg2-binary==2.9.9
|
||||||
|
python-dateutil==2.9.0.post0
|
||||||
|
python-dotenv==1.0.1
|
||||||
|
python-magic==0.4.27
|
||||||
|
requests==2.32.3
|
||||||
|
schedule==1.2.2
|
||||||
|
six==1.16.0
|
||||||
|
SQLAlchemy==2.0.31
|
||||||
|
typing_extensions==4.12.2
|
||||||
|
urllib3==2.2.2
|
||||||
|
Werkzeug==3.0.3
|
||||||
|
WTForms==3.1.2
|
0
venvrequirements/requirements_toot2.txt
Normal file
0
venvrequirements/requirements_toot2.txt
Normal file
Loading…
x
Reference in New Issue
Block a user